python使用nmap連接埠掃描的兩種方法

來源:互聯網
上載者:User
第一版:只支援以逗號分隔的連接埠,不支援連接埠範圍

Firstly: sudo apt-get install nmap

Secondly:pip install python-nmap

Thirdly:copy the code bellow to a file like scan_network.py

#!/usr/bin/env pythonimport nmapimport optparsedef 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('usage %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

Forthly:chmod +x scan_network.py

fifthly: ./scan_network.py -H 192.168.1.1 -p 22,23

第二版:支援以逗號分割及以-分割的連接埠範圍

#!/usr/bin/env pythonimport nmapimport optparsedef 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('usage %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######this code bellow is to support scan port range like 66-88    tgtPorts = []    tgtPorts_cache = str(options.tgtPort).split(',')    i = int(len(tgtPorts_cache))    for m in range( 0,i ):        tgtPorts_split = str(tgtPorts_cache[m]).split('-')        if(len(tgtPorts_split) < 2):            tgtPorts.extend(tgtPorts_split)            #print(tgtPorts)        else:            for n in range(int(tgtPorts_split[0]),int(tgtPorts_split[1])+1):                tgtPorts.append(str(n))                #print(tgtPorts)######above the tgtPorts are the ports list you want to scann    #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()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.