Dekoder / enkoder Protobuf
Protobuf zakodowany w Base64
Zdekodowane pola (2)
| Pole # | Typ Wire | Wartość |
|---|---|---|
| 1 | Varint(0) | 150 |
| 2 | Length-delimited(2) | testing |
Szczegóły techniczne
Jak działa dekoder Protobuf
Co robi narzędzie
Dekoder Protobuf parsuje surowe binarne dane Protocol Buffer bez konieczności posiadania pliku schematu .proto, wyświetlając numery pól, typy i wartości w formacie wire. Obsługuje też kodowanie JSON z powrotem do binarnego protobuf, gdy podasz definicję .proto. Dzięki temu można analizować nieprzejrzyste ładunki protobuf przechwycone z ruchu sieciowego lub zapisane w bazach danych bez dostępu do oryginalnego schematu.
Typowe zastosowania dla programistów
Programiści backendowi używają dekodowania protobuf bez schematu do reverse engineeringu nieudokumentowanych API gRPC, debugowania zserializowanych wiadomości w tematach Kafka lub inspekcji binarnych ładunków w kolumnach bazy danych. Badacze bezpieczeństwa analizują ruch sieciowy zakodowany w protobuf podczas testów penetracyjnych. Tryb kodowania pomaga programistom zweryfikować, że ich definicje .proto generują oczekiwane wyjście binarne przed wdrożeniem zmian schematu do usług produkcyjnych.
Formaty danych, typy lub warianty
Protocol Buffers używają zwartego formatu wire z pięcioma typami wire: varint (int32, int64, bool, enum), stały 64-bit (double, fixed64), z ograniczeniem długości (string, bytes, wiadomości zagnieżdżone, pakowane pola powtarzane), stały 32-bit (float, fixed32) oraz przestarzałe typy grup start/end. Bez schematu dekoder nie potrafi odróżnić stringa od wiadomości zagnieżdżonej (oba są typu length-delimited), więc próbuje obu interpretacji i pokazuje najbardziej prawdopodobny wynik parsowania.
Typowe pułapki i przypadki brzegowe
Dekodowanie bez schematu jest z natury niejednoznaczne — varint może być signed int32 (zigzag), unsigned uint32 albo wartością logiczną, a pola o długości ograniczonej mogą być ciągami znaków, bajtami lub zagnieżdżonymi wiadomościami. Nazwy pól giną w kodowaniu binarnym i występują wyłącznie jako numeryczne tagi pól. Spakowane pola powtarzane wyglądają identycznie jak pojedyncze pole bytes bez kontekstu schematu. Zawsze porównuj zdekodowany wynik z dostępną dokumentacją, aby rozstrzygnąć niejednoznaczności.
Kiedy używać tego narzędzia zamiast kodu
Użyj tego narzędzia w przeglądarce do szybkiej inspekcji przechwyconych ładunków protobuf, gdy nie masz pliku .proto lub chcesz zweryfikować kodowanie bez konfigurowania toolchainu do budowania. W systemach produkcyjnych używaj protoc z właściwymi plikami schematu, generowanym kodem specyficznym dla języka oraz usługami refleksji gRPC, które zapewniają pełne bezpieczeństwo typów, kompatybilność w przód i integrację z systemem budowania Twojej aplikacji.