2017-10-23 19 views
0

zlibはalghorithmで数週間苦労しています。Zlibが予期せぬ圧縮解除エラーを膨らませます

私はTibiaという人気ゲームからパケットを解凍したいと思います。彼らはzlibがアルゴリズムを膨らませてそれを圧縮しました。しかし、何かが変わったようです。あなたはそれを確認できますか、多分私は行方不明のものを見つけるでしょうか?圧縮

パケット: - :使用ZLIBのDEFLATEで圧縮

B4 16 2D 00 59 6F 75 20 73 65 65 20 61 20 6A 61 63 6B 65 74 20 28 41 72 6D 3A 31 29 2E 0A 49 74 20 77 65 69 67 68 73 20 32 34 2E 30 30 20 6F 7A 2E 

解凍パケット

DA 22 A6 CB 10 99 5F AA 50 9C 9A AA 90 A8 90 05 B4 2F B5 44 41 C3 B1 28 D7 CA 50 53 8F CB B3 44 A1 3C 35 33 3D A3 58 C1 C8 44 CF C0 40 21 BF 4A 0F 

パケットがリバースエンジニアリングを使用して解凍 - 直接(おそらくその生ハフマン符号化固定)膨張させることができませんサイバーシェフの収縮/ PHP収縮機能:

db 22 a6 cb 10 99 5f aa 50 9c 9a aa 90 a8 90 95 98 9c 9d 5a a2 a0 e1 58 94 6b 65 a8 a9 c7 e5 59 a2 50 9e 9a 99 9e 51 ac 60 64 a2 67 60 a0 90 5f a5 07 00 

データはいくつかの場所で一致しますが、一般的には異なるデータです。あなたはどういう場合があるか知っていますか?

私は膨張機能をREから画像を添付:Screenshot from IdaPro

///編集: 私はいくつかのパケットの前に00 00 FFのFFを追加し、それをresetingせずにパケットを持つzstreamを供給することにより、この問題を解決するために管理しています。とにかく、私はまだすべてのパケットを膨らませることができません。ここで

は、正しい順序でパケットです: - 正しく

  • http://wklej.org/hash/bd371e7f510/txt/を膨らま - 正しく
  • http://wklej.org/hash/8f15935dc15/txt/を膨らま -

    1. http://wklej.org/hash/6aee9e223f0/txt/正しく

    そして、ここで膨張させて膨張することができないパケットであります...

    CA059BC6043619009FC9FFFFE831 
    
  • 答えて

    0

    膨らませることのできないパケットは、より長い圧縮データストリームの一部であり、その前に他のパケットが続きます。圧縮解除を成功させるには、すべてを単一のストリームとして解凍する必要があります。

    +0

    正直言って、メモリから入力された16進ストリームをコピーし、渡された長さパラメータで長さが確認され、出力バッファがコピーされました。奇妙なことにどこでもそれを膨らませることはできません...それはzlibが膨らみ、inflateが-15パラメータで開始されました...これでパケットでパケットを解凍する必要があるのでしょうか? – Mateusz

    +0

    圧縮は、以前のデータを参照することによって機能します。そのパケットは、前のパケットになければならないデータを参照しています。また、パケットには最後のブロックではない固定ブロックがあるため、後続の圧縮データが必要です。 –

    +0

    まあ、私はパケットを膨張させる前に00 00 ff ffを追加して解決策を見つけました。しかし、それはすべてのパケットに対して機能しません... Z_SYNC_FLUSHでzlibストリームに関する信頼できるマニュアルを知っていますか?短いパケットでは、「無効な格納ブロック長」を受け取る。私は例で質問を更新しました – Mateusz

    関連する問題