Я хочу проанализировать данные буфера протокола, который сжат с помощью zlib. Я пытался распаковать его, но я не уверен, что я на правильном пути - PullRequest
0 голосов
/ 23 октября 2019

У меня есть файл буфера протокола, сжатый с помощью zlib.

Первоначально данные являются бессмысленными. Вот отрывок:

^Qù<8c>¬<8a>®ªÎÑ^QT<8a>ÉßDVVdfDddį|ñ¾¿ú<95>/Þ÷·ðßÿ^Uþû¿Á^?ÿwøïÿ±í^?ºïWfþjæÛ÷Åÿ*F<9b>j©ù<99>*~ܱí^?^DÜ_ÎüÅ}â¿O<80>s°8^L&<9e>^Hã^V^F^SO<86>q^K<83><89>§Â¸<85>ÁÄ<5>q^K<83><89><9f><84>q^K<83><89>^?^Oã^V^F^S?^Mã^V^F^S?^Kã^V^F^S?^Oã^V^FsaÜÂ`"3<82>v<80>â^R¤}Ä^QLÒ-<8e>å^K^U<81>f^D©¼ï<99>LÞmgßsRÛIwÖPÀ<8a>¸;<96>ç2<9d>U^?!MäÎÔIåZ9UÓ^O]^?;Ú^[<Qö^FO<94>½<81>Kæ^K<88>,^SUVö^PïY,ªìؾh<90>º^M+ª,Ï,^Rÿ<85>áðE<9<9d>ÖG^X¤}l¤i^]D<95>eY^HÄ^_5Ù<93>´©FнæKeHû<88>#Øóä}o<98>¼<83>Ø^B2Ò^[y^B^?}<80>kù<9a>YÔ×ô,È¿æ¹Ò×ÄÇ¡<9a>^C^K¾¼?^P,ï^O^DËû^C<81>òþ<92>äÙ^NPP%²LTYy^?Y<8d>P±¨rR^[m<93>^WU<96>å/s@ù^MGðX·¢Ê¾&<8f>´<8f>-X*zSd^D^]Ï£ÅHý<88>¢.<95>!³^ZÒ<8d> <9d>)^O^Dî^Lç^P)gJ^[~^M^?]<9a>^V0Ap%<93>S&ÝQSj<90>ÿ<9a>ç+vV^[0SÎ!yPÌffJ"õ¯<9d><9a><8f>÷Élð4<99>^MÔ<9f><8e>J<9e>"Mo<97>}^Q-^Ev^EzE½d¡<9c>²<82>§<81>ø3^NYa<9f>sÈt¬<9c>²<9¤~D¼<92>S<96>g4^^<89>ÿ® ^T¬+;<82>NðJ<90>ö^QGp<94>nr,ã<8a>@3<82>t<96>Ì^Fî'ç^Q¹¦<8¨ehÓÆ÷i+ÓaY^Qw^P­Ê<8d>ìùJ<9d>Å­$<85>^U<81><9a><9c>^W*¿æ* çIgß^_<83
ã^V^F^Sq^X·

Я распаковал его с помощью следующего кода javascript:

const fs = require('fs');
const pako = require('pako');

let binary_data = fs.readFileSync('input_data');
let data = pako.inflate(binary_data);
fs.writeFileSync('output', data);

Вывод все еще бессмысленный, но более структурированный. Вот выдержка:

^B^H2
^B^H<
^B^HF
^B^HS
^B^HT
^B^HU^Z6^H
^R2^R0^HÀ¤<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿ?^Z5^H
^R1^R/^H<80>¥<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^HÀ¥<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^H<80>¦<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^HÀ¦<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^H<80>§<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^HÀ§<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^H<80>¨<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^HÀ¨<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^H<80>©<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H
^R1^R/^HÀ©<80>þ^C^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿÿÿÿ^A^Pÿÿÿÿÿÿ?^Z5^H

Является ли этот вывод правильным?

Я хотел бы использовать protobfjs для просмотра данных, но я не могу заставить его работать. Похоже, что данные должны быть в формате .proto, а не в PFB или двоичном формате. Я полный noob со сжатием zlib и с данными буфера протокола. Если кто-то может предоставить указатель, я был бы очень признателен.

Редактировать: Эта переменная с именем «data», которая содержит результат pako.inflate (binary_data), является объектом. Он содержит ключи {0, 1, 2, ..., 997487}, причем каждое соответствующее значение является целым числом. Таким образом, выходные данные явно не являются протобуфальными данными.

...