使用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[1]:g++:conmand not found等,則需要安裝一下依賴庫)

 

 yum -y install gcc automake autoconf libtool make 

 

yum install gcc gcc-c++

 接下來進行編譯

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM