Fra*_*meg 2 protocols protocol-buffers protobuf-net
我正在尝试从使用 protobuf 的程序创建的文件中获取原始 protobuf 消息。我不拥有源程序或任何东西,但我会对 的输出感到满意protoc --decode_raw。不幸的是,这不起作用,因为我收到“无法解析输入”错误。我相信这是因为文件中存在 protobuf 数据的标头。源程序是DOTA2,文件开头是这样的;
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
Run Code Online (Sandbox Code Playgroud)
在尝试解码此文件之前,我没有使用 protobuf 的知识或经验,因此我有点不确定标头在哪里结束以及 protobuf 消息在哪里开始。我非常有信心“ ..v1831/dota8 ”是标题的一部分,但删除它仍然会给我带来无法解析输入的问题。
我在网上查看了有关此类文件的任何具体信息(这是一个 DOTA2 演示下载),并且人们还制作了其他程序来执行此类任务,但我在标题上找不到明确的信息长度。我使用这个部分是为了了解 protobuf,所以使用另一个应用程序并不是我真正想要的。
作为参考,我打算最终在 vb.net 中实现此功能,因此我使用 protobuf-net (我不认为它与问题/答案相关,但以防万一)。
前 33 个字节是标头。标头以 8 字节序列“PBDEMS2\0”开始和结束(包括 \0,又名 NUL 字节)。protobuf 数据在第二个“PBDEMS2\0”(NUL 字节之后的字节)之后立即开始。
您只提供了数据的开头,因此当我尝试将其提供给protoc --decode_raw它时仍然会出错,因为数据过早结束。但手动解码数据似乎是这样开始的:
2: 44
3: "Valve Dota 2 EU North Server (srcds125.185.64)"
4: "SourceTV Demo"
5: "start"
6: "/opt/srcds/dota/dota_v1831/dota"
7: 2
8: 1
9: 1
10: ""
1: 4294967295 // (probably actually -1)
2: 0x02440b1a01100108
Run Code Online (Sandbox Code Playgroud)
然而,这是可疑的:请注意,字段编号逐渐增加,然后突然从 1 开始。还要注意,字段 2 第二次具有不同的类型。我认为我们在这里看到的实际上是多条消息——可能是不同类型的——连续的。
不幸的是,很难说你应该如何分辨一条消息在哪里结束,下一条消息从哪里开始。也许那个标题告诉你,但我不知道如何解码它。标头似乎不是 protobuf 格式。
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |