라이브러리 - httpclient android



전보:전보 클라이언트에서 파일 아이디 가져 오기 (1)

다음은 봇 API 파일 ID에 대한 TL 체계입니다. https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/TL_botAPI.tl

MadelineProto에서 봇 API 파일 ID 변환을 구현했습니다. 기본적으로 파일 ID를 base64decode하고 null 바이트를 기반으로하는 RLE 디코더를 통과 한 다음 주어진 TL 체계를 사용하여 디코딩해야합니다. 직렬화 전에 MessageMedia 객체가 File 객체로 변환되는 방법을 보려면 TL / Conversion / BotAPI *를 참조하십시오.

나는 동일한 lib를 사용하여 만든특수 MTProto 봇을 사용하여 파일 ID를 리버스 엔지니어링 할 수있었습니다 (여기서 xd를 검색하는 것을 잊었습니다).

텔레 그램 봇은 fileid 를 사용하여 fileid 을 다운로드합니다. 텔레 그램 클라이언트 (내 비공식 버전)에서이 fileid 를 얻으려면 어떻게해야합니까? mtproto 파일에는 주소를 나타내는 이 위치 클래스 가 있습니다.

파일 위치 매개 변수

  • dc_id int 파일을 보유하고있는 데이터 센터의 번호
  • volume_id 긴 서버 볼륨
  • local_id int 파일 ID
  • 파일에 액세스하려면 비밀 번호가 긴 체크섬

문제는 File Location 클래스의 봇에 적합한 fileid 를 생성하는 방법을 모르겠다는 것입니다.

업데이트 1 :

나는 리버스 엔지니어링을 시도했다. 그래서 File Location 클래스와 FileId 사이에는 어떤 관계가 있다는 것을 알게되었습니다.

File Location 샘플 주소입니다.

  • id : 0 //이 필드는 비밀 채팅에만 사용할 수 있습니다.
  • access_hash : 0 //이 필드는 비밀 채팅에만 사용할 수 있습니다.
  • volume_id : 429640340 ( 199BCA94 HEX )
  • 비밀 : -3528741004939935589 ( CF0764C08833409B HEX ) // TG 문서에 따르면 파일 CF0764C08833409B HEX 이어야합니다.
  • local_id : 6005 ( 1775 HEX )

그리고 이것은 내가 FileIDFileLocation 클래스에 따라 내 Bot에서 가져온 것입니다.

  • FileId : AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI

FileID 값이 Base64 형식임을 분명히합니다. 그래서 그것을 해독했습니다 :

  • 16 진수 값 : 0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202

이제이 16 진수 값에서 FileLocation 값을 볼 수 있습니다.

  • 알 수 없음 : 0200030400032FA8311B4E8BF30D2784D3BCED45B789
  • VolumeId : 94CA9B19 HEX
  • 알 수 없음 : 0004
  • 비밀 번호 : 9B403388C06407CF HEX
  • local_id : 7517 Hex
  • 알 수 없음 : 000202

참고 : 값은 Big-Endian 형식으로 저장됩니다.

이제 Unknown 값을 해독해야합니다. 이러한 값을 해독하는 데 도움이되는 노력에 감사드립니다.





mtproto