Skip to content

Instantly share code, notes, and snippets.

@AhnMo
Last active April 1, 2019 11:58
Show Gist options
  • Select an option

  • Save AhnMo/cb27247e51abd3da2eae30b33a994618 to your computer and use it in GitHub Desktop.

Select an option

Save AhnMo/cb27247e51abd3da2eae30b33a994618 to your computer and use it in GitHub Desktop.
High level version tcp proxy
from socketserver import BaseRequestHandler, TCPServer
from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
BIND_HOST, BIND_PORT = "0.0.0.0", 22
HOST, PORT = "192.168.100.5", 22
def relay(fromSock, toSock):
while True:
try:
d = fromSock.recv(4096)
toSock.send(d)
except:
break
return
class SockHandler(BaseRequestHandler):
def handle(self):
try:
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((HOST, PORT))
except Exception:
self.request.close()
return
# self.request = client - proxy
# sock = proxy - server
th1 = Thread(target=relay, args=(self.request, sock))
th2 = Thread(target=relay, args=(sock, self.request))
th1.start()
th2.start()
th1.join()
th2.join()
self.request.close()
sock.close()
if __name__ == '__main__':
serve = TCPServer((BIND_HOST, BIND_PORT), SockHandler)
serve.serve_forever()
@AhnMo
Copy link
Author

AhnMo commented Apr 1, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment