Port Scanner in Python 3 (pyDroid and iPhone)

Heyyy! How ya doing?

Finally I have some free time and able to make some more videos! Very excited to learn some more stuff and share it with you guys. 🙂

To start things off smoothly I decided to do a short Python script – a port scanner, which we’ll program in a few lines of code.

This is an idea suggested by a viewer, to do small projects using mobile devices (pyDroid on Android and vim text editor on jailbroken iPhone).

Once you figure out which device you’ll be using, lets get started…

Port Scanner Using Threads

It’s important to use threads for such a program to shorten run time. With that said, we’ll need the system, socket and threading modules.

import socket,sys,threading
print('\n> Python3 Port Scanner\n  '+'='*20+'\n')
if len(sys.argv) > 1: target = socket.gethostbyname(sys.argv[1])
else: target = socket.gethostbyname(input('> Enter target: '))
# Scan ports - arguments: target + port
def scanPort(target, port):
	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	c = s.connect_ex((target, port))
	if c == 0: print ('  ' + target + ' ~ Port %d \t[open]' % (port,))
# Here we define range of ports to scan
for i in range(1, 1024):
	scan = threading.Thread(target=scanPort, args=(target, i))

On the second line we’ll simply greet the user.

Line 3 and 4 we’ll check for arguments (target IP address).

Lines 5 thru 10 we’ll create a function to scan target on specific port. This will be the threaded function – once we find an open port we’ll print ‘open’.

The last 4 lines of code we’ll iterate through our desired port range (1 to 1024 – feel free to change it), creating a thread for each one of them.

I just wanted to stop by and do a quick warm up for what’s to come.

Hope you guys enjoyed this short tutorial and see ya next time!