_     _  _        _    
| |__ | || |   ___| | __
| '_ \| || |_ / __| |/ /
| | | |__   _| (__|   < 
|_| |_|  |_|  \___|_|\_\
h4ck category/scan > cat python-port-scaner

Python port scaner

#!/usr/bin/env python3
from argparse import ArgumentParser
from queue import Queue
import socket
from threading import Thread


def port_check(target):
    with socket.socket() as s:
        if s.connect_ex(target) == 0:
            print('%s:%s' % target, 'open')


def scan(queue):
    while True:
        port_check(queue.get())
        queue.task_done()


def main(ip, start, end, t, w):
    queue = Queue()
    socket.setdefaulttimeout(t)

    args = (queue, )

    for _ in range(w):
        Thread(target=scan, args=args, daemon=True).start()

    for port in range(start, end):
        target = (ip, port)
        queue.put(target)

    queue.join()


if __name__ == "__main__":
    p = ArgumentParser()
    p.add_argument('ip', type=str, nargs='?', default='127.0.0.1')
    p.add_argument('start', type=int, nargs='?', default=1)
    p.add_argument('end', type=int, nargs='?', default=1024)
    p.add_argument('--timeout', '-t', type=float, default=1)
    p.add_argument('--workers', '-w', type=int, default=32)
    a = p.parse_args()

    main(a.ip, a.start, a.end, a.timeout, a.workers)
h4ck category/scan > _