android - Telegram :从 Telegram 客户端获取文件ID

标签 android reverse-engineering telegram telegram-bot mtproto

Telegram 机器人使用 fileid 下载文件。如何从 Telegram 客户端(我的非官方版本)获取此 fileidmtproto 中的文件有 this location class表示他们的地址。

文件位置参数

  • dc_id int 持有文件的数据中心编号
  • volume_id 长服务器卷
  • local_id 整型文件 ID
  • secret 访问文件的长校验和

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

更新 1:

我尝试进行一些逆向工程。所以,我发现 File Location 类和 FileId 之间存在某种关系。

这是我的文件位置 示例 地址。

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

这是我根据 FileID 从我的 Bot 检索到的前 FileLocation 类:

  • 文件 ID:AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI

很明显FileID的值是Base64格式。所以我已经解码了它:

  • 十六进制值: 0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202

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

  • 未知:0200030400032FA8311B4E8BF30D2784D3BCED45B789
  • VolumeId:94CA9B19 HEX
  • 未知:0004
  • 密码:9B403388C06407CF HEX
  • local_id:7517 十六进制
  • 未知:000202

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

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

最佳答案

这是 bot API 文件 ID 的 TL 方案:https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/TL_botAPI.tl

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

我设法使用这个 special MTProto bot I built using the same lib 对文件 ID 进行逆向工程(我忘了在这里搜索 xd) .

关于android - Telegram :从 Telegram 客户端获取文件ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41326961/

相关文章:

python - 初始认证 : sending `auth.sendCode` and receiving `msg_container` instead of `auth.SentCode` in python

c# - 保存发送给机器人的用户消息并将完成的表格发送给其他用户

Telegram bot 在群聊中没有响应

windows - PE文件格式中的基址重定位表是什么?

javascript - 如何反混淆这段 JavaScript 代码?

javascript - Android:如何通过javascript启动android的功能

java - 设置 setMylocationenable(true) 时无法获取谷歌地图 fragment 中的 Activity 上下文

c++ - 如何在 C++ 中编辑操作码或写入内存或编辑字节?

Android 4.4状态栏与ActionBar同色

android - 包括预建的静态库