Python для хакера - Часть 3. Сбор информации об IP и пробиваем номер сотового.

Gidroponika

Exploit Developer
Joined
Aug 17, 2016
Messages
1,784
Reaction score
826
*Прошлая часть*

Всем привет, сегодня мы напишем 2 не больших скрипта на Python, которые не много облегчат вам сбор информации. Первый скрипт получает информацию об IP, а второй не много о номере сотового.

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

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

Code:
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

Code:
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.20343



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

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

Python:
import urllib.request
import json
import os

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

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

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

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

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

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

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

Code:
infoList = json.load(getInfo)

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

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

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


Code:
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)

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


Code:
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)

View attachment 8818


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

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


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

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


060a40c2afe46ffb448e754d465d9381-png.20356



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


Code:
import urllib.request
import json

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

Code:
phone = input("Enter phone: ")

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

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

Запрашиваем у ресурса информацию о сотовом в json формате
Code:
try:
    infoPhone = urllib.request.urlopen( getInfo )
except:
    print( "\n[!] - Phone not found - [!]\n" )

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

И, конечно, красиво выводим все полученную информацию.
Code:
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"] )

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


View attachment 8819


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

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


*Следующая часть*
 
Last edited:

_SecDet_

Member
Joined
Feb 9, 2018
Messages
29
Reaction score
1
пробив по телефону не работает, предполагаю на свою рукожопость или автора 50.50))
 

Mygy

New member
Joined
Dec 18, 2005
Messages
4
Reaction score
0
I gotta say, this one's a bit above my skill level, but I've heard good things about using the `scapy` library for network scanning. Has anyone else had any luck with it? Anyone know if it's compatible with latest versions of Python?
 

AVESataN666

New member
Joined
Aug 15, 2018
Messages
3
Reaction score
0
"Dude, I've tried using the ipython library to scrape for IP addresses, but I've had issues with it being too resource intensive. Anyone have any experience with using Scapy to grab IP data? Might be a better option for this kind of task."
 
Top