Ciao, дорогие участники нашего форума) Давненько от меня не выходило статей. Но это все по тому, что я совместно с @BadBlackHat и @r0hack создаем курс по веб пентесту. Думаю вам понравится. А теперь перейдем непосредственно к сути. Сегодня, мы напишем 2 не больших скрипта на Python, которые не много облегчат вам сбор информации. Первый скрипт получает информацию об IP, а второй не много о номере сотового.
[1] - Сбор информации об IP.
Для начала определимся с тем, какую информацию хотим получить. В основном, это будет город, страна, континент (а вдруг) и провайдер. Также не плохо было бы получить информацию whois. Для написания нашего скрипта, я составил простенький алгоритм.
Для начала разберемся с сервисом ipinfo.io - он предоставляет нам информацию об указанном вами IP адресе. Но что же такое JSON? Это всего то один из способов ранения данных. Мы же этот способ переформируем в словарь. Чтобы лучше понять, давайте пропишем в адресной строке вашего браузера следующий URL
Прописав этот URL, вы как будто говорите серверу "Предоставь мне информацию об IP адресе 101.50.1.2 в виде JSON". Данный IP является прокси сервером.
Так вот, когда мы из JSON переформируем данные в словарь, то чтобы получить, например информацию о городе, существует ключ "city". Более обширная информация о регионе, то ключ "region". Надеюсь, что на этом моменте все понятно. Приступим к написанию непосредственно кода.
Первым делом импортируем необходимые библиотеки. Мы воспользуемся библиотеками json - для обработки информации, urllib.request - для отправки запросов на ресурс и получении данных и os - для выполнения команд в терминале Linux.
Теперь же, нам необходимо запросить у пользователя IP адрес, о котором собственно и будет собрана информация.
Составляем необходимый URL, дабы в дальнейшем запросить с него информацию.
Запрашиваем информацию и записываем ее в переменную getInfo. Но, для выявления ошибок, заключаем наш запрос в конструкцию try --> except
Как раз, после выполнения данной строки, если IP был найден в базе сайта и мы корректно подключились к нему, нужно преобразовать данные из JSON в словарь. Для этого воспользуемся опять таки одной строкой))
Данные получены, но не спешите выводить всю информацию, это мы сделаем в последнюю очередь. А теперь получаем whois информацию. Здесь все еще проще.
После того, как мы собрали всю информацию, нам необходимо красиво вывести ее.
Код я не много видоизменил и "продекорировал". Вот, что получилось в итоге
[2] - Пробиваем номер сотового.
Здесь, все строиться практически на таком же алгоритме. За исключением whois))) В число интересующей нас информации входит город, страна, сотовый оператор.
Брать информацию мы будем в виде JSON. Для начала, посмотрим на ее "внешний вид". Для этого пропишите какой-либо номер используя следующий URL.
Я возьму телефон с ресурса onlinesim.
Думаю, что при конвертации этого из JSON получится многомерный словарь)) Т.е. нужно будет использовать ключи 2 раза. Например словарь[key1][key2]
Приступим конечно же к кодингу. Ничего не меняется, мы импортируем все те же библиотеки, за исключением os.
Далее, запрашиваем у пользователя номер сотового телефона
Формируем URL для запроса
Запрашиваем у ресурса информацию о сотовом в json формате
Из полученной информации, которая храниться в виде json создаем многомерный словарь)
И, конечно, красиво выводим все полученную информацию.
На вход программе давайте номер сотового, но без +
А на этом, друзья, все)
P.S: А не начать ли нам, в следующей части, писать свой сканер web - ресурсов, для сбора информации?
[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 является прокси сервером.
Так вот, когда мы из 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)
[2] - Пробиваем номер сотового.
Здесь, все строиться практически на таком же алгоритме. За исключением whois))) В число интересующей нас информации входит город, страна, сотовый оператор.
Брать информацию мы будем в виде JSON. Для начала, посмотрим на ее "внешний вид". Для этого пропишите какой-либо номер используя следующий URL.
Код:
https://htmlweb.ru/geo/api.php?json&telcod=<ТЕЛЕФОН>
Я возьму телефон с ресурса onlinesim.
Думаю, что при конвертации этого из 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"] )
На вход программе давайте номер сотового, но без +
А на этом, друзья, все)
P.S: А не начать ли нам, в следующей части, писать свой сканер web - ресурсов, для сбора информации?
Последнее редактирование: