【发布时间】:2013-08-29 07:12:16
【问题描述】:
我有一个 GDB 核心转储,其中包含 MIME 多部分/表单数据请求消息的标头和正文。我需要以某种方式准确地重新创建消息并将其发送到我的服务器,以便我可以调试我的代码崩溃的原因。
消息来自一个相当标准的表单数据页面。所有的内容类型都是 text/plain,除了一个是 image/jpeg。
问题是正文的二进制部分已经有了边界,所以我不能只提取二进制部分并通过内置的 Python MIME 代码自动生成标题。
再次,我需要准确地重新创建初始消息。最简单的方法是什么?
【问题讨论】:
-
你是什么意思“身体的二进制部分已经有边界”?
email.parser.Parser().parsestr(text)将正确解析具有多部分边界的多部分 MIME 消息。您可以创建一个简单的示例并将其上传到某个地方吗?或者显示您使用的不起作用的代码,以及回溯(或者如果不是异常,则说明失败的地方)? -
另外,您所说的“最初的消息到底是怎样的”是什么意思?它可能最初是一堆单独的文件,然后是 Web 浏览器使用的某种内部格式的某种东西(或 Python 的
email.mime库,或一些 PHP 库,或其他),然后是 RFC2822文本 MIME 附件。最后一个正是你已经拥有的;前面的没有意义。 -
让我尝试一个不同的问题:确切地说,您拥有的数据与您想要的数据有何不同?
-
好的,所以我使用 GDB 创建了正文的二进制转储。我最初使用以下 python 脚本:
codeimport requests # ... # filepath = 'C:\binbin' url = '9.19.145.251:8080' files = {'file': ('userfile', open('binbin' , 'rb'))} data = {'account_id': 'root'} headers = {'content-type': 'multipart/form-data'} res = requests.post(url, files=files, data=data ,标题=标题)code。问题是二进制转储不是原始数据。从捕获时开始,它就已经有了标题和边界。
标签: python tcp mime-types mime