我在尝试解压缩使用deflate方法压缩的imap消息时遇到问题。到目前为止我尝试过的东西是隔离IMAP对话的一个方向(使用wireshark的跟随tcp函数)并以原始格式保存消息数据,我希望它只包含泄露的消息部分。然后我找到了一些程序,如tinf(第1和第3个例子)和miniz(tgunzip示例),并尝试对该文件进行充气,但没有成功。 我错过了什么?提前谢谢。
tinf - http://www.ibsensoftware.com/download.html 迷你 - https://code.google.com/archive/p/miniz/source/default/source
答案 0 :(得分:0)
尝试将原始数据传递给:
perl -MCompress::Zlib -pe 'BEGIN{$i = inflateInit(-WindowBits => -15)}
$_=$i->inflate($_)'
重要的部分是-WindowBits => -15
,它将预期的格式更改为 raw ,而不使用adler校验和。
(源自dovecot源代码,适用于我在Thunderbird上进行gmail网络捕获)。
来自指定IMAP压缩的RFC4978(强调我的):
使用zlib库(参见RFC1951)时的功能 deflateInit2(),deflate(),inflateInit2()和inflate()就足够了 实现此扩展。 windowBits值必须在范围内 -8到-15,否则deflateInit2()使用错误的格式。 deflateParams()可用于提高压缩率和资源 使用。 deflate()的Z_FULL_FLUSH参数可用于清除 字典(接收对等体不需要做任何事情)。