blob: 411d442ed47c23b915491da08bcaf1076da85f30 (
plain)
1
2
3
4
5
6
7
8
9
10
11
|
import socket, struct, fcntl
# Python socket module does not have this constant
SO_ORIGINAL_DST = 80
class Resolver:
def original_addr(self, csock):
odestdata = csock.getsockopt(socket.SOL_IP, SO_ORIGINAL_DST, 16)
_, port, a1, a2, a3, a4 = struct.unpack("!HHBBBBxxxxxxxx", odestdata)
address = "%d.%d.%d.%d" % (a1, a2, a3, a4)
return address, port
|