Domanda

Sto imparando Python e ho un problema.Non posso eseguire il seguente codice in Windows Cmd.Ho provato solo un programma "Hello World" e ha eseguito come previsto.Ma quando provo questo programma non succede niente.Nessun messaggio di errore o nulla.Sto usando Python 3.3 e Pycharm 3.1.


.
__author__ = 'Johan'

import optparse
from socket import *

def connScan(tgtHost, tgtPort):
            try:
                connSkt = socket(AF_INET, SOCK_STREAM)
                connSkt.connect((tgtHost, tgtPort))
                connSkt.send('ViolentPython\r\n')
                results = connSkt.recv(100)
                print('[+]%d/tcp open'% tgtPort)
                print('[+] ' + str(results))
                connSkt.close()

            except:
                print('[-]%d/tcp closed'% tgtPort)

            def portScan(tgtHost, tgtPorts):
                try:
                    tgtIp = gethostbyname(tgtHost)
                except:
                    print ('[-] Can not resolve '': Unknown host' % tgtHost)
                    return
                try:
                    tgtName = gethostbyaddr(tgtIp)
                    print('\n[+] Scan Results for: ' + tgtName[0])
                except:
                    print('\n[+] Scan Results for: ' + tgtIp.
                        setdefaulttimeout(1))
                    for tgtPort in tgtPorts:
                        print ('Scanning Port ' + tgtPort)
                        connScan(tgtHost. int(tgtPort))

                def main():

                    parser = optparse.OptionParser('usage%prog ' + \
                        '-H <target host> -p <target port>')

                    parser.add_option('-H', dest='tgtHost', type=str, \
                        help='specify target host')
                    parser.add_option('-p', dest='tgtPort', type='int', \
                                      help='specify target port[s] separated by comma')
                    (options, args) = parser.parse_args()
                    tgtHost = options.tgtHost
                    tgtPorts = options.tgtPort
                    if(tgtHost is None) | (tgtPorts[0] is None):
                        print('[-] You must specify a target host and port[s]')
                        exit(0)
                        portScan(tgtHost, tgtPorts)
                    if __name__== '__main__':
                        main()
.
È stato utile?

Soluzione

La tua indentazione è tutto manglato - oltre al problema if __name__ == "main" menzionato in altre risposte e commenti, ogni funzione è annidata all'interno di quella prima che, che probabilmente non è il modo in cui dovrebbe essere.Probabilmente vuoi qualcosa del genere:

__author__ = 'Johan'
import optparse
from socket import *

def connScan(tgtHost, tgtPort):
    try:
        connSkt = socket(AF_INET, SOCK_STREAM)
        connSkt.connect((tgtHost, tgtPort))
        connSkt.send('ViolentPython\r\n')
        results = connSkt.recv(100)
        print('[+]%d/tcp open'% tgtPort)
        print('[+] ' + str(results))
        connSkt.close()

    except:
        print('[-]%d/tcp closed'% tgtPort)

def portScan(tgtHost, tgtPorts):
    try:
        tgtIp = gethostbyname(tgtHost)
    except:
        print ('[-] Can not resolve '': Unknown host' % tgtHost)
        return
    try:
        tgtName = gethostbyaddr(tgtIp)
        print('\n[+] Scan Results for: ' + tgtName[0])
    except:
        print('\n[+] Scan Results for: ' + tgtIp.
            setdefaulttimeout(1))
        for tgtPort in tgtPorts:
            print ('Scanning Port ' + tgtPort)
            connScan(tgtHost. int(tgtPort))

def main():

    parser = optparse.OptionParser('usage%prog ' + \
        '-H <target host> -p <target port>')

    parser.add_option('-H', dest='tgtHost', type=str, \
        help='specify target host')
    parser.add_option('-p', dest='tgtPort', type='int', \
                      help='specify target port[s] separated by comma')
    (options, args) = parser.parse_args()
    tgtHost = options.tgtHost
    tgtPorts = options.tgtPort
    if(tgtHost is None) | (tgtPorts[0] is None):
        print('[-] You must specify a target host and port[s]')
        exit(0)
        portScan(tgtHost, tgtPorts)

if __name__== '__main__':
    main()
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top