Heim  >  Artikel  >  Backend-Entwicklung  >  Zwei Möglichkeiten, das NMAP-Port-Scannen in Python zu verwenden

Zwei Möglichkeiten, das NMAP-Port-Scannen in Python zu verwenden

高洛峰
高洛峰Original
2017-03-22 13:59:282756Durchsuche

Erste Version: Es werden nur durch Kommas getrennte Ports unterstützt, Portbereiche werden nicht unterstützt

Erstens: sudo apt-get install nmap

Zweitens: pip install python -nmap

Drittens:kopieren den Code unten in eine Datei wie 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 '+\
                                   &#39;-H <target host> -p <target port>&#39;)
    parser.add_option(&#39;-H&#39;, dest=&#39;tgtHost&#39;, type=&#39;string&#39;,\
                      help=&#39;specify target host&#39;)
    parser.add_option(&#39;-p&#39;, dest=&#39;tgtPort&#39;, type=&#39;string&#39;,\
                      help=&#39;specify target port[s] separated by comma&#39;)
    
    (options, args) = parser.parse_args()
    
    tgtHost = options.tgtHost
    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

Weiter: chmod +x scan_network.py

Fünftens: ./scan_network.py -H 192.168.1.1 -p 22,23

Zweite Version: unterstützt Kommatrennung und -trennung Portbereich

#!/usr/bin/env python
import nmap
import optparse
def nmapScan(tgtHost,tgtPort):
    nmScan = nmap.PortScanner()
    nmScan.scan(tgtHost,tgtPort)
    state=nmScan[tgtHost][&#39;tcp&#39;][int(tgtPort)][&#39;state&#39;]
    print ("[*] " + tgtHost + " tcp/"+tgtPort +" "+state)

def main():
    parser = optparse.OptionParser(&#39;usage %prog &#39;+\
                                   &#39;-H <target host> -p <target port>&#39;)
    parser.add_option(&#39;-H&#39;, dest=&#39;tgtHost&#39;, type=&#39;string&#39;,\
                      help=&#39;specify target host&#39;)
    parser.add_option(&#39;-p&#39;, dest=&#39;tgtPort&#39;, type=&#39;string&#39;,\
                      help=&#39;specify target port[s] separated by comma&#39;)

    (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(&#39;,&#39;)
    i = int(len(tgtPorts_cache))
    for m in range( 0,i ):
        tgtPorts_split = str(tgtPorts_cache[m]).split(&#39;-&#39;)
        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()

Zwei Möglichkeiten, das NMAP-Port-Scannen in Python zu verwenden

Das obige ist der detaillierte Inhalt vonZwei Möglichkeiten, das NMAP-Port-Scannen in Python zu verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn