Бонусы Telegram используют fileid для загрузки файла. Как я могу получить этот fileid от клиента Telegram (Моя неофициальная версия)? Файлы в mtproto имеют этот класс местоположения, который указывает их адрес.
Параметры расположения файлов
- dc_id int Число центров обработки данных, содержащих файл
- volume_id длинный объем сервера
- local_id int Идентификатор файла
- секрет длинная контрольная сумма для доступа к файлу
Проблема заключается в том, что я не знаю, как сгенерировать 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, который я извлечил из своего бота:
- FileId:
AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI
Очевидно, что значение fileid находится в формате Base64. Поэтому я расшифровал его:
- Значение HEX:
0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202
Теперь мы можем видеть значения FileLocation в этом шестнадцатеричном значении:
- Неизвестно:
0200030400032FA8311B4E8BF30D2784D3BCED45B789 - VolumeId:
94CA9B19 HEX - Unknown:
0004 - Секрет:
9B403388C06407CF HEX - local_id:
7517 Hex - Unknown:
000202
ПРИМЕЧАНИЕ: значения сохраняются в формате Big-Endian.
Теперь нам нужно декодировать значения Unknown. Я ценю любые усилия, которые помогают декодировать эти значения.