2017-03-02 83 views
1

我有一个问题,试图解压缩使用泄气方法压缩的imap消息。到目前为止,我尝试过的东西是隔离IMAP对话的一个方向(使用wireshark的跟踪tcp函数),并以原始格式保存消息数据,我希望它只包含泄漏的消息部分。然后我发现了一些程序,比如tinf(第一个和第三个例子)和miniz(tgunzip例子),并尝试将这个文件膨胀,但没有成功。 我错过了什么?先谢谢你。解压缩IMAP泄气消息

TINF - http://www.ibsensoftware.com/download.html Miniz - https://code.google.com/archive/p/miniz/source/default/source

+0

IMAP压缩整个流,而不仅仅是消息,所以你不能从其上下文中删除消息。该消息取决于较早的字节。在CRLF之后,您必须从服务器说OK的地方开始放气至COMPRESS DEFLATE命令。 Tinf看起来应该减压,*如果*你得到剪切和粘贴的权利。 – arnt

+0

不幸的是它不起作用。仍然得到膨胀()失败状态-3 – veliki

+0

注意你的剪切和粘贴。 – arnt

回答

0

尝试管道是原始数据:

perl -MCompress::Zlib -pe 'BEGIN{$i = inflateInit(-WindowBits => -15)} 
          $_=$i->inflate($_)' 

的重要组成部分,是改变预期的格式转换成原料一个没有阿德勒校验-WindowBits => -15

(这是源自鸽舍源,适用于我在Thunderbird到Gmail网络捕获)。

RFC4978指定IMAP压缩(重点煤矿):

当使用zlib库(见RFC1951),则各功能 deflateInit2(),放气(),inflateInit2()和膨胀()可以用 实现这个扩展。 windowBits值必须在 -8到-15的范围内,否则deflateInit2()将使用错误的格式。 deflateParams()可用于提高压缩率和资源 的使用。 deflate()的Z_FULL_FLUSH参数可用于清除字典(接收方不需要执行任何操作)。