PHP前端开发

python使用nmap端口扫描的两种方法

百变鹏仔 2个月前 (02-08) #Python
文章标签 两种

第一版:只支持以逗号分隔的端口,不支持端口范围   

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> -p <target>')    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</target></target>

Forthly:chmod +x  scan_network.py   

立即学习“Python免费学习笔记(深入)”;

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> -p <target>')    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) <p><img src="https://img.php.cn//upload/image/878/600/462/1490162084871472.png" title="python使用nmap端口扫描的两种方法" alt="python使用nmap端口扫描的两种方法"    style="max-width:90%"  style="max-width:90%"></p></target></target>