Is it possible to send UDP datagrams over SOCKS5 proxy in Python using any SOCKS client lib? SocksiPy does not seem to work or maybe I am just using it wrong. The following code does not work, it tries to connect to the destination directly:
s = socks.socksocket ( socket.AF_INET, socket.SOCK_DGRAM )
s.setproxy(socks.PROXY_TYPE_SOCKS5,"socks.proxy.lan")
s.sendto ( payload, ( ip, port ) )
If I change SOCK_DGRAM
to SOCK_STREAM
the code does not work either, it does not try to connect anywhere then.
Have you tried to use connect() and send() instead of sendto()? Judging from the SocksiPy source code, connectionless mode isn't implemented.
Edit:
req = struct.pack('BBB', 0x05, 0x01, 0x00)
TCP stream connection (0x01) seems to be hardcoded here. SocksiPy as it is won't work.
Have you tried this:
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "socks.proxy.lan", 8080, True)
replace 8080 with the port and "True" is True if you want rdns enabled.
If you are using Python version 3 and above i suggest you use PySocks and it would be
socks.set_default_proxy(socks.PROXY_TYPE_SOCKS5, "socks.proxy.lan", 8080, True)