繁体   English   中英

Scapy代理HTTP数据包

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM