0

我正在学习 Python 并且遇到了问题。我无法在 Windows CMD 中执行以下代码。我只尝试了一个“Hello World”程序,它按预期执行。但是当我尝试这个程序时,什么都没有发生。没有错误信息或任何东西。我使用 python 3.3 和 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()
4

1 回答 1

2

您的缩进都被破坏了 - 除了if __name__ == "main"其他答案和评论中提到的问题之外,每个函数都嵌套在它之前的一个函数中,这可能不是它应该的方式。你可能想要这样的东西:

__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()
于 2014-02-25T19:35:19.717 回答