Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import socket
- import sys
- import threading
- def getstatuscode(url):
- response = requests.head(url)
- code = response.status_code
- redirect = url
- code_and_redirect = [code,redirect]
- # follow redirects
- if (code >= 300 and code <= 302 ):
- redirect = response.headers['Location']
- print('Got redirect to: ' + redirect)
- code_and_redirect = getstatuscode(redirect)
- return code_and_redirect;
- def knockport(ip,port):
- try:
- con = socket.socket().connect((ip,port))
- print('Port ' + str(port) + ' offen')
- con.close()
- except:
- pass
- def multiknock(ip,ports):
- threads = list()
- for port in ports:
- # spawn threads
- thread = threading.Thread(target=knockport, args=(ip,port))
- threads.append(thread)
- thread.start()
- for index, thread in enumerate(threads):
- # wait for threads to finish
- thread.join()
- def parse_additional_ports(str):
- tmp = str.split(',')
- #parse to int
- tmp_2 = []
- for to_validate in tmp:
- try:
- tmp_2.append(int(to_validate))
- except:
- print('Ignoriere ' + to_validate)
- return tmp_2
- #common ports (ftp,ssh,telnet,smtp,dns,dhcp,pop3,imap,https,rdp)
- common_ports = [21,22,23,25,53,80,110,143,443,3389]
- url = str(input("Welche URL soll getestet werden? "))
- ranged_scan = str(input("Soll ein ausführlicher Portscan ausgeführt werden? (y/N) "))
- startport = 0
- endport = 0
- if ranged_scan == 'y':
- startport = int(input("Startport eingeben: "))
- #todo: validate
- endport = int(input("Endport eingeben: "))
- #todo: validate
- additional_ports_input = str(input('Gib hier weitere Ports ein, die du testen möchtest (kommaseparierte liste) '))
- additional_ports = parse_additional_ports(additional_ports_input)
- # since we check for HTTP status codes, check if protocol is given
- if not url.startswith('http'):
- url = 'http://' + url
- print('Corrected input to: ' + url)
- #get the statuscode
- try:
- data = getstatuscode(url)
- except:
- print('Da lief etwas schief. War die URL korrekt?')
- sys.exit(42)
- final_url = data[1]
- if final_url != url:
- print('Finale URL nach Redirects: ' + final_url)
- code = data[0]
- print('Http Statuscode: ' + str(code))
- # strip the protocol from the url and remove trailing slashes
- domain = final_url.split('//',1)[1].rstrip('/')
- # get domains ip
- ip = socket.gethostbyname(domain)
- print('IP: '+str(ip))
- if ranged_scan == 'y':
- multiknock(ip,range(startport,endport+1))
- else:
- multiknock(ip,common_ports)
- #additional ports
- multiknock(ip,additional_ports)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement