Telegramy używają pliku fileid
, aby pobrać plik. Jak mogę uzyskać ten fileid
od klienta Telegram (moja nieoficjalna wersja)? Pliki w mtproto
mają this location class, które wskazują ich adres.Telegram: pobierz plik fileid z klienta telegramu
Położenie pliku Parametry
- dc_id int numer centrum danych trzymając plik
- volume_id długo Server objętość
- local_id int ID pliku
- tajny długo kontrolna dostępu do pliku
Problem polega na tym, że nie wiem, jak do generowania fileid
, który jest odpowiedni dla botów z File Location
klasie.
UPDATE 1:
Próbowałem zrobić reverse engineering. Tak więc odkryłem, że istnieje pewna zależność między klasą File Location
a FileId
.
To jest mój adres File Location
przykładowy.
- id:
0
// To pole jest dostępne tylko dla tajnych rozmowach - access_hash:
0
// To pole jest dostępne tylko dla tajnych rozmowach - volume_id:
429640340
(199BCA94 HEX
) - sekret:
-3528741004939935589
(CF0764C08833409B HEX
) // zgodnie z dokumentacją TG należy złożyć plik CheckSum - local_id:
6005
(1775 HEX
)
a to mój zgodnie FileID
do dawnego FileLocation
klasie, że pobierane z mojego bot:
- fileid:
AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI
Jest oczywiste, że FileID
wartość jest w formacie Base64
.Więc ja dekodowane go:
- HEX Wartość:
0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202
Teraz widzimy wartości FileLocation
w tej wartości hex:
- nieznane:
0200030400032FA8311B4E8BF30D2784D3BCED45B789
- VolumeId:
94CA9B19 HEX
- Nieznany:
0004
- Tajny:
9B403388C06407CF HEX
- local_id:
7517 Hex
- nieznane:
000202
UWAGA: Wartości są zapisywane w formacie Big-Endian
.
Teraz musimy zdekodować wartości Unknown
. Doceniam każdy wysiłek, który pomaga odszyfrować te wartości.
Wygląda na to, że nie ma żadnego związku między 'PhotoSize.location' z Telegram-API i' PhotoSize.file_id' z Bot-API –