Популярный NMAP также может вызываться и выполняться из разных языков программирования, что делает его еще более мощным. Добавим ему Python - интерпретируемый язык программирования высокого уровня для программирования общего назначения. Python действительно удобный и чрезвычайно гибкий. Сам Python устанавливается по умолчанию в большинстве систем на основе Unix. Однако вам необходимо установить библиотеку NMAP отдельно. В системах на основе Debian вы можете просто использовать команду:
>pip install python-nmap
Теперь, когда вы установили требуемую библиотеку NMAP, запустите интерпретатор Python из терминала, введя команду python, и импортируйте библиотеку NMAP, как показано здесь:
kali@kali:~# python3
Python 3.9.7 (default, Sep 24 2021, 15:17:02)
[GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more
information.
>>> import nmap
>>>
Теперь вы можете создать новый объект с именем nmp для вызова функции PortScanner. Затем запустите новое сканирование для целевого IP-адреса 127.0.0.1 и портов от 1 до 50, как показано ниже:
>nmp = nmap.PortScanner()
>nmp.scan('127.0.0.1', '1-50')
Сканирование завершается и дает следующий вывод:
{'nmap': {'scanstats': {'uphosts': '1', 'timestr': 'Fri Sep 20 13:12:09 2022', 'downhosts': '0', 'totalhosts': '1',
'elapsed': '1.06'}, 'scaninfo': {'tcp': {'services': '1-50', 'method': 'syn'}}, 'command_line': 'nmap -oX - -p 1-50 -sV 127.0.0.1'}, 'scan': {'127.0.0.1': {'status': {'state': 'up', 'reason': 'localhost-response'}, 'hostnames': [{'type': 'PTR', 'name': 'localhost'}], 'vendor': {}, 'addresses': {'ipv4': '127.0.0.1'}, 'tcp': {22: {'product': 'OpenSSH', 'state': 'open', 'version': '7.7p1 Debian 4', 'name': 'ssh', 'conf': '10', 'extrainfo': 'protocol 2.0', 'reason': 'syn-ack', 'cpe': 'cpe:/o:linux:linux_kernel'}}}}}
Хотя предыдущий вывод является необработанным, он, безусловно, может быть отформатирован с использованием многих функций Python. После того, как вы запустили начальное сканирование, вы можете исследовать различные функции python-nmap для получения определенных деталей сканирования.
Функция scaninfo() возвращает подробности сканирования, такие как используемый метод и проверенный диапазон портов.
> nmp.scaninfo()
{'tcp': {'services': '1-1024', 'method': 'syn'}}
Функция all_hosts() возвращает список всех отсканированных IP-адресов.
> nmp.all_hosts()
['192.168.1.3']
Функция state() возвращает состояние отсканированного IP / хоста, например, включен он или нет.
>nmp['192.168.1.3'].state()
'up'
Функция keys() возвращает список всех открытых портов, найденных во время сканирования.
> nmp['192.168.1.3']['tcp'].keys()
[512, 513, 514, 139, 111, 80, 53, 22, 23, 25, 445, 21]
Функция has_tcp() проверяет, был ли определенный порт открыт открытым во время сканирования целевого IP-адреса.
>nmp['192.168.1.3'].has_tcp(22)
True
Функция command_line() возвращает точную команду NMAP, которая выполнялась в фоновом режиме для получения выходных данных.
> nmp.command_line()
'nmap -oX --p 1-50 -sV 127.0.0.1'
Функция hostname() возвращает имя хоста IP-адреса, который вы передаете в качестве аргумента.
>nmp['127.0.0.1'].hostname()
'localhost'
Функция all_protocols() возвращает список протоколов, поддерживаемых целевым IP-адресом.
>nmp['127.0.0.1'].all_protocols()
['tcp']
Теперь, когда вы знаете основные функции для вызова NMAP из Python, вы можете написать свой код Python, который использует цикл для сканирования нескольких хостов. Затем вы можете использовать различные функции обработки текста для очистки и форматирования вывода.
No comments:
Post a Comment
А что вы думаете по этому поводу?