作者:morimodomasaaki | 来源:互联网 | 2017-05-14 02:44
第一版:只支持以逗号分隔的端口,不支持端口范围
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 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('usage %prog '+\
'-H -p ')
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 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('usage %prog '+\
'-H -p ')
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(&#39;,&#39;)
if (tgtHost == None) | (tgtPorts[0] == None):
print (parser.usage)
exit(0)
for tgtPort in tgtPorts:
nmapScan(tgtHost, tgtPort)
if name == &#39;main&#39;:
main()
以上就是python使用nmap端口扫描的两种方法的详细内容,更多请关注 第一PHP社区 其它相关文章!