Maison  >  Article  >  développement back-end  >  Deux façons d'utiliser l'analyse des ports nmap en Python

Deux façons d'utiliser l'analyse des ports nmap en Python

高洛峰
高洛峰original
2017-03-22 13:59:282756parcourir

Première version : seuls les ports séparés par des virgules sont pris en charge, les plages de ports ne sont pas prises en charge

Premièrement : sudo apt-get install nmap

Deuxièmement : pip install python -nmap

Troisièmement:copiez le code ci-dessous dans un fichier comme 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

Quatrièmement: chmod +x scan_network.py

cinquièmement : ./scan_network.py -H 192.168.1.1 -p 22,23

Deuxième version : prend en charge la séparation par virgule et - la séparation Plage de ports

#!/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()

Deux façons dutiliser lanalyse des ports nmap en Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn