1. 程式人生 > >使用NMAP埠掃描程式碼實現

使用NMAP埠掃描程式碼實現

   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