Распаковка IMAP дефлированного сообщения
У меня проблема с попыткой распаковать сообщение imap, сжатое методом deflate. До сих пор я пробовал изолировать одно из направлений диалога IMAP (используя функцию wirecark follow tcp) и сохранять данные сообщения в необработанном формате, который, я надеюсь, содержит только дефлированную часть сообщения. Затем я нашел некоторые программы, такие как tinf (1-й и 3-й пример) и miniz (пример tgunzip), и попытался раздувать этот файл, но безуспешно. Я что-то упустил? Заранее спасибо.
tinf - http://www.ibsensoftware.com/download.html Miniz - https://code.google.com/archive/p/miniz/source/default/source
1 ответ
Попробуйте передать эти необработанные данные:
perl -MCompress::Zlib -pe 'BEGIN{$i = inflateInit(-WindowBits => -15)}
$_=$i->inflate($_)'
Важной частью является -WindowBits => -15
который изменяет ожидаемый формат на необработанный без контрольной суммы adler.
(это взято из источника dovecot, у меня работает на Thunderbird для захвата сети gmail).
Из RFC4978, который определяет сжатие IMAP (выделено мое):
При использовании библиотеки zlib (см. RFC1951) для реализации этого расширения достаточно использовать функции deflateInit2(), deflate(), inflateInit2() и inflate (). Значение windowBits должно быть в диапазоне от -8 до -15, иначе deflateInit2 () использует неправильный формат. deflateParams() может использоваться для улучшения степени сжатия и использования ресурсов. Аргумент Z_FULL_FLUSH для deflate () может быть использован для очистки словаря (принимающий узел не должен ничего делать).