15

Telegram ボットはfileid、ファイルのダウンロードに使用します。fileidこれを Telegram client (My Unofficial version) から取得するにはどうすればよいですか? のファイルに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: 429640340( 199BCA94 HEX)
  • secret: -3528741004939935589( CF0764C08833409B HEX) // TG ドキュメントによると、ファイル CheckSum である必要があります
  • local_id: 6005( 1775 HEX)

これは、ボットから取得しFileIDた以前のクラスによると、次のとおりです。FileLocation

  • ファイル ID:AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI

FileID値がBase64フォーマットであることは明らかです。だから私はそれをデコードしました:

  • 16 進値: 0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202

FileLocationこれで、この 16 進値で値を確認できます。

  • わからない:0200030400032FA8311B4E8BF30D2784D3BCED45B789
  • ボリューム ID:94CA9B19 HEX
  • わからない:0004
  • ひみつ:9B403388C06407CF HEX
  • local_id:7517 Hex
  • わからない:000202

注: 値はBig-Endian形式で保存されます。

次に、値をデコードする必要がありUnknownます。これらの値を解読するのに役立つ努力に感謝します。

4

1 に答える 1