首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电报:从电报客户那里得到文件

电报:从电报客户那里得到文件
EN

Stack Overflow用户
提问于 2016-12-26 05:54:33
回答 1查看 1.5K关注 0票数 15

电报机器人使用fileid下载文件。如何从电报客户端(我的非官方版本)获得这个fileidmtproto中的文件具有指示其地址的这个位置类

文件定位参数

  • 保存文件的数据中心的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:429640340 (199BCA94 HEX)
  • 秘密:-3528741004939935589 (CF0764C08833409B HEX) //根据TG文档,它应该是CheckSum文件
  • local_id:6005 (1775 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值。我感谢任何帮助解码这些价值观的努力。

EN

回答 1

Stack Overflow用户

发布于 2017-04-05 00:24:53

以下是用于bot API文件ids的TL方案:botAPI.tl

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41326961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档