电报:从电报客户端获取fileid

Beh*_*z.M 14 android reverse-engineering telegram mtproto telegram-bot

电报机器人fileid用来下载文件.我如何fileid从Telegram客户端(My Unofficial版本)获取此信息?mtproto具有此位置类的文件指示其地址.

文件位置参数

  • dc_id int保存文件的数据中心的编号
  • volume_id long服务器卷
  • local_id int文件ID
  • 秘密 长校验和访问文件

问题是我不知道如何生成fileid适合File Location类中机器人的那个.

更新1:

我试过做一些逆向工程.所以,我发现File Location课堂和课堂之间有一些关系FileId.

这是我的File Location 样本地址.

  • id:0 //此字段仅适用于秘密聊天
  • access_hash:0 //此字段仅适用于秘密聊天
  • volume_id: ( )429640340199BCA94 HEX
  • secret:-3528741004939935589(CF0764C08833409B HEX)//根据TG文档,它应该是文件CheckSum
  • local_id: ()60051775 HEX

根据我从Bot中检索FileID到的前一FileLocation课,这是我的意思:

  • FILEID: AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI

很明显,FileID价值是Base64格式的.所以我把它解码了:

  • 十六进制价值: 0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202

现在我们可以看到FileLocation这个十六进制值中的值:

  • 未知: 0200030400032FA8311B4E8BF30D2784D3BCED45B789
  • VolumeId:94CA9B19 HEX
  • 未知:0004
  • 秘密: 9B403388C06407CF HEX
  • local_id:7517 Hex
  • 未知:000202

注意:值以Big-Endian格式存储.

现在我们需要解码Unknown值.我感谢任何有助于解码这些价值的努力.

Dan*_*ili 1

以下是机器人 API 文件 ID 的 TL 方案:https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/TL_botAPI.tl

我已经在 MadelineProto 中实现了 bot API 文件 id 转换:您基本上必须对文件 id 进行 base64 解码,将它们传递给基于空字节的 RLE 解码器,然后使用给定的 TL 方案对其进行解码。请参阅 TL/Conversion/BotAPI* 以了解 MessageMedia 对象在序列化之前如何转换为 File 对象。

我设法使用我使用相同的 lib 构建的这个特殊 MTProto 机器人来逆向工程文件 ID(我忘了在这里搜索 xd)。