Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
port scanner
#1
repo is here. There is a multi-threaded version as well as the multi-process version shown below.

#! /usr/bin/python3
import socket
from multiprocessing import Process
# Scan all ports on target or localhost.
# If scanning on localhost, local listeners
# will be found as well (ex: 127.0.0.1:631 for CUPS).
# However if scanning another host on your
# network, only open ports set to :::xx will
# be picked up (ex: :::22 for ssh).
# 8 threads are used.


def delimiter():
    delim = ''
    for i in range(60):
        delim += '-'
    return delim + '\n'


def try_ports(begin, end):
    print("starting scan of range: " + str(begin) + "-" + str(end))
    target_ip = '127.0.0.1'
    # target_ip = '192.168.0.2'
    get = "GET / HTTP/1.1\r\nHost: " + target_ip + "\r\n\r\n"
    for port in range(begin, end):
        try:
            s = socket.create_connection((target_ip, port))
        except Exception as e:
            continue
        s.sendall(get.encode())
        response = s.recv(1024)
        try:
            service = socket.getservbyport(port)
        except Exception as e:
            service = "unknown service name"
        s.close()
        print("\n%-15s\t%-8d\n%s\n" % (service, port, response.decode()))
        print(delimiter())


if __name__ == '__main__':
    processes = []
    port_ranges = {
        "1": (0, 8192),
        "2": (8192, 16384),
        "3": (16384, 24576),
        "4": (24576, 32768),
        "5": (32768, 40960),
        "6": (40960, 49152),
        "7": (49152, 57344),
        "8": (57344, 65536)
    }
    for process, ranges in port_ranges.items():
        p = Process(target=try_ports, args=(ranges[0], ranges[1]))
        p.start()
        processes.append(p)
    for p in processes:
        p.join()
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020