I'm not comfortable with twisting or scapy, but it's pretty simple to do this with vanilla python sockets. An added benefit of this is that it will be even more portable. This code works in my limited tests:
#!/usr/bin/python from socket import * bufsize = 1024 # Modify to suit your needs targetHost = "somehost.yourdomain.com" listenPort = 1123 def forward(data, port): print "Forwarding: '%s' from port %s" % (data, port) sock = socket(AF_INET, SOCK_DGRAM) sock.bind(("localhost", port)) # Bind to the port data came in on sock.sendto(data, (targetHost, listenPort)) def listen(host, port): listenSocket = socket(AF_INET, SOCK_DGRAM) listenSocket.bind((host, port)) while True: data, addr = listenSocket.recvfrom(bufsize) forward(data, addr[1]) # data and port listen("localhost", listenPort)
Benson
source share