Files
Hippolyzer/hippolyzer/lib/proxy/transport.py
2021-06-14 13:48:30 +00:00

21 lines
742 B
Python

import socket
import struct
from hippolyzer.lib.base.network.transport import SocketUDPTransport, UDPPacket
class SOCKS5UDPTransport(SocketUDPTransport):
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)