![](/img/trans.png)
[英]Python/iptables: Capturing all UDP packets and their original destination
[英]Python/iptables: Original Destination IP
我正在嘗試獲取使用iptables重定向的數據包的原始目標信息(最終目標是將所有網絡流量重定向到localhost,同時保留原始目標IP)。
我正在使用以下代碼發送數據包:
import socket
HOST = '192.168.10.1'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(b'whatever')
s.close()
然后重定向它:
iptables -t nat -A OUTPUT -d 192.168.10.1 -j DNAT --to 127.0.0.1
然后接收它們:
import socket
HOST = ''
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
while True:
s.listen(5)
conn, addr = s.accept()
print('Connected by', addr)
data = conn.recv(1024)
if(data):
print(data)
conn.close()
我試過用類似的東西
dst = conn.getsockopt(socket.SOL_IP, socket.SO_ORIGINAL_DST, 16)
但這會導致
AttributeError: 'module' object has no attribute 'SO_ORIGINAL_DST'
一些進一步的閱讀和嘗試導致我的錯誤。 我對我讀過的各種方法和丟失的軌道感到有些困惑。 線索是定義SO_ORIGINAL_DST(在本例中為TCP)。
這段代碼(取自這里 )完全符合我的要求:
SO_ORIGINAL_DST = 80
sockaddr_in = conn.getsockopt(socket.SOL_IP,
SO_ORIGINAL_DST, 16)
(proto, port, a, b, c, d) = struct.unpack('!HHBBBB', sockaddr_in[:8])
print('Original destination was: %d.%d.%d.%d:%d' % (a, b, c, d, port))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.