Mi è stato chiesto di elaborare alcuni file serializzati come oggetti binari (non testo/JSON purtroppo) Thrift, ma non ho accesso al programma o al programmatore che ha creato i file, quindi non ho idea della loro struttura, ordine dei campi, ecc. Esiste un modo per utilizzare le librerie di Thrift per aprire un file binario e analizzarlo, ottenendo un elenco di tipi di campi, valori, nidificazione, ecc.?Come si può decodificare un file di risparmio binario?
risposta
Sfortunatamente sembra che il protocollo binario di Thrift non esegua assolutamente alcuna codifica dei dati; per decodificare sembra presumere di avere in mano il file .thrift in modo che tu sappia, per esempio, che i prossimi 4 byte siano un numero intero e che non siano effettivamente la prima metà di un float. Quindi sembra che tu sia bloccato, fondamentalmente, guardando i file in un editor esadecimale (o equivalente) e cercando di dedurre i campi in base ai pattern esatti che stai vedendo.
ci sono pochissimi pezzi utile:
Ogni file inizia con un numero di versione, stringa di identificatore di protocollo, e la sequenza. Le mappe inizieranno con 6 byte che identificano i tipi di chiavi e valori (i primi due byte, come codici interi) più il numero di elementi come un intero di 4 byte. I codici di tipo sembrano essere standard (la posizione canonica delle loro definizioni sembra essere TProtocol.h nelle sorgenti di Thrift, ad esempio un valore booleano è specificato dal codice tipo 2, stringa UTF-8 per tipo codice 16 e così via) . Le stringhe sono precedute da un campo di lunghezza intera di 4 byte e gli elenchi sono preceduti dal tipo (1 byte) e da una lunghezza di 4 byte. Sembra che tutti i campi interi siano salvati big-endian e che i punti fluttuanti siano salvati nel formato IEEE (il che dovrebbe rendere il doppio relativamente facile da trovare, almeno).
I file TBinaryProtocol * in Thrift hanno alcuni altri dettagli utili; sul lato positivo, ci sono una serie di diverse implementazioni in modo da poter leggere quelle implementate nella lingua con la quale si è più a proprio agio.
Scusa, so che probabilmente non è molto utile, ma sembra davvero che questa sia tutta l'informazione fornita dal formato binario di risparmio; chiaramente il formato binario è stato progettato con l'intento di conoscere sempre le specifiche esatte del protocollo e che l'obiettivo era minimizzare lo spazio del filo, piuttosto che renderlo facilmente decodificabile alla cieca.
- 1. Android con SQLCipher - come si può decodificare?
- 2. Come decodificare un file javascript
- 3. Python, come decodificare binario decimale codificato (BCD)
- 4. Come può un binario C++ sostituirsi?
- 5. Come si può forzare Mercurial (hg) a trattare un file come binario?
- 6. Può Fortran leggere i byte direttamente da un file binario?
- 7. Come si legge un file binario tramite HTTP nel nodo?
- 8. risparmio si fonde con KDiff3 con TortoiseSVN
- 9. Come aggiungere dati a un file binario?
- 10. Come decodificare un file dalla codifica Base64 con JavaScript
- 11. Generazione di un file binario casuale
- 12. Python come scrivere in un file binario?
- 13. In c, come si può bloccare un descrittore di file?
- 14. Impossibile scrivere un file binario
- 15. Come posso generare un file PDF da un file binario?
- 16. leggere un file binario (python)
- 17. Un telefono Android può decodificare e riprodurre un file * .caf con codec iLBC?
- 18. Invio di un file binario in Tornado
- 19. Distribuisci e fornisci un servizio di risparmio
- 20. Deserializzare parte di un file binario
- 21. Cercando di decodificare un virus
- 22. Come sovrascrivere alcuni byte di un file binario con dd?
- 23. Come codificare/decodificare i messaggi di Kafka usando il codificatore binario Avro?
- 24. Come leggere o decodificare il file composer.lock?
- 25. Come decodificare i file crittografati con ionCube?
- 26. Codeigniter non può decodificare la password crittografata
- 27. Come si crea un albero di ricerca binario in Clojure?
- 28. Come posso decodificare un HMAC?
- 29. risparmio al parquet sottopartizione
- 30. decodificare un flusso di file utilizzando UTF-8
Suppongo che tu stia parlando di http://incubator.apache.org/thrift/ - potresti voler postare/tagare quale lingua stai usando. – TrueWill