Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- #takes traffic routed through this script (acting like a proxy), and turns it into dns packets to get past login stuff
- #Need to calculate MaxDnsSize base64 to length
- from scapy3k.all import * #only import libraries needed
- import socket
- import sys
- import base64
- from multiprocessing import Process
- localPort = 32
- MaxDnsSize = 253
- #pretty sure this needs to be smaller, because were not including the headers, but i'll calculate this later. Who knows, maybe routers don't even block based on length.
- localProxy = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- localProxy.bind(("127.0.0.1", localPort))
- localProxy.listen(5)
- dnsServer='192.168.1.65'
- def sendDns(incomingBytes, port):
- print('sending packet data :\n' + incomingBytes.decode('utf-8'))
- incomingBytes = base64.encodebytes(incomingBytes)
- send(IP(dst=dnsServer)/UDP(dport=53, sport=port)/DNS(qd=DNSQR(qname=incomingBytes)))
- def transmitData(client, addr):
- print("new incomming connection from " + str(addr))
- conencted=False
- incomingBytes=bytes('', 'utf-8')
- client.settimeout(1)
- while True:
- try:
- recvBytes = client.recv(1)
- if not recvBytes:
- print("User " + str(addr) + " discconected.")
- client.shutdown(socket.SHUT_RDWR)
- client.close()
- break
- else:
- incomingBytes += recvBytes
- if len(incomingBytes) == MaxDnsSize:
- sendDns(incomingBytes, addr[1])
- incomingBytes = bytes('', 'utf-8')
- except socket.timeout:
- if incomingBytes:
- sendDns(incomingBytes, addr[1])
- incomingBytes = bytes('', 'utf-8')
- except KeyboardInterrupt:
- localProxy.shutdown(socket.SHUT_RDWR)
- localProxy.close()
- except Exception as error:
- print(str(addr) + "has error: " + error)
- #client.shutdown(socket.SHUT_RDWR)
- #client.close()
- #break
- # exit()
- def waitForConnections():
- print("waiting for connections on port " + str(localPort) + ".")
- while True:
- try:
- client, addr = localProxy.accept()
- clientListener = Process(target=transmitData, args=(client, addr))
- clientListener.start()
- except KeyboardInterrupt:
- print("exiting...")
- localProxy.shutdown(socket.SHUT_RDWR)
- localProxy.close()
- waitForConnections()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement