python使用nmap端口扫描
第一版:只支持以逗号分隔的端口,不支持端口范围Firstly: sudo apt-get install nmap
Secondly:pip install python-nmap
Thirdly:copy the code bellow to a file likescan_network.py
[*] #!/usr/bin/env python
[*] import nmap
[*] import optparse
[*]
[*] def nmapScan(tgtHost,tgtPort):
[*] nmScan = nmap.PortScanner()
[*] nmScan.scan(tgtHost,tgtPort)
[*] state=nmScan['tcp']['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 separated by comma')
[*]
[*] (options, args) = parser.parse_args()
[*]
[*] tgtHost = options.tgtHost
[*] tgtPorts = str(options.tgtPort).split(',')
[*]
[*] if (tgtHost == None) | (tgtPorts == None):
[*] print (parser.usage)
[*] exit(0)
[*] for tgtPort in tgtPorts:
[*] nmapScan(tgtHost, tgtPort)
[*]
[*]
[*] if __name__ == '__main__':
[*] main
Forthly:chmod +xscan_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['tcp']['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 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).split('-') if(len(tgtPorts_split) < 2): tgtPorts.extend(tgtPorts_split) #print(tgtPorts) else: for n in range(int(tgtPorts_split),int(tgtPorts_split)+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 == None): print (parser.usage) exit(0) for tgtPort in tgtPorts: nmapScan(tgtHost, tgtPort)if __name__ == '__main__': main()
页:
[1]