資産スキャン最適化---nmapスキャン進捗
資産スキャンの最適化-nmapスキャンの進捗状況
元のnmapスキャンはpython-nmapモジュールで書かれており、その利点は結果が非常に友好的で、json形式で、入庫を処理しやすいことです.
しかし、大きなセグメントをスキャンしたり、パラメータの設定が不合理な場合、スキャンプロセス全体が遅くなるため、新しいニーズがあります.タスクの進捗状況の表示を提供します.
進捗バー:
How does NMap decide to print a progress line?
libnmapはnmapモジュールに比べてlibnmapの実現がより大きく,nmapを呼び出すだけでなく,nmap内のインタラクティブオブジェクトをクラス定義しており,プラグインモジュールから,このライブラリはプラグインによって自分の機能を絶えず豊かにしようとしていることがわかる.
最も主要なのはlibnmapモジュールで進捗を表示する割合を提供しており、これはタスクの表示に非常に友好的です.
進捗状況を表示する際にlibnmapパッケージがthreadに使用されます.
To go a bit further, you can always use the threading capabilities of the NmapProcess class and run the class in the background
進捗状況の公式ドキュメントの例を表示します.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from libnmap.process import NmapProcess
from time import sleep
nmap_proc = NmapProcess(targets="scanme.nmap.org", options="-sT")
nmap_proc.run_background()
while nmap_proc.is_running():
print("Nmap Scan running: ETC: {0} DONE: {1}%".format(nmap_proc.etc,
nmap_proc.progress))
sleep(2)
print("rc: {0} output: {1}".format(nmap_proc.rc, nmap_proc.summary))
key point:
肝心な問題が来て、
from libnmap.process import NmapProcess
nmap_proc = NmapProcess(targets=str(target), options=args)
nmap_proc.run_background()
while nmap_proc.is_running():
print("[*] Nmap Scan running: DONE: {0}%".format(float(nmap_proc.progress)))
time.sleep(2) #
ScanEngine = nmap.PortScanner()
ScanEngine.analyse_nmap_xml_scan(nmap_proc.stdout) # nmap
perfect~この方法は2つのモジュールの利点を結合し,需要を実現した.
参照先: