Python Nmap扫描仪进度

时间:2018-09-04 16:55:01

标签: python-3.x nmap port-scanning

所以我目前正在使用python的nmap库只是为了了解python3中的库。 documentation使用我已实现的 nmap.PortScanner()

我的问题是,是否可以确定 nmap.PortScanner()在扫描过程中的距离,还是可以让用户知道它仍在扫描? 在 nmap.PortScannerAsync()中,有一种方法可以做到这一点,即: nmap.still_scanning()

我将使用 nmap.PortScannerAsync(),但是我需要在 nmap.PortScanner()中使用方法。

任何帮助将不胜感激。

〜Kyhle

1 个答案:

答案 0 :(得分:1)

因此,我设法找到了一个可行的解决方案。我仍然会尝试做得更好,但是我认为我应该采用一种临时解决方案,以防有人遇到同样的问题。

所以我的想法是,如果您想查看进度,则扫描过程可能需要在单独的线程中,因为我不知道一种挂接到.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