J'essaie de récupérer les protobuf bruts d'un fichier créé par un programme qui utilise protobuf. Je ne possède pas le programme source ou quoi que ce soit, mais je serais heureux avec la sortie de protoc --decode_raw
. Malheureusement, cela ne fonctionne pas car j'obtiens l'erreur "Impossible d'analyser l'entrée". Je crois que c'est parce qu'il y a un en-tête pour les données protobuf dans le fichier. Le programme source est DOTA2 et les fichiers commencent comme ceci;Reconnaissance de la partie d'un fichier qui est un en-tête et des messages protobuf
50 42 44 45 4d 53 32 00 f0 54 0e 03 f7 bf 0d 03
01 ff ff ff ff 0f 7b 0a 08 50 42 44 45 4d 53 32
00 10 2c 1a 2e 56 61 6c 76 65 20 44 6f 74 61 20
32 20 45 55 20 4e 6f 72 74 68 20 53 65 72 76 65
72 20 28 73 72 63 64 73 31 32 35 2e 31 38 35 2e
36 34 29 22 0d 53 6f 75 72 63 65 54 56 20 44 65
6d 6f 2a 05 73 74 61 72 74 32 1f 2f 6f 70 74 2f
73 72 63 64 73 2f 64 6f 74 61 2f 64 6f 74 61 5f
76 31 38 33 31 2f 64 6f 74 61 38 02 40 01 48 01
52 00 08 ff ff ff ff 0f 11 08 01 10 01 1a 0b 44
02 82 e8 01 08 00 0a 00 0c 00 08 ff ff ff ff 0f
16 08 02 10 02 1a 10 d3 34 28 14 cc d1 85 c9 d1
41 e0 b3 46 47 06 20 08 ff ff ff ff 0f e7 03 08
03 10 03 1a e0 03 98 70 0f 20 d4 26 40 10 60 04
80 04 c0 b0 f5 e0 59 d1 48 40 01 61 91 17 80 01
b4 25 22 22 f4 c8 7d bc bc c1 d1 bd cc c9 8d 91
cd bd 90 bd d1 85 bd 90 bd d1 85 7d d9 c5 e0 cc
c4 bc 90 bd d1 85 e9 15 cc d1 85 c9 d1 29 06 20
4c bd d5 c9 8d 95 51 59 49 06 00 68 06 ac 06 20
Je ne connais pas ou de l'expérience en utilisant protobuf avant d'essayer de décoder ce fichier, donc je suis un peu incertain où les extrémités d'en-tête et le message protobuf commence. Je suis assez confiant que jusqu'à "..v1831/dota8" fait partie de l'en-tête, mais la suppression de cela me donne toujours le problème d'entrée d'analyser. J'ai regardé partout sur le net pour des détails sur ce type de fichier (c'est un téléchargement démo DOTA2) et il y a d'autres programmes que les gens ont fait qui font ce genre de tâche, mais je ne trouve pas de coupe nette informations sur la longueur de l'en-tête. J'utilise ceci en partie pour apprendre à propos de protobuf, donc utiliser une autre application n'est pas vraiment ce que je cherche. Pour référence, j'ai l'intention de finir par travailler avec vb.net et donc j'utilise protobuf-net (je ne sais pas si c'est lié à la question/réponse, mais c'est here juste au cas où).
Si vous pouviez fournir un vidage hexadécimal des données, je pourrais peut-être comprendre l'en-tête. Mais vous n'avez fourni que du texte, ce qui signifie qu'un tas de bits ont été perdus, donc je ne peux pas faire grand-chose. Ma meilleure estimation est que les 8 premiers octets sont un "nombre magique" et que les données protobuf commencent. –
@KentonVarda J'ai complètement raté votre commentaire jusqu'à il y a quelques minutes! J'ai mis à jour la question avec un vidage hexadécimal au lieu du texte. Des suppositions? – FraserOfSmeg