保存解码后的 Protobuf 内容
Saving decoded Protobuf content
我正在尝试设置一个 .py 插件,它将解码的 Protobuf 响应保存到文件中,但无论我做什么,结果总是以字节格式(未解码)文件。我也尝试通过在 Mitmproxy 中使用 "w" 来做同样的事情——尽管在屏幕上我看到了解码数据,但在文件中它又被编码了。
任何想法如何正确地做到这一点?
现在的示例代码:
import mitmproxy
def response(flow):
# if flow.request.pretty_url.endswith("some-url.com/endpoint"):
if flow.request.pretty_url.endswith("some-url.com/endpoint"):
f = open("test.log","ab")
with decoded(flow.response)
f.write(flow.request.content)
f.write(flow.response.content)
呃,我不确定这是否有帮助,但是如果您不以二进制模式打开文件会怎样
f = open("test.log","a")
?
嗨,
我发现的一些基本内容。
尝试替换
f.write(flow.request.content)
和
f.write(flow.request.text)
我在这个网站上看到的
https://discourse.mitmproxy.org/t/modifying-https-response-body-not-working/645/3
请阅读并尝试此操作以收集请求和响应。
MITM Proxy, getting entire request and response string
祝你的项目好运。
我找到了做到这一点的方法。似乎 mitmdump 或 mitmproxy 无法保存原始解码的 Protobuf,所以我使用:
mitmdump -s decode_script.py
使用以下脚本将解码后的数据保存到文件中:
import mitmproxy
import subprocess
import time
def response(flow):
if flow.request.pretty_url.endswith("HERE/IS/SOME/API/PATH"):
protobuffedResponse=flow.response.content
(out, err) = subprocess.Popen(['protoc', '--decode_raw'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate(protobuffedResponse)
outStr = str(out, 'utf-8')
outStr = outStr.replace('\"', '"')
timestr = time.strftime("%Y%m%d-%H%M%S")
with open("decoded_messages/" + timestr + ".decode_raw.log","w") as f:
f.write(outStr)
我正在尝试设置一个 .py 插件,它将解码的 Protobuf 响应保存到文件中,但无论我做什么,结果总是以字节格式(未解码)文件。我也尝试通过在 Mitmproxy 中使用 "w" 来做同样的事情——尽管在屏幕上我看到了解码数据,但在文件中它又被编码了。 任何想法如何正确地做到这一点?
现在的示例代码:
import mitmproxy
def response(flow):
# if flow.request.pretty_url.endswith("some-url.com/endpoint"):
if flow.request.pretty_url.endswith("some-url.com/endpoint"):
f = open("test.log","ab")
with decoded(flow.response)
f.write(flow.request.content)
f.write(flow.response.content)
呃,我不确定这是否有帮助,但是如果您不以二进制模式打开文件会怎样
f = open("test.log","a")
?
嗨,
我发现的一些基本内容。 尝试替换
f.write(flow.request.content)
和
f.write(flow.request.text)
我在这个网站上看到的 https://discourse.mitmproxy.org/t/modifying-https-response-body-not-working/645/3
请阅读并尝试此操作以收集请求和响应。 MITM Proxy, getting entire request and response string
祝你的项目好运。
我找到了做到这一点的方法。似乎 mitmdump 或 mitmproxy 无法保存原始解码的 Protobuf,所以我使用:
mitmdump -s decode_script.py
使用以下脚本将解码后的数据保存到文件中:
import mitmproxy
import subprocess
import time
def response(flow):
if flow.request.pretty_url.endswith("HERE/IS/SOME/API/PATH"):
protobuffedResponse=flow.response.content
(out, err) = subprocess.Popen(['protoc', '--decode_raw'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate(protobuffedResponse)
outStr = str(out, 'utf-8')
outStr = outStr.replace('\"', '"')
timestr = time.strftime("%Y%m%d-%H%M%S")
with open("decoded_messages/" + timestr + ".decode_raw.log","w") as f:
f.write(outStr)