Telegram 解析电报中解密的加密_数据

Telegram 解析电报中解密的加密_数据,telegram,mtproto,Telegram,Mtproto,我试图通过电报中的秘密聊天(类似于自己的客户端)实现接收/发送消息,但在解释解密数据时遇到了一些问题。我已经读过了,但与我的数据不符 更具体地说:我收到一条消息(来自官方客户),上面写着“Test12”,解码结果(十六进制)是: 3C0000008917E31B0FF1C770B657C36AF705BDAC4BE2C0B2E0000000620000000DE91B0360000000038507C7CD5FA6F7C000000654657374313200 我们可以在这里找到从57字节(粗

我试图通过电报中的秘密聊天(类似于自己的客户端)实现接收/发送消息,但在解释解密数据时遇到了一些问题。我已经读过了,但与我的数据不符

更具体地说:我收到一条消息(来自官方客户),上面写着“Test12”,解码结果(十六进制)是:

3C0000008917E31B0FF1C770B657C36AF705BDAC4BE2C0B2E0000000620000000DE91B0360000000038507C7CD5FA6F7C000000654657374313200

我们可以在这里找到从57字节(粗体)开始的整个消息,以及(如果我没有弄错的话)长度(斜体)。但是如何匹配其他字节呢?在模式中,消息应该从8(salt)+8(会话id)+8(消息id)+4(序号)+4(消息数据长度)=32字节开始,而不是从57字节开始

此外,当我尝试发送更长的消息(超过256字节)时,“消息文本”从60字节开始,长度编码也有点奇怪:FE000400表示1024字节的消息,FE000200表示512字节(FE是什么意思?)


那么,有谁能给我一个模式或我做错了什么的线索吗?

好的,看来我已经设法解码了大部分信息。可能对某些人有用:

3C000000个“有价值”字节(如果需要,不包括在末尾使用随机字节填充)

8917E31B(=467867529),代码为(第17层)

0FF1C770B657C36AF705BDAC4BE2C0B序列化随机字节数组(应至少包含15个字节),of=15-当前数量

2E000000似乎是最小层的数目

01000000 in_seq_no,(1-1)/2=0收到的消息,请参阅

62000000 out_seq_no,62/2=49条已发送消息,请参阅(消息发送者未启动该聊天)

#36b091de的DE91B036代码

00000000不知道

38507C7CD5FA6F7C似乎是randomId(可能与传输的消息相同?)

00000000真的不知道,可能是ttl

0654657374313200序列化字符串:前两个字节(06)的平均长度。如果数量超过254,则替换为DE(=254),并且可以从接下来的3个字节中找到长度(在我的“提到的”案例中从60个位置开始)。字符串字节后跟than(平均Test12),并用0-3个空字节(00)填充

然后用随机字节(0-15)填充结果,形成完整的16字节块。

注:SIgnal by是安全文本系统的黄金标准。