This site is developed to XHTML and CSS2 W3C standards.
If you see this paragraph, your browser does not support those standards and you
need to upgrade. Visit WaSP
for a variety of options.
Paste #84
Posted by: BitByByte
Posted on: 2026-01-15 23:02:12
Age: 18 days ago
Views: 15
#!/usr/bin/env python3
import socket
import threading
import argparse
BUF = 4096
def pipe(a, b):
def forward(src, dst):
try:
while True:
data = src.recv(BUF)
if not data:
break
dst.sendall(data)
except:
pass
finally:
try: src.close()
except: pass
try: dst.close()
except: pass
threading.Thread(target=forward, args=(a, b), daemon=True).start()
threading.Thread(target=forward, args=(b, a), daemon=True).start()
def main():
p = argparse.ArgumentParser()
p.add_argument("--listen", default="0.0.0.0")
p.add_argument("--listen_port", type=int, default=7777)
p.add_argument("--target_host", default="homehosted.net")
p.add_argument("--target_port", type=int, default=1234)
args = p.parse_args()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((args.listen, args.listen_port))
s.listen(5)
while True:
c, addr = s.accept()
t = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
t.connect((args.target_host, args.target_port))
except Exception as e:
print("Target connect error:", e)
c.close()
continue
pipe(c, t)
if __name__ == "__main__":
main()
Download raw |
Create new paste