[英]Scapy proxy HTTP packet
我想发送一个HTTP数据包到31112端口,但是我想把IP标识头改成0xabcd。
我正在做的是将 iptables 用于目标端口为 31112 的任何数据包,将其重定向到队列:
iptables -A OUTPUT -p tcp --dport 31112-j NFQUEUE --queue-num 1
我还启用了转发:
sysctl -w net.ipv4.ip_forward=1
我的程序是这样的:
#!/usr/bin/env python
from netfilterqueue import NetfilterQueue
from scapy.all import *
def print_and_accept(pkt):
data = pkt.get_payload()
ip_h = IP(data)
print ('source: ' + ip_h[IP].src)
print ('destination: ' + ip_h[IP].dst)
print ('IP TTL: ' + str(ip_h[IP].ttl))
print (str (ip_h[TCP].payload))
ip_h[IP].ttl = 40
ip_h[IP].id = 0xabcd
#print (ip_h[IP].id)
del ip_h[IP].chksum
send(ip_h,verbose=0)
nfqueue = NetfilterQueue()
nfqueue.bind(1, print_and_accept)
try:
nfqueue.run()
except KeyboardInterrupt:
print ('\nProgram Ended')
而且,当我向目的地发送 curl 时:
curl http://serverexample.com:31112/
我在程序的输出中得到了这个:
source: 192.168.206.128
destination: 35.182.181.240
IP TTL: 64
奇怪的是我没有捕捉到这个:
打印(str(ip_h[TCP].payload))
我认为它一定是类似于“GET / HTTP/1.1”的东西以及可能跟随的任何标头。
我想知道是否有人可以发现问题。
问候
您更改了 TCP SYN 的来源,这意味着来自服务器的 SYN+ACK 被发送到您在来源处提供的 IP 地址 - 因此不会到达您的系统。 这意味着 TCP 握手将不会完成。 但应用程序数据(即 HTTP 消息)的传输将仅在完成 TCP 握手后完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.