jdgue 发表于 2018-8-15 08:51:22

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]
查看完整版本: python使用nmap端口扫描