Protobuf dekoderis / enkoderis
Base64 koduotas protobuf
Iškoduoti laukai (2)
| Laukas # | Laido tipas | Reikšmė |
|---|---|---|
| 1 | Varint(0) | 150 |
| 2 | Length-delimited(2) | testing |
Techninė informacija
Kaip veikia Protobuf dekoderis
Ką daro įrankis
Protobuf dekoderis analizuoja neapdorotus Protocol Buffer dvejetainius duomenis nereikalaudamas .proto schemos failo ir parodo „wire-format“ laukų numerius, tipus ir reikšmes. Jis taip pat palaiko JSON kodavimą atgal į protobuf dvejetainį formatą, kai pateikiate .proto apibrėžimą. Tai leidžia tikrinti nepermatomus protobuf „payload“ duomenis, užfiksuotus iš tinklo srauto ar saugomus duomenų bazėse, neturint prieigos prie originalios schemos.
Dažniausi kūrėjų naudojimo atvejai
Backend programuotojai naudoja protobuf dekodavimą be schemos, kad atliktų atvirkštinę inžineriją nedokumentuotoms gRPC API, derintų serializuotas žinutes Kafka temose arba tikrintų dvejetainius „payload“ duomenis duomenų bazės stulpeliuose. Saugumo tyrėjai analizuoja protobuf formatu užkoduotą tinklo srautą atliekant įsiskverbimo testus. Kodavimo režimas padeda programuotojams patikrinti, ar jų .proto apibrėžimai sukuria tikėtiną dvejetainę išvestį prieš diegiant schemos pakeitimus į produkcines paslaugas.
Duomenų formatai, tipai arba variantai
Protocol Buffers naudoja kompaktišką „wire format“ su penkiais „wire“ tipais: varint (int32, int64, bool, enum), 64 bitų fiksuotas (double, fixed64), ilgio apribotas (string, bytes, įterptos žinutės, supakuoti pasikartojantys laukai), 32 bitų fiksuotas (float, fixed32) ir pasenę pradžios/pabaigos grupių tipai. Be schemos dekoderis negali atskirti eilutės nuo įterptos žinutės (abu yra ilgio apriboti), todėl bando abi interpretacijas ir parodo labiausiai tikėtiną analizę.
Dažniausios klaidos ir kraštiniai atvejai
Dekodavimas be schemos iš prigimties yra dviprasmiškas — varint gali būti pasirašytas int32 (zigzag), nepasirašytas uint32 arba loginė reikšmė, o ilgiu apriboti laukai gali būti eilutės, baitai arba įdėtinės žinutės. Laukų pavadinimai dvejetainėje koduotėje prarandami ir pasirodo tik kaip skaitinės laukų žymos. Supakuoti pasikartojantys laukai be schemos konteksto atrodo identiškai vienam bytes laukui. Visada sulyginkite dekoduotą išvestį su bet kokia prieinama dokumentacija, kad pašalintumėte dviprasmybes.
Kada naudoti šį įrankį, o kada kodą
Naudokite šį naršyklės įrankį greitai peržiūrai užfiksuotų protobuf naudingųjų apkrovų, kai neturite .proto failo arba norite patikrinti koduotę nenustatydami kūrimo įrankių grandinės. Gamybinėms sistemoms naudokite protoc su tinkamais schemos failais, konkrečiai kalbai sugeneruotu kodu ir gRPC refleksijos paslaugomis, kurios užtikrina pilną tipų saugą, suderinamumą į priekį ir integraciją su jūsų programos kūrimo sistema.