chevron_left chevron_right
Login Register invert_colors photo_library


Stay updated and chat with others! - Join the Discord!
Thread Rating:
  • 0 Vote(s) - 0 Average


Port scanner - help needed filter_list
Author
Message
Port scanner - help needed #1
Ok so ive made my port scanner it seems to be working fine besides im having one annoying little issue, the code is as follows:

Code:
import optparse
import socket
from socket import *
from threading import *
screenLock = Semaphore(value=1)
def connScan(tgtHost, tgtPort):
    try:
        connSkt = socket(AF_INET, SOCK_STREAM)
        connSkt.connect((tgtHost, tgtPort))
        connSkt.send('ViolentPython\r\n')
        results = connSkt.recv(100)
        screenLock.acquire()
        print '[+]%d/tcp open'% tgtPort
        print '[+] ' + str(results)
    except:
        screenLock.acquire()
        print '[-]%d/tcp closed'% tgtPort
    finally:
        screenLock.release()
        connSkt.close()
def portScan(tgtHost, tgtPorts):
    try:
        tgtIP = gethostbyname(tgtHost)
    except:
        print "[-] Cannot resolve '%s': 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:
        t = Thread(target=connScan, args=(tgtHost, int(tgtPort)))
        t.start()
def main():
    parser = optparse.OptionParser('usage %prog -H'+\
        '<target host> -p <target port>')
    parser.add_option('-H', dest='tgtHost', type='string', \
        help='specify target host')
    parser.add_option('-p', dest='tgtPort', type='string', \
        help='specify target port[s] seperated by comma')
    (options, args) = parser.parse_args()
    tgtHost = options.tgtHost
    tgtPorts = str(options.tgtPort).split(', ')
    if(tgtHost == None) | (tgtPorts[0] == None):
        print parser.usage
        exit(0)
    portScan(tgtHost, tgtPorts)
if __name__ == '__main__':
    main()

Output:

Code:
[+] Scan Results for: 192.254.234.250
[+]21/tcp open
[+] 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 6 of 50 allow

My issue is that when i run it using the command:

python portScanner.py -H <hostname> -p <port[s]> it only works when i only put one port there, if i try to put another port to scan separated by a comma it gives the following error:

Code:
[+] Scan Results for: 192.254.234.250
Traceback (most recent call last):
  File "portScanner.py", line 51, in <module>
    main()    
  File "portScanner.py", line 49, in main
    portScan(tgtHost, tgtPorts)
  File "portScanner.py", line 34, in portScan
    t = Thread(target=connScan, args=(tgtHost, int(tgtPort)))
ValueError: invalid literal for int() with base 10: '21,'

if i put a space before the comma after the first port it runs but doesnt scan for the second port:

Code:
root@kali:~/Scripts/portScanner# python portScanner.py -H julzlane.com -p 21 , 1720

[+] Scan Results for: 192.254.234.250
[+]21/tcp open
[+] 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 7 of 50 allow

Any idea why this is happening? Any help would be much appreciated (oh and btw im completely new to python, please if possible reply in detail)

Thankyou

Reply

RE: Port scanner - help needed #2
I'm not good at Python but could it be possible that your program doesn't understand the assignment of taking multiple inputs.
Code:
input = raw_input("Enter three numbers separated by commas: ")

input_list = input.split(',')
numbers = [float(x.strip()) for x in input_list]


Reply

RE: Port scanner - help needed #3
(10-12-2013, 08:41 AM)Slarek Wrote: I'm not good at Python but could it be possible that your program doesn't understand the assignment of taking multiple inputs.
Code:
input = raw_input("Enter three numbers separated by commas: ")

input_list = input.split(',')
numbers = [float(x.strip()) for x in input_list]

That could well be it thanks, as i said im completely new to python and programming in general and am going through a book called Violent Python. How would i go about editing my code to get this to work?

Reply

RE: Port scanner - help needed #4
(10-12-2013, 08:57 AM)theRandy Wrote:
(10-12-2013, 08:41 AM)Slarek Wrote: I'm not good at Python but could it be possible that your program doesn't understand the assignment of taking multiple inputs.
Code:
input = raw_input("Enter three numbers separated by commas: ")

input_list = input.split(',')
numbers = [float(x.strip()) for x in input_list]

That could well be it thanks, as i said im completely new to python and programming in general and am going through a book called Violent Python. How would i go about editing my code to get this to work?

You could use user input instead of command line arguments.


Reply

RE: Port scanner - help needed #5
Wouldn't i have to pretty much change the entire script to do that? is there no way to do this whilst using command line arguments?

Reply

RE: Port scanner - help needed #6
Read these:
http://stackoverflow.com/questions/12493...pplication
http://www.cyberciti.biz/faq/python-comm...v-example/


Reply

RE: Port scanner - help needed #7
(10-12-2013, 09:23 AM)Slarek Wrote: Read these:
http://stackoverflow.com/questions/12493...pplication
http://www.cyberciti.biz/faq/python-comm...v-example/

Thanks ill read over those now, i figured it out though.

changed line 45 to
--> tgtPorts = str(options.tgtPort).split(',')
instead of:
--> tgtPorts = str(options.tgtPort).split(', ')

for some reason it works if i dont have the space after the comma between each port, outputs as follows:

Code:
python portScanner.py -H 192.168.1.1 -p 80,21
[+] Scan Results for: 192.168.1.1
[-]21/tcp closed
[+]80/tcp open
[+]

Thanks for the help

Reply






Users browsing this thread: 1 Guest(s)