DevToys Web Pro iconDevToys Web ProBlog
Oceń nas:
Wypróbuj rozszerzenie przeglądarki:

Dekoder / enkoder Protobuf

Zdekodowane
Format:

Protobuf zakodowany w Base64

  • Zdekodowane pola (2)

  • Pole #Typ WireWartość
    1Varint(0)150
    2Length-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.