使用 mitmproxy 更改 HTTPResponse 中的图像
Change images in HTTPResponse with mitmproxy
对于一个学校项目,我们在 Kali Linux 上设置了 mitmproxy。最后,我们能够安装 mitmproxy,现在我们可以拦截客户端设备的 HTTPS 包,这些客户端设备作为我们 Raspberry Pi 的 WLAN 客户端浏览网站。我们的目标之一是更改 HTTPS 包中的图像,我们真的很想在我们的项目中实现这一目标。重点来了,我无法使用 Python 3 个内联脚本。这就是我目前的状态。
#!/usr/bin/python3
# modify_response.py
import sys
import os
from io import StringIO
from mitmproxy.net.http import encoding
from mitmproxy.net.http import headers
from mitmproxy.net import http
from PIL.Image import core as _imaging
def response(flow):
flow.response.headers["newheader"] = "response-flow"
if flow.response.headers.get("content-type", "").startswith("image"):
decoded_response = decode(flow.response)
with decoded(flow.respnse):
print('OK')
os.system('"./script2.py" "Decoded response: {}"'.format(decoded_response))
try:
img = cStringIO.StringIO(open('6868132.png', 'rb').read())
flow.response.content = img.getvalue()
except:
os.system('"./script2.py" "Error occured"')
不幸的是,即使对于名为 "content-type" 的 header 的值以 "image".
开头的请求,if 条件似乎也不为真
我在这里引用这个网站 https://sunu.in/manipulating-http-traffic-with-mitmproxy/ 因为我想实现他们在那里所做的同样的事情。但他们可能使用了相当旧的 mitmproxy 版本,而我们使用的是 2.0.2(如果我没记错的话)。
我是 Python 的新手,为了理解我的代码的作用,我花了几个小时学习在线教程。你能帮我更改 HTTPResponse 中的图像吗?
我在 mitmproxy 论坛上发布了同样的问题,并在那里收到了答案。提供的答案包含我正在寻找的 python 脚本行:
def response(flow):
if flow.response.headers.get("content-type", "").startswith("image"):
img = open("file.png", "rb").read()
flow.response.content = img
flow.response.headers["content-type"] = "image/png"
对于一个学校项目,我们在 Kali Linux 上设置了 mitmproxy。最后,我们能够安装 mitmproxy,现在我们可以拦截客户端设备的 HTTPS 包,这些客户端设备作为我们 Raspberry Pi 的 WLAN 客户端浏览网站。我们的目标之一是更改 HTTPS 包中的图像,我们真的很想在我们的项目中实现这一目标。重点来了,我无法使用 Python 3 个内联脚本。这就是我目前的状态。
#!/usr/bin/python3
# modify_response.py
import sys
import os
from io import StringIO
from mitmproxy.net.http import encoding
from mitmproxy.net.http import headers
from mitmproxy.net import http
from PIL.Image import core as _imaging
def response(flow):
flow.response.headers["newheader"] = "response-flow"
if flow.response.headers.get("content-type", "").startswith("image"):
decoded_response = decode(flow.response)
with decoded(flow.respnse):
print('OK')
os.system('"./script2.py" "Decoded response: {}"'.format(decoded_response))
try:
img = cStringIO.StringIO(open('6868132.png', 'rb').read())
flow.response.content = img.getvalue()
except:
os.system('"./script2.py" "Error occured"')
不幸的是,即使对于名为 "content-type" 的 header 的值以 "image".
开头的请求,if 条件似乎也不为真我在这里引用这个网站 https://sunu.in/manipulating-http-traffic-with-mitmproxy/ 因为我想实现他们在那里所做的同样的事情。但他们可能使用了相当旧的 mitmproxy 版本,而我们使用的是 2.0.2(如果我没记错的话)。
我是 Python 的新手,为了理解我的代码的作用,我花了几个小时学习在线教程。你能帮我更改 HTTPResponse 中的图像吗?
我在 mitmproxy 论坛上发布了同样的问题,并在那里收到了答案。提供的答案包含我正在寻找的 python 脚本行:
def response(flow):
if flow.response.headers.get("content-type", "").startswith("image"):
img = open("file.png", "rb").read()
flow.response.content = img
flow.response.headers["content-type"] = "image/png"