Search code examples
pythonexecutionfaultcompiled

python program will not execute eventhoug no errors


I'm learning Python and have a problem. I can't execute following code in Windows CMD. I tried just an "Hello World" program and it executed as expected. but when i try this program nothing at all happens. No error message or anything. Im using python 3.3 and 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()

Solution

  • Your indentation is all mangled - in addition to the if __name__ == "main" problem mentioned in other answers and comments, each function is nested inside the one before it, which is probably not the way it's supposed to be. You probably want something like this:

    __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()