使用NMAP埠掃描程式碼實現
阿新 • • 發佈:2018-12-10
Nmap是一個網路連線端掃描軟體,用來掃描網上電腦開放的網路連線端。確定哪些服務執行在哪些連線端,並且推斷計算機執行哪個作業系統(這是亦稱 fingerprinting)。其基本功能有三個,一是探測一組主機是否線上;其次是掃描 主機埠,嗅探所提供的網路服務;還可以推斷主機所用的作業系統 。它 以隱祕的手法,避開闖入檢測系統的監視,並儘可能不影響目標系統的日常操作,因此也常被黑客所青睞。本文以Centos7為例,用python實現NMAP進行埠掃描。
一、安裝NMAP
1.下載NMAP原始碼
cd /usr/src
git clone https://github.com/nmap/nmap.git
2.進行編譯安裝
cd nmap
./configure
make
make install
出現以上介面表示安裝成功
3.清除安裝時生成的臨時檔案
make clean
4.檢視nmap的版本
nmap version
成功安裝nmap
二、安裝python-nmap
直接通過pip安裝(若linux環境下無pip可自行安裝)
python -m pip install python-nmap
三、功能實現
安裝好以上工具之後,將Nmap import到指令碼中,就可以使用Nmap掃描功能了。PortScanner類物件能完成掃描功能,PortScanner類有一個scan()函式,它可將目標和埠的列表作為引數輸入,並對他們進行基本的Nmap掃描功能。另外,還可以把目標主機的地址/埠放入陣列中備查,並打印出埠的狀態。在接下來的部分中,依靠該功能來定位和識別目標。
#!/usr/bin/env Python import nmap import optparse def nmapScan(tgtHost,tgtPort): nmScan=nmap.PortScanner() nmScan.scan(tgtHost,tgtPort) state=nmScan[tgtHost]['tcp'][int (tgtPort)]['state'] print("[*]"+tgtHost+" tcp/"+tgtPort+""+state) def main(): parser=optparse.OptionParser('using%prog'+'-H <target host> -p <target port>') parser.add_option('-H',dest='tgtHost',type='string',help='specify target host') parser.add_option('-p',dest='tgtPort',type='string',help='specify target port[s] separated by comma') (options,args)=parser.parse_args() tgtHost=options.tgtHost tgtPorts=str(options.tgtPort).split(',') if (tgtHost==None)|(tgtPorts[0]==None): print(parser.usage) exit(0) for tgtPort in tgtPorts: nmapScan(tgtHost,tgtPort) if __name__ =='__main__': main()
例項如下:
python scan-nmap.py -H 172.22.32.12 -p 21,1720,88,22,25,49,69,80,107,115,161,163,443,514