DevToys Web Pro iconDevToys Web ProBlog
Valutaci:
Prova l'estensione del browser:

Decoder / Encoder Protobuf

Decodificato
Formato:

Protobuf codificato in Base64

  • Campi decodificati (2)

  • Campo n.Tipo di wireValore
    1Varint(0)150
    2Length-delimited(2)testing
    Dettagli tecnici

    Come funziona il decoder Protobuf

    Cosa fa lo strumento

    Il decoder Protobuf analizza dati binari grezzi di Protocol Buffer senza richiedere un file di schema .proto, mostrando i numeri di campo, i tipi e i valori del wire format. Supporta anche la codifica di JSON di nuovo in binario protobuf quando fornisci una definizione .proto. Questo rende possibile ispezionare payload protobuf opachi catturati dal traffico di rete o memorizzati in database senza accesso allo schema originale.

    Casi d’uso comuni per sviluppatori

    Gli sviluppatori backend usano la decodifica protobuf senza schema per fare reverse engineering di API gRPC non documentate, fare debug di messaggi serializzati in topic Kafka o ispezionare payload binari in colonne di database. I ricercatori di sicurezza analizzano traffico di rete codificato in protobuf durante i penetration test. La modalità di codifica aiuta gli sviluppatori a verificare che le loro definizioni .proto producano l'output binario previsto prima di distribuire modifiche allo schema nei servizi di produzione.

    Formati, tipi o varianti dei dati

    I Protocol Buffers usano un wire format compatto con cinque wire type: varint (int32, int64, bool, enum), fixed a 64 bit (double, fixed64), length-delimited (string, bytes, messaggi incorporati, campi ripetuti packed), fixed a 32 bit (float, fixed32) e i tipi start/end group deprecati. Senza uno schema, il decoder non può distinguere tra una stringa e un messaggio incorporato (entrambi sono length-delimited), quindi tenta entrambe le interpretazioni e mostra il parsing più probabile.

    Errori comuni e casi limite

    La decodifica senza schema è intrinsecamente ambigua: un varint può essere un int32 con segno (zigzag), un uint32 senza segno o un booleano, e i campi a lunghezza delimitata possono essere stringhe, byte o messaggi annidati. I nomi dei campi vanno persi nella codifica binaria e compaiono solo come tag numerici di campo. I campi ripetuti packed appaiono identici a un singolo campo di byte senza il contesto dello schema. Confronta sempre l’output decodificato con qualsiasi documentazione disponibile per risolvere le ambiguità.

    Quando usare questo strumento rispetto al codice

    Usa questo strumento nel browser per un’ispezione rapida dei payload protobuf catturati quando non hai il file .proto o vuoi verificare la codifica senza configurare una toolchain di build. Per i sistemi in produzione, usa protoc con file di schema corretti, codice generato specifico per linguaggio e servizi di reflection gRPC che offrano piena sicurezza dei tipi, compatibilità in avanti e integrazione con il sistema di build della tua applicazione.