Files
Hippolyzer/hippolyzer/lib/proxy/transport.py
Salad Dais a39d025a04 Move Circuit and Message to lib.base
Fairly invasive, but will help make lib.base useful again. No
more Message / ProxiedMessage split!
2021-06-03 07:00:32 +00:00

21 lines
746 B
Python

import socket
import struct
from hippolyzer.lib.base.network.transport import WrappingUDPTransport, UDPPacket
class SOCKS5UDPTransport(WrappingUDPTransport):
HEADER_STRUCT = struct.Struct("!HBB4sH")
@classmethod
def serialize(cls, packet: UDPPacket, force_socks_header: bool = False) -> bytes:
# Decide whether we need a header based on packet direction
if packet.outgoing and not force_socks_header:
return packet.data
header = cls.HEADER_STRUCT.pack(
0, 0, 1, socket.inet_aton(packet.far_addr[0]), packet.far_addr[1])
return header + packet.data
def send_packet(self, packet: UDPPacket) -> None:
self.transport.sendto(self.serialize(packet), packet.dst_addr)