我在本地主机上运行apache2,我希望从本地主机拦截和修改http请求。通过修改,我希望将标头的Accept-Encoding属性更改为“identity”。使用Burp-Suite,它工作得很好。但是,使用我的替罪羊脚本,似乎已经发送了数据包,因为http响应仍然是编码的。
替罪羊剧本:
from scapy.all import *
def intercept(pkt):
if pkt.haslayer(Raw):
http_content = pkt.getlayer(Raw).load
http_content = http_content.replace("Accept-Encoding: gzip, deflate", "Accept-Encoding: identity")
pkt[Raw].load = http_content
print pkt.show()
send(pkt)
def main():
sniff(iface='lo', filter='tcp port 80', prn=intercept)
if __name__ == '__main__':
main() 这就是我得到的回应:
<skipped>
###[ Raw ]###
load = 'HTTP/1.1 200 OK\r\nDate: Thu, 11 Aug 2016 09:34:38 GMT\r\nServer: Apache/2.4.23 (Debian)\r\nLast-Modified: Thu, 11 Aug 2016 09:34:25 GMT\r\nETag: "7d-539c878b8f8fd-gzip"\r\nAccept-Ranges: bytes\r\nVary: Accept-Encoding\r\nContent-Encoding: gzip\r\nContent-Length: 103\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xb3\xc9(\xc9\xcd\xb1\xe3\xb2\xc9HML\xb1\xe3RPP\xb0)\xc9,\xc9I\xb5\xf3H\xcd\xc9\xc9W\x08\xcf/\xcaI\xb1\xd1\x87\x08q\xd9\xe8CT\xd9$\xe5\xa7TB\x14g\x18!\xabT\x04\xaa0\x82H\x14@\xc5\x13\xd3\x133\xf3\xf4\xf4\xf4l\xf4\x0b@\x06@t\x02\x95\x81m\x05\x00\x1c\x95F\x1d}\x00\x00\x00'它被编码了。
有人能帮忙吗?
发布于 2016-08-29 14:40:49
据我所知,替罪羊并没有赋予您修改已经由您的系统创建的数据包的能力。当然,您可以手工和检查数据包,但不能修改已经创建的数据包。正如正确指出的那样,here Scapy在不干扰主机IP堆栈的情况下嗅探数据包。但是对于Linux,您可以尝试将scapy与nfqueue模块结合起来。nfqueue模块允许您修改(使用替罪羊)符合特定iptables规则的数据包。
https://stackoverflow.com/questions/38893427
复制相似问题