Прогресс сканера Python Nmap - PullRequest
0 голосов
/ 04 сентября 2018

Так что в настоящее время я использую библиотеку nmap в python просто для знакомства с библиотекой в ​​python3. Документация использует nmap.PortScanner () , который я реализовал.

У меня вопрос, есть ли способ определить, как далеко nmap.PortScanner () находится в процессе сканирования, или способ дать пользователю знать, что он все еще сканирует? В nmap.PortScannerAsync () есть способ сделать это, а именно: nmap.still_scanning () .

Я бы использовал nmap.PortScannerAsync () , однако мне нужно использовать методы внутри nmap.PortScanner () .

Любая помощь будет оценена.

~ Kyhle

1 Ответ

0 голосов
/ 07 сентября 2018

Так что мне удалось найти решение, которое, кажется, работает. Я все еще собираюсь попытаться сделать это лучше, но я подумал, что я бы нашел временное решение, если кто-то борется с той же проблемой.

Таким образом, моя идея заключалась в том, что процесс сканирования, вероятно, должен быть в отдельном потоке, если вы хотите увидеть прогресс, так как я не знаю способа подключиться к методу .scan (). Для этого была импортирована следующая библиотека:

from threading import Thread

Это был шаг 1. Оттуда мне нужно было определить, как на самом деле передать процесс сканирования в поток, так как я не был заинтересован в использовании нескольких потоков (я только хотел видеть ход сканирования). Решение, которое я нашел для работы, показано ниже:

scan_thread = Thread(target=network_scan.scan, args=(ip_address, port_range,))
scan_thread.start()
while True:
    scan_thread.join(timeout=3)
    if not scan_thread.is_alive():
        break
    print('Nmap is still running...')

Это решение вдохновлено другим постом о многопоточности, который, я думаю, я видел в stackoverflow, но я не могу найти его во время публикации этого.

Надеюсь, это поможет тому, кто находится в подобной ситуации.

~ Kyhle

...