Script Python que permite fazer o port forwarding de qualquer porta TCP. ```python #!/usr/bin/env python3 """ TCP Port Forwarder Minimalista Uso: python3 pf.py <listen_port>:<dest_host>:<dest_port> [...] Exemplos: python3 pf.py 8080:127.0.0.1:80 python3 pf.py 10111:127.0.0.1:111 12049:127.0.0.1:2049 10435:127.0.0.1:60435 """ import socket import threading import sys def fwd(src, dst): try: while True: d = src.recv(8192) if not d: break dst.sendall(d) except: pass try: src.close() except: pass try: dst.close() except: pass def handle(c, dh, dp): try: s = socket.socket() s.connect((dh, dp)) threading.Thread(target=fwd, args=(c, s), daemon=True).start() fwd(s, c) except Exception as e: print(f"[!] Erro conectando {dh}:{dp}: {e}") try: c.close() except: pass def listen(lp, dh, dp): try: srv = socket.socket() srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) srv.bind(("0.0.0.0", lp)) srv.listen(50) print(f"[*] {lp} -> {dh}:{dp}") while True: c, a = srv.accept() threading.Thread(target=handle, args=(c, dh, dp), daemon=True).start() except Exception as e: print(f"[!] Erro porta {lp}: {e}") if len(sys.argv) < 2: print("Uso: python3 pf.py <lport>:<dhost>:<dport> [...]") print("Ex: python3 pf.py 8080:127.0.0.1:80") print("Ex: python3 pf.py 10111:127.0.0.1:111 12049:127.0.0.1:2049") sys.exit(1) for arg in sys.argv[1:]: p = arg.split(":") if len(p) == 3: lp, dh, dp = int(p[0]), p[1], int(p[2]) elif len(p) == 2: lp, dh, dp = int(p[0]), "127.0.0.1", int(p[1]) else: print(f"[!] Formato invalido: {arg}") continue threading.Thread(target=listen, args=(lp, dh, dp), daemon=True).start() print("[*] Ctrl+C para sair") try: while True: threading.Event().wait(60) except KeyboardInterrupt: print("\n[*] Encerrando...") ``` Versão Mini: ```python #!/usr/bin/env python3 # Mini TCP Forwarder - Uso: python3 pf_mini.py lport:dhost:dport [...] import socket,threading,sys def f(a,b): try: while 1: d=a.recv(8192) if not d:break b.sendall(d) except:pass def h(c,dh,dp): try:s=socket.socket();s.connect((dh,dp));threading.Thread(target=f,args=(c,s),daemon=1).start();f(s,c) except:pass def l(lp,dh,dp): s=socket.socket();s.setsockopt(1,2,1);s.bind(("",lp));s.listen(9);print(f"[*]{lp}->{dh}:{dp}") while 1:c,_=s.accept();threading.Thread(target=h,args=(c,dh,dp),daemon=1).start() for a in sys.argv[1:]:p=a.split(":");threading.Thread(target=l,args=(int(p[0]),p[1]if len(p)>2 else"127.0.0.1",int(p[-1])),daemon=1).start() print("[*]Running");exec("while 1:__import__('time').sleep(99)") ``` Diminuindo ainda mais: ``` cat /tmp/pf_mini.py | base64 -w0 ```