Login Register


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: