У меня есть apache2, работающий на localhost, и я хочу перехватить и изменить HTTP-запрос с моего localhost. Модифицируя, я хочу изменить атрибут Accept-Encoding заголовка на «identity». Используя Burp-Suite, он работает отлично. Однако, используя мой scapy-скрипт, кажется, что пакет уже отправлен, потому что HTTP-ответ по-прежнему кодируется.Python Scapy - перехватить и изменить http-пакет на localhost
scapy сценарий:
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\[email protected]\xc5\x13\xd3\x133\xf3\xf4\xf4\xf4l\xf4\[email protected]\[email protected]\x02\x95\x81m\x05\x00\x1c\x95F\x1d}\x00\x00\x00'
, который кодируется.
Может кто-нибудь помочь?
Burp-Suite - это прокси-сервер, а это не так. И localhost - это очень специальный интерфейс, который не имеет никакой сетевой задержки. Перехват и повтор не будут работать на localhost (в большинстве случаев). – grochmal