Saturday, June 30, 2018

Port Scanner in python

CODE SNIPPEST:

#!/usr/bin/env python

import socket
import threading
import optparse

screenLock = threading.Semaphore(value=1)

def connect(src, port):
    try:
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect((src,port))
        s.send('ViolentPython\r\n')
        results = s.recv(100)
        screenLock.acquire()
        print '\n[+] Scan Results for: %s\n' % port
        print '[+]%s/tcp open\n'% port
        print '[+] ' + str(results)
    except:
        screenLock.acquire()
        print '\n[+] Scan Results for: %s\n' % port
        print '[-]%s/tcp closed\n'% port
    finally:
        screenLock.release()
        s.close()

def main():
    parser = optparse.OptionParser("usage%prog -s <source_ip> -p <ports>")
    parser.add_option("-s", "--source", dest="src",
            help="Source IP / Hostname to scan", metavar="SOURCE")
    parser.add_option("-p", "--ports",
            dest="ports", default='80,21,143,443',metavar="PORTS",
            help="port list e.g 21,80,8080")

    (options, args) = parser.parse_args()
    if options.src == None:
        print parser.usage
        exit(0)

    source = options.src
    ports = options.ports.split(',')

    for port in ports:
        t = threading.Thread(target=connect, args=(source,port))
        t.start()

if __name__ == "__main__":
    main()


OUTPUT:

root@Avinash:~/python_codes# python port_scanner.py -s 192.168.0.105

[+] Scan Results for: 80

[-]80/tcp closed


[+] Scan Results for: 143

[-]143/tcp closed


[+] Scan Results for: 21

[-]21/tcp closed


[+] Scan Results for: 443

[-]443/tcp closed

root@Avinash:~/python_codes#

No comments:

Post a Comment