安裝好Python-Namp模塊,(pip install python-nmap)。創建一個PortScanner()類對象,這使我們能用這個對象完成掃描操作。PortScanner類有一個scan()函數,它可將目標和端口的列表作為參數輸入,並對它們進行基本的Nmap掃描。另外,還可以把目標主機的地址/端口放入數組中備查,並打印出端口的狀態。示例代碼如下:
# 導入模塊
import nmap
import optparse
# 定義nmapScan函數,參數為目標主機和目標端口
def nmapScan(tgtHost, tgtPort):
# 實例化nmap端口掃描對象
nmScan = nmap.PortScanner()
# 執行scan()函數
nmScan.scan(tgtHost, tgtPort)
# 獲取tcp協議對應的端口狀態
state = nmScan[tgtHost]['tcp'][int(tgtPort)]['state']
print(f"[+] {
tgtHost} tcp/{
tgtPort} {
state}")
# 定義主函數
def main():
# 實例化語法對象
parser = optparse.OptionParser('Usage %prog -H <target host> -p <target port>')
# 添加—H, -p參數選項,定義變量名和類型,還有幫助說明
parser.add_option('-H', dest = 'tgtHost', type = 'string', help = 'specify target host')
parser.add_option('-p', dest = 'tgtPort', type = 'string', help = 'specify target port')
# 生成語法參數元組
(options, args) = parser.parse_args()
tgtHost = options.tgtHost
tgtPorts = str(options.tgtPort).split(', ')
if tgtHost == None or tgtPorts[0] == None:
print(parser.usage)
exit(0)
for tgtPort in tgtPorts:
nmapScan(tgtHost, tgtPort)
if __name__ == '__main__':
main()
執行這個腳本,運行結果如下圖: