WinDivert:更改tcp p中的GET请求

2024-05-31 23:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用pydivert(pydivert for python)更改简单的GET请求

我似乎遇到了数据包长度的问题。
当我重写url以使其字母数量相同或更少时:
GET /?a=asdf=>;GET /?a=z

但是当我在请求中添加更多的字母时,浏览器就会循环并结束 什么都不显示

下面是我使用的示例代码

filter_ = "true and tcp.PayloadLength > 0" 
with Handle(filter=filter_) as handle:

 while True:

        packet = handle.receive()

        if packet.payload[0:3]=="GET":
            packet.payload=packet.payload.replace("GET /?a=asdf","GET /?a=gfdsazzz")
        handle.send(packet)

以及

^{pr2}$

是否有规定的最大数据包大小。如果是,那么如何增加?在

如果这是一个提示,那么如果我将打印所有的包在控制台 然后我清楚地看到服务器响应了请求,因为看到了吗数据包.有效载荷使用gfdsazzz


Tags: urlforget数量packet字母filter数据包
1条回答
网友
1楼 · 发布于 2024-05-31 23:35:43

直接的问题是您没有更新TCP/IP报头来反映新的数据包长度。在

然而,还有其他更严重的问题:

  1. 如您所述,新数据包可能超过最大数据包大小(MTU)
  2. TCP Seq/Ack号需要更改,并且不再在连接的两端同步。在
  3. 编辑:另一个问题是URL可能在多个包之间被分割,特别是对于长URL。在

第二和第三个问题不容易解决。在

如果您希望使用windriver修改TCP流,一个更好的解决方案是使用windriver将流量重定向到本地代理服务器,并让代理服务器编辑流。有关使用此思想的示例程序,请参见TorWall。在

相关问题 更多 >