Пробив номера телефона python

Ciao, дорогие участники нашего форума) Давненько от меня не выходило статей. Но это все по тому, что я совместно с @BadBlackHat и @r0hack создаем курс по веб пентесту. Думаю вам понравится. А теперь перейдем непосредственно к сути. Сегодня, мы напишем 2 не больших скрипта на Python, которые не много облегчат вам сбор информации. Первый скрипт получает информацию об IP, а второй не много о номере сотового.

[1] — Сбор информации об IP.

Для начала определимся с тем, какую информацию хотим получить. В основном, это будет город, страна, континент (а вдруг) и провайдер. Также не плохо было бы получить информацию whois. Для написания нашего скрипта, я составил простенький алгоритм.

Код:

1. Взять на вход IP адрес
2. Составить URL адрес по типу: http://ipinfo.io/<IP>/json
3. Запросить JSON данные обратившись по этому адресу
4. Изменяем из JSON формата в словарь на языке Python
5. По средством Python выполним команду в терминале whois <IP>
6. Прочтем данные из пункта выше
7. В читабельном виде выведем полученную информацию

Для начала разберемся с сервисом ipinfo.io — он предоставляет нам информацию об указанном вами IP адресе. Но что же такое JSON? Это всего то один из способов ранения данных. Мы же этот способ переформируем в словарь. Чтобы лучше понять, давайте пропишем в адресной строке вашего браузера следующий URL

Код:

https://ipinfo.io/101.50.1.2/json

Прописав этот URL, вы как будто говорите серверу «Предоставь мне информацию об IP адресе 101.50.1.2 в виде JSON». Данный IP является прокси сервером.

6234512_stock-vector-hand-with-a-syringe-injection-vaccination-medicine.jpg

Так вот, когда мы из JSON переформируем данные в словарь, то чтобы получить, например информацию о городе, существует ключ «city». Более обширная информация о регионе, то ключ «region». Надеюсь, что на этом моменте все понятно. Приступим к написанию непосредственно кода.

Первым делом импортируем необходимые библиотеки. Мы воспользуемся библиотеками json — для обработки информации, urllib.request — для отправки запросов на ресурс и получении данных и os — для выполнения команд в терминале Linux.

Python:

import urllib.request
import json
import os

Теперь же, нам необходимо запросить у пользователя IP адрес, о котором собственно и будет собрана информация.

Код:

getIP = input("[+] Enter IP --> ")

Составляем необходимый URL, дабы в дальнейшем запросить с него информацию.

Код:

url = "https://ipinfo.io/" + getIP + "/json"

Запрашиваем информацию и записываем ее в переменную getInfo. Но, для выявления ошибок, заключаем наш запрос в конструкцию try —> except

Код:

try:
    getInfo = urllib.request.urlopen( url )
except:
    print( "n[!] - IP not found! - [!]n" )

Как раз, после выполнения данной строки, если IP был найден в базе сайта и мы корректно подключились к нему, нужно преобразовать данные из JSON в словарь. Для этого воспользуемся опять таки одной строкой))

Код:

infoList = json.load(getInfo)

Данные получены, но не спешите выводить всю информацию, это мы сделаем в последнюю очередь. А теперь получаем whois информацию. Здесь все еще проще.

Код:

myComand = "whois " + getIP
whoisInfo = os.popen( myComand ).read()

После того, как мы собрали всю информацию, нам необходимо красиво вывести ее.

Код:

print( "-" * 60 )

print( "IP: ", infoList["ip"] )
print( "City: ", infoList["city"] )
print( "Region: ", infoList["region"] )
print( "Country: ", infoList["country"] )
print( "Hostname: ", infoList["hostname"] )

print( "-" * 60 )
print( whoisInfo )
print( "-" * 60)

Код я не много видоизменил и «продекорировал». Вот, что получилось в итоге

Код:

import urllib.request
import json
import os

getIP = input("[+] Enter IP --> ")
url = "https://ipinfo.io/" + getIP + "/json"

try:
    getInfo = urllib.request.urlopen( url )

except:
    print( "n[!] - IP not found! - [!]n" )

infoList = json.load(getInfo)

def whoisIPinfo(ip):

    try:

        myComand = "whois " + getIP
        whoisInfo = os.popen( myComand ).read()
        return whoisInfo

    except:

        return "n [!] -- Error -- [!] n"

     
print( "-" * 60 )

print( "IP: ", infoList["ip"] )
print( "City: ", infoList["city"] )
print( "Region: ", infoList["region"] )
print( "Country: ", infoList["country"] )
print( "Hostname: ", infoList["hostname"] )

print( "-" * 60 )
print( whoisIPinfo ( getIP ) )
print( "-" * 60)

Snimok_Ekrana_Ot_2018-07-16_17-54-43.png

[2] — Пробиваем номер сотового.

Здесь, все строиться практически на таком же алгоритме. За исключением whois))) В число интересующей нас информации входит город, страна, сотовый оператор.
Брать информацию мы будем в виде JSON. Для начала, посмотрим на ее «внешний вид». Для этого пропишите какой-либо номер используя следующий URL.

Код:

https://htmlweb.ru/geo/api.php?json&telcod=<ТЕЛЕФОН>

Я возьму телефон с ресурса onlinesim.

060a40c2afe46ffb448e754d465d9381.png

Думаю, что при конвертации этого из JSON получится многомерный словарь)) Т.е. нужно будет использовать ключи 2 раза. Например словарь[key1][key2]
Приступим конечно же к кодингу. Ничего не меняется, мы импортируем все те же библиотеки, за исключением os.

Код:

import urllib.request
import json

Далее, запрашиваем у пользователя номер сотового телефона

Код:

phone = input("Enter phone: ")

Формируем URL для запроса

Код:

getInfo = "https://htmlweb.ru/geo/api.php?json&telcod=" + phone

Запрашиваем у ресурса информацию о сотовом в json формате

Код:

try:
    infoPhone = urllib.request.urlopen( getInfo )
except:
    print( "n[!] - Phone not found - [!]n" )

Из полученной информации, которая храниться в виде json создаем многомерный словарь)

Код:

infoPhone = json.load( infoPhone )

И, конечно, красиво выводим все полученную информацию.

Код:

print( u"Номер сотового --->", "+" + phone )
print( u"Страна ---> ", infoPhone["country"]["name"] )
print( u"Регион ---> ", infoPhone["region"]["name"] )
print( u"Округ ---> ", infoPhone["region"]["okrug"] )
print( u"Оператор ---> ", infoPhone["0"]["oper"] )
print( u"Часть света ---> ", infoPhone["country"]["location"] )

На вход программе давайте номер сотового, но без +

989.jpg

А на этом, друзья, все)

P.S: А не начать ли нам, в следующей части, писать свой сканер web — ресурсов, для сбора информации?

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    In this article, you will learn how you can get the information about phone number like the country name to which the phone number belongs to, or the network service provider name of that phone number just by writing a simple Python program. Python provides a module name phonenumbers for this task. This article is Python’s port of Google’s libphonenumber library.

    Installation
    Install the package phonenumbers using the below command in your command prompt.

    pip install phonenumbers

    Example 1: Python program to get the country name to which phone number belongs:

    import phonenumbers

    from phonenumbers import geocoder

    phone_number = phonenumbers.parse("Number with country code"

    print(geocoder.description_for_number(phone_number, 

                                          'en'))   

    Output:

    India

    Example 2: Python program to get the service provider name to that phone number

    import phonenumbers

    from phonenumbers import carrier

    service_provider = phonenumbers.parse("Number with country code")

    print(carrier.name_for_number(service_provider,

                                  'en')) 

    Output:

    Airtel
    

    Improve Article

    Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    In this article, you will learn how you can get the information about phone number like the country name to which the phone number belongs to, or the network service provider name of that phone number just by writing a simple Python program. Python provides a module name phonenumbers for this task. This article is Python’s port of Google’s libphonenumber library.

    Installation
    Install the package phonenumbers using the below command in your command prompt.

    pip install phonenumbers

    Example 1: Python program to get the country name to which phone number belongs:

    import phonenumbers

    from phonenumbers import geocoder

    phone_number = phonenumbers.parse("Number with country code"

    print(geocoder.description_for_number(phone_number, 

                                          'en'))   

    Output:

    India

    Example 2: Python program to get the service provider name to that phone number

    import phonenumbers

    from phonenumbers import carrier

    service_provider = phonenumbers.parse("Number with country code")

    print(carrier.name_for_number(service_provider,

                                  'en')) 

    Output:

    Airtel
    

    Система проверки сайта не принимает решение, пожалуйста подскажите где ошибка.

    Собственно задача:

    1002.Телефонные номера

    Ограничение времени: 2.0 секунды
    Ограничение памяти: 64 МБ

    В современном мире вы встречаетесь с огромным количеством телефонных номеров,
    которые со временем становятся всё длиннее и длиннее. И вам приходится
    запоминать эти номера. Одним из простых способов запоминания является сопоставление
    букв каждой цифре, как показано на следующем рисунке:

    1 ij    2 abc   3 def
    4 gh    5 kl    6 mn
    7 prs   8 tuv   9 wxy
            0 oqz
    

    Таким образом, каждому слову или группе слов может быть сопоставлен уникальный номер,
    так что можно запоминать слова вместо телефонных номеров. Очевидно, есть особый шарм в том,
    чтобы найти простую взаимосвязь между словом, используемым для запоминания телефонного номера,
    и владельцем этого номера. Так, телефонный номер 941837296 вашего друга, играющего в шахматы,
    может быть прочитан как WHITEPAWN (белая пешка), а номер 2855304 Вашего любимого учителя
    может быть прочитан как BULLDOG (бульдог).

    Напишите программу, находящую самую короткую последовательность слов
    (имеющую наименьшее количество слов), которая соответствует заданному номеру телефона и
    заданному списку слов. Соответствие описано на рисунке выше.

    Исходные данные

    Ввод состоит из набора тестов. Первая строка каждого теста содержит номер телефона,
    к которому нужно подобрать мнемонику. Номер состоит не более чем из 100 цифр.
    Вторая строка содержит общее количество слов в словаре (максимум 50 000).
    Каждая из оставшихся строк содержит одно слово,
    состоящее не более чем из 50 строчных латинских букв.
    Общий размер ввода не превосходит 300 килобайт.
    Последняя строка ввода содержит число −1.

    Результат

    Каждая строка вывода должна содержать кратчайшую последовательность слов, найденную вашей программой.
    Слова должны быть разделены одиночными пробелами. Если для входных данных нет решения, соответствующая
    строка вывода должна содержать текст No solution..
    Если существует несколько решений, имеющих одинаковое количество слов, можете выбрать любое из них.


    Ввод и вывод данные авторами для примера:

    7325189087
    5
    it
    your
    reality
    real
    our
    4294967296
    5
    it
    your
    reality
    real
    our
    -1
    # Ожидаемый результат  
    reality our
    No solution.
    

    Мои вводные для теста:

    2272583262772
    11
    ba
    ra
    ku
    k
    ss
    u
    ma
    da
    m
    a
    ssa
    -1
    

    По логике ответ должен быть

    ba ra ku da ma ssa
    

    Но это решение почему-то в список возможных не попадает.
    Причем если ma расположить после da то это решение находится.
    Вот список решений из которых идет выбор оптимального:

    ['ba', 'ra', 'ku', 'da', 'm', 'a', 'ss', 'a']
    ['a', 'a', 'ra', 'ku', 'da', 'm', 'a', 'ss', 'a']
    

    И соответственно оптимальным код считает:

    ba ra ku da m a ss a
    

    Ну и соответственно валидатор не принимает это решение.
    Подскажите пожалуйста где косяк

    Мое решение:

    keyboard = {'1': 'ij', '2': 'abc', '3': 'def',
                '4': 'gh', '5': 'kl', '6': 'mn',
                '7': 'prs', '8': 'tuv', '9': 'wxy',
                '0': 'oqz'}
    
    while True:
        phone_num = input()
        solutions = []
        if phone_num == '-1':
            break
        phone_len = len(phone_num)
        words = [input() for _ in range(int(input()))]
        collector = []
        for word in words:
            if len(word) > phone_len:
                continue
    
            solution = []
            for i in range(len(word)):
                if word[i] not in keyboard[phone_num[i]]:
                    break
    
            else:
                solution.append(word)
                test_solution = []
    
                while test_solution != solution:
                    test_solution = solution.copy()
                    raw_solution = ''.join(solution)
                    len_solution = len(raw_solution)
                    new_words = [item for item in words if len(item) <= phone_len - len_solution]
                    if new_words:
                        for item in new_words:
                            raw_solution = ''.join(solution)
                            len_solution = len(raw_solution)
                            test_string = raw_solution + item
                            len_test_string = len(test_string)
                            if len_test_string > phone_len:
                                continue
                            for s in range(len_solution, len_test_string):
                                if test_string[s] not in keyboard[phone_num[s]]:
                                    break
                            else:
                                solution.append(item)
    
                solutions.append(solution)
    
        if solutions:
            solutions.sort(key=lambda g: len(g))
            print(*solutions[0])
        else:
            print('No solution.')
    

    In this tutorial, we’ll look at how to get phone number information in Python. The name ‘phonenumbers’ refers to an extremely fascinating and handy library. And that’s the library that will help us have some fun with Phone numbers in Python.

    We will be utilizing the phonenumbers library to obtain information about a phone number. Let’s go deeper into this lesson to learn more about it.

    To begin, run the following line on your command prompt to install the phonenumbers library.


    Convert String to phonenumber format

    To investigate the functionalities of the phonenumbers module, we must first obtain a user’s phone number in phonenumber format. In this section, we’ll look at how to convert a user’s phone number to phonenumber format.

    The input must be of the string type, and the country code must come before the phone number.

    import phonenumbers
    pN = phonenumbers.parse("+919876643290")
    print(pN)
    
    Country Code: 91 National Number: 9876643290
    

    Get Timezone

    Here is a simple Python program that uses the phonenumbers module to determine the timezone of a phone number.

    First, we convert the string input to phone number format, and then we utilize an inbuilt method to determine a user’s timezone. It only returns results for valid numbers.

    import phonenumbers
    from phonenumbers import timezone
    pN = phonenumbers.parse("+919876643290")
    tZ = timezone.time_zones_for_number(pN)
    print(tZ)
    

    Extract phone numbers from text

    Using this module, we can extract phone numbers from text/paragraphs. You may iterate through it to get a list of phone numbers. The PhoneNumberMatcher object offers the necessary method for this.

    import phonenumbers
    T = "Contact us at +919876643290 or +14691674587"
    N = phonenumbers.PhoneNumberMatcher(T, "IN")
    for n in N:
    	print(n)
    
    PhoneNumberMatch [14,27) +919876643290
    

    Carrier and Region of a Phone Number

    We will learn how to use the geocoder and carrier functionalities of this module to determine the carrier and area of a phone number.

    import phonenumbers
    from phonenumbers import geocoder, carrier
    pN = phonenumbers.parse("+919876643290")
    C = carrier.name_for_number(pN, 'en')
    R = geocoder.description_for_number(pN, 'en')
    print(C)
    print(R)
    

    Conclusion

    Congratulations! You just learned how to get Phone Number Information in Python. Hope you enjoyed it! 😇

    Liked the tutorial? In any case, I would recommend you to have a look at the tutorials mentioned below:

    1. Python: Convert Number to Words
    2. Convert a number to words [digit by digit] in Python
    3. 3 Easy Methods to Find the Smallest Number in Python

    Thank you for taking your time out! Hope you learned something new!! 😄


    Это тоже интересно:

  • Пробить номер телефона через авито
  • Пробив номера определитель номера телефона
  • Пробить номер телефона чей это номер
  • Пробей номер телефона и узнай все
  • Пробить номер телефона украина бесплатно

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии