我试图用pydivert改变简单的GET请求(WinDivert for python)
我似乎遇到的是数据包长度问题
当我重写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)
和
<?php
echo $_GET['a'];
?>
是否设置了MAX数据包大小。如果是,那么如何增加呢?
如果这对您有所提示,那么我是否会在控制台中打印所有数据包
然后我清楚地看到服务器响应了该请求,因为请参阅包含gfdsazzz
答案 0 :(得分:2)
当前的问题是您没有更新TCP / IP标头以反映新的数据包长度。
然而,还有其他更严重的问题:
第二和第三个问题不容易修复。
如果您希望使用WinDivert修改TCP流,更好的解决方案是使用WinDivert将流量重定向到本地代理服务器,并让代理服务器编辑流。有关使用此提示的示例程序,请参阅TorWall。