á á áἠááᣠá´áááŤá áá áŤá á áĽáŠ áĽáá°ááᣠá¨áąáŽá áááľáá˝ áá áŤá á áá á áĽá áááľ áŤáá¸á á¨ááľááá áľáááśá˝á á ááááŁáľ áá áĽááłá ááá° á¨ááááš ááĽáá˝ á áá Ꮰáá áĽá áá ááłá¨áľ ááá¨ááᢠá á°ááłáłá ááᣠá áŁá áĽááľ á°áá˝ áĽáŤáłá¸áá á á´áááŤá ááłáŞáŤá ááľáĽ áŤá áááłá - á˘á á á JSON áá á¨á°áá°á¨á° ááá (áĽá ᨠMTProto á áŁá á¨á°áá¨) Bot API áá ááá áĽá á áĽáááá áá ááá áá á áĽáááľ áá á áááĽáá°áá ááŞáŤ á¨áá˝á¨á¨á¨áŠ ááá ááľáááá˝ áĽá PRᢠá¨á ááľ áááľ á°áŠá áá°á á ááľáŁ á¨á¤áźáá ááááĽáłá áŤááá áľáá áľ áŤá˛á (á á ááŁá ááᣠá¨áá ᏠáááŤá á¨á¨áá áá á°á°ááá) á¨áĽáŤ áŁáá°á¨áŁáŹ á ááá ááľáĽ á¨áŤáąá á¨á´áááŤá á°áá á á¨áŁáś ááťá ááá¨áŁ á ááá á¨áĽááá ááľááŽá˝ á°áŤá˛ á°ááááᢠááá ááá, á ááłááśá˝ áá˛áŤáá áá ááá? ááááŤáąá áĽáá°áá áŤá ááŽáááśá˝ áá°á á˛á á ááá˝ ááááá˝ á á.áĽáá° áĽáááą á¨áá, áá á áá°áá, áá ááá á¨ááá áľ ááá ááá áá˝áá. ááá á¤á°-áá˝áááľ, áĽá á áá áá á¨áľ á°áŤá˛á á ááá ááááľ áááľ á áá áľ á¨áááť. á¨áá á á áá ááŞááśááŤá á¨áá°ááá ááłá áá, áá áŤá¨áááĄ. áá°á áááľ áá áŤááŁá ᨠáááľ á ááá á á ááŤáš á á°á°áŤ á¤á°-áá˝áááľ áá áá°ááá áĽá á ááá ááá á áá˝áá (ááá áĽáá áá á¨ááá°áá ááá áááľ áá)ᢠá á áá áá á¤á° ááá ááą á "á ááŤá" á°á¨á á á°áἠáá°áŤá (áááááá á¨á¤áá á áĽáŤááá˝á áĽáá˛áŤá°áá ááá áľáááłá)á˘
áááᣠá áá á°á¨áłáłá ááĽáá˝ ááľáĽ áĽá ááľá ፠ááá ááłáĽ á ááááᢠááá áá ááá˝ áĽá á´áááŤá ááááŽá˝ áĽá á¨áľá-á áá ááŤáá˝áá˝ áááŤá (á¨áŁáś á¨ááá˝á, áá á ááááá ááá áááĽá¨áŞáá ááá áá á°áá˝ á áá áá). áľááá ááá áἠá°áá áá á¨áŁáś á°ááŁáŤá áááľá¨á ááá¨á áá á áĽáá° áŚáá´áá á°ááśá˝. áááľá áŁá¨áŚáá´áá á°áá áá˝ ááá áŽáľ á°áááˇá áĽáá áĽááľáĽ (áĽáá°áá á ááá°áá ááá áá áĽáááľ á¨áááá áĽáááł á áááá áĽáá¸áááá) á°áá ᨠáľááá ) ᣠáá áĽáá° áľáŽá ááá ᣠáááłá ᣠáĽáá° RFC áŤá áááá á á - á áááአáá áĽáť á°áá áá ááťá ááťá ááá ᣠâáłáááá¨áąâ ááá áŽáľ ᣠáŚáá´áá (á´áááŤá á´áľááśá ᣠááŁáá) áááľ áá°á á áŤááá á´ááśá?
ááľáłááťáĄ
á°ááľ... á áᣠá áá°á? áĽáááľ áá?.. áĽáá° ááŁáľ á°áŤá˛ á¨áľ áááá? áááľáŽá˝ á°á¨áłáłáááľáĄ TL (ááá ááááľ) áĽá áĽá áąáŁ áĽá ááĽááĽáŽá˝áŁ áĽá ááá˝ áĽá á áľá᪠áááľ áŚáá´áááá á°ááľ ááá ἠáááááá á°áá˝ á¨á˛á¤á á ááŁáĽ áááľ áľáĽáľáĽ á áá ááá፠áŹáá°á, áĽáąá áá˝á áŤáá°ááá á áŽáľ ááľáĽ áŤá á¨á˛á¤á áľáá áŤáá˝ á á áááľ ááá ááááśá˝ áĽáĽá¨áľ áľáŞáľ áááŁáľá˘ ááĽááĽáŽá˝
á¤áá˛ááŽáś á¤áá á? áááĽáá!
á°ááľ... á áᣠá áá°á? áĽáááľ áá?..
ááá
á˝áá á¨ááľáłááť áááĽáŤáŽá˝ áŁááá á¨á á áá
áľ áá°áĽá°áĽ áááŠ. áá
áá áá á áááá áľá áŁá˘áŤ áá
áĽáá° ááŁáľ á°áŤá˛ á¨áľ áááá?
á¨áŁáś á˘á˝áá áá á˘á áá ááá ááἠá áŤááŁá ᣠáááłá ᣠááá-á¨á°á°áŠ á¤á°-áá˝áááľá api_id
и api_hash
(ᨠVKontakte á¤áá á áá á¨á°áŠ áá˛áŤáá áááááŁá) á áááአáá°áá áŞáŤáá á¨áááá áľá˘ áá
ááľá¨á á ááŁá¸á áá
áá ááááŤáśá˝ áŤáľáááľáŁ áá ááá á¨á¤á°-ááťá
ááľ á°áŤá˛áá˝ á ááá°áá ááá áá°á áĽáá°ááá˝á á¨á áá áĽáááááŤááᢠá áá¨áŤ áááá˝ áá¨áŠ áá˝áá, ááá áĽááłá á áŁá ááľá á˘ááá - áĽáááłá á áá ááááἠáá˝áá á ááľ áĽáť áá°áá áŞáŤáŁ áľááá
áá° áĽáą á ááĽááľ á áá¸áŠáá˘
á áá á¨á´áááŤá áĽááł á ááá ᣠá¨á°áááᥠá áá áľá á°ááśá˝ ᣠááŽáśáŽá ᣠááá° ááááá˝ á¨á´áááŤá ááłáááŤáá˝á ááá á áĽááłááĽá áľáŠá¨áľ áá°á á áááŁá ᢠáŤá áááľ á ááľ á°á á¨ááá¨áŚáš áá áŤáá áŚáł á ááá áĽáá°á°á°á áĽá á°áá áá˝á áááŤáľ á¨áááŠáľ áá á á°ááá ááľáŤáąá áĽáá°áá á ááááľ áá˝áá, ááááŤáąá ááá ááᢠáá á áááá, áĽáá°áá á áááľ ááá á ááłá¨á, ááá áá¨á á áááŁá.
áĽá á¨áŁáś á¨áťá ᣠá¨á፠á¨á°áááľá áááŞáŤáá˝ áá áá á áĽáááą á áŁá áŠá
ááᢠá˘ááá
á áĽáááĽáŁ á¨MTProto á ááľá áá á ááᣠá á ááľ áá á á°ááŤáŠ á°á¨ááá˝ (á áľááá° áááá á¨ááá ááľáĽ á¨áá°áŠ á¨áá ááľáááŽá˝ áĽáá°áááľáŁ á¨ááĽááĽá ááŁáľ áĽáá°áááľ) áľáá ᣠá¨ááŤá°áá áĽá á áľá᪠áááľ áĽáá ááľ ááááá˘
áááľáŽá˝ á°á¨áłáłáááľáĄ TL (ááá ááááľ) áĽá áĽá
áąáŁ áĽá ááĽááĽáŽá˝áŁ áĽá ááá˝ áĽá á áľá᪠áááľ
áá áááľ, á áĽáááą, á¨á´áááŤá á˝ááŽá˝ ááá áá. áĽá áá° ááľáĄ ááááŁáľ á¨áá¨áŠ áĽá á áľá᪠áááľ áááŤá.
áľááᥠáľáá áá¸ááᢠáá
áá áá° á áĽááŽá
á¨áᣠáĽáá˛á
á áá˘
int ? = Int;
long ? = Long;
double ? = Double;
string ? = String;
vector#1cb5c415 {t:Type} # [ t ] = Vector t;
rpc_error#2144ca19 error_code:int error_message:string = RpcError;
rpc_answer_unknown#5e2ad36e = RpcDropAnswer;
rpc_answer_dropped_running#cd78e586 = RpcDropAnswer;
rpc_answer_dropped#a43ad8b7 msg_id:long seq_no:int bytes:int = RpcDropAnswer;
msg_container#73f1f8dc messages:vector<%Message> = MessageContainer;
---functions---
set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:bytes = Set_client_DH_params_answer;
ping#7abe77ec ping_id:long = Pong;
ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong;
invokeAfterMsg#cb9f372d msg_id:long query:!X = X;
invokeAfterMsgs#3dc4b4f0 msg_ids:Vector<long> query:!X = X;
account.updateProfile#78515775 flags:# first_name:flags.0?string last_name:flags.1?string about:flags.2?string = User;
account.sendChangePhoneCode#8e57deb flags:# allow_flashcall:flags.0?true phone_number:string current_number:flags.0?Bool = auth.SentCode;
áá áá áááááŞáŤ áá áŤá¨ á°á á¨á°áťááá á¨á°áá°ááá ááá áĽáť ááááá á áá˝áá - á°á á ᣠáĽááá ááá áŽá˝ áá¸á (ááá áĽááłá áľá á¨áľ ᣠá á፠ááá á áá?) ᣠá áĽááą ááľáĽ ááľáŽá˝ á á ᣠá¨áá á áá á ááľ á áááľ á¨áŽáá á áá áá¨á°áá ... ááááŁáľ. áĽáá á¨áááá á ááá˝ ááľáĽ áĽáá° C++ áŤá á áĽááśá˝ ááአáá˝áá (á áĽáááĽáŁ áĽáááł á áá°áá). áĽá ááá ááá˝ ááááśá˝ áááľ áá áááľ áá, á¨áĽáŤá ááááśá˝, á¨áá á áá ááááśá˝, ááśá, áá˝ ááááśá˝ (áĽá ááá˝ á áá ááአá á°ááŤáŠ áŚáłáá˝ áá á¨á°ááŤáŠ áááŽá˝ áááľ áá), á ááłááľ áá áááá áĽá á ááłááľ áá á áá°áá, áááłá´á˛áá ááĽáŽá˝ - áĽá á¨ááá á áá, á¨áá áĽáá´áľ ááááľ áĽáá°ááťá. áľááááá (á á áááአááľá á¨ááá°á¨á) áŁááľ áĽá¨áľ? á°ááśášá ááá ἠá ááĽááľ (á áᣠá á á áŤá˘áŤá áŁáá JSON áľáŞáľ ááľáĽ á¨áááááĽáŠ á áááá˝ á á - áá ፠á¨á áá ááá á áŤá°áááá).
áášá ááááą
á á°ááŁáŤá ááááá˝ áĽá á ááśáá˛á ááááľ áááá¤á á¨ááŤáá á ááŁá˘áá˝ á áá ááá ááľáĽ áŤááá ááá፠ááá ᣠá¨ááłáá áá áĽááłá ᣠá¨á áá áĽáá°á°ááá°á áŤáŠáłá ᣠáĽá áá á áá á¨áą á áá á¨áą ááĽá á áá°áá áááľ áá˝ááᢠá áá áá á¨áááąáľ á°ááááá˝áĄ-
- á á, targetáá áĽáŠ áááľáá, áá ááŽááľ, áĽáˇ á áá°áłáŤá
- á áŠá˛áŤ áŠáá¨áá˛á˛áá˝ ááľáĽ áŤáá áľáá ááľ á á áᲠáľááťááľáśá˝ ááŤá¨á áĽááłá áááŤáŤá - ááá á°á á°ááłá áŽááąá á ááá°á°á
- á áá¨á¨áťá, áĽáá°ááá¨á, á á°ááŁá áá á áŤáľááááá¨á°áááá á¨á˛á¤á áĽááłá á¨á°áá°á ááá áĽáť áĽá á áá áľáááá ááá˘
áĽáá°á°áŁáá #perl
á¨á´áááŤá áá° ááľáŞááľ á á ááá°áá á á¨áá¨á¨á á FreeNode IRC á ááłá¨áá¨áĽ ááľáĽ (á¨áĽá
áą áľááá á¨ááľáłááľ á ááťá áľááá á áá°áá)
á ááľ á°á áááááŞáŤ áá á˛á᪠ááá°á¨áĽ á¨á°ááááᣠá¨á°á°á°á° áĽá á¨áĽáą áá áááŤááľ ááá¨á á¨ááᨠáááľááᣠá á°ááŁá áŤáľááá áľáááá ááľ á¨áááá˘
á¨á áá°á á°á¨á ááá áĽáŤááá˝á á¨ááŤááł á¨áá áŁáś ááááśá˝á (int ᣠá¨á á ᣠááá°.) á áľáááááľ áĽáŤáľáá áááá¨áą - á áá¨á¨áťá á áĽá áá°áá á á ááŁá¸á - áááłá ᣠá¨áĽááą áááááľ áĽáááá ᢠáŹáá°á. áá¸áá áĽáá°áá áľááľá, á¨á°áááľá áááŽá˝ á áľáááá áľáá¸á á¨á áŠ.
áá á ááľ
áŚáá´áááá á°ááľ áááŤáᥠá¨á˛á¤á á ááŁáĽ áááľ áľáĽáľáĽ á áá ááááŤ
constructor = Type;
myVec ids:Vector<long> = Type;
fixed#abcdef34 id:int = Type2;
fixedVec set:Vector<Type2> = FixedVec;
constructorOne#crc32 field1:int = PolymorType;
constructorTwo#2crc32 field_a:long field_b:Type3 field_c:int = PolymorType;
constructorThree#deadcrc bit_flags_of_what_really_present:# optional_field4:bit_flags_of_what_really_present.1?Type = PolymorType;
an_id#12abcd34 id:int = Type3;
a_null#6789cdef = Type3;
ááş áá áá ááááŤá ááŁáŞ, á¨á፠á áá áĽáá° á ááŤá (á á°ááŁá - áááá) á ááááľ á áŠá #
áááŁá CRC32 á¨áĽáá°áá
ááááą á¨á°ááá° ááá፠ááĽá¨ááá. á ááá á á¨ááľáŽáš ááá፠áááŁáᤠáŤá á áááą áŁáś ááá áá˝ááᢠáá
áá á áĽáŠá ááááľ áŤá áá ᣠáá
ááᢠá¨ááá áľ á¨á áááľ áľá - á áĽááṠᣠáááľ ááááľ - ááᢠá¨áĽáŠá ááááľ á áľá°áá áŤáá á°á ááᢠáááááá - áááľá ᣠá ááŤáł á¨á°áá°á ááááśá˝ á¨áĽáą áá ááááą áá˝ááá˘
áľááá á¨ááľáአá áá á¨á°á¨á°á° ---functions---
, á¨ááŤá á ááŁáĽ á°ááłáłá áááŤá, ááá áá áľááá á¨á°áᨠáááá: ááá˘á RPC á°ááŁá áľá áááá, ááľáŽá˝ áááŞáŤáá˝ áááá (á°á
á, áááľá, á áľááá á°ááłáłá á¨á°á°á ááá
á áááŤá, á¨áá
á áłá˝ áĽáá°á°ááá¸á áá). , áá
á ááá á¨á°áá°á á áľááá áááá), áĽá "áááááá ááááľ" - á¨á°ááá°á áá¤áľ ááááľ. áĽáááľ áá, á ááá áááááá áááŤá - áá á ááá ááľáĽ ááááťá ---types---
, áá áá
ááᢠ"á ááłá°áĽá". á¨á°ááŁá ááááśá˝á á ááááááťá¸á á¨áá á á áá ááŤá, áááľá. á áá ááááŤáľáŁ áĽá á°ááłáłá áľá áŤáá¸á ááá áá á¨á°ááŤáŠ ááááá˝áŁ áĽáá° C++ᣠá á˛á¤áá¤á ááľáĽ á áá°á°áĄáá˘
OOP áŤááá ááá "ááá˘" áĽá "áááááá"? á°á
á ᣠá áĽááṠᣠá ááľ á°á áľááá
ááłá á OOP áááľ áá°áĽ ááá áááááłá - áááááá ááááľ áĽáá° á¨áá
ááá ᣠáĽá ááá˘áá˝ á¨áĽáą ááĽá°á á¨áá áááá˝ áá¸á ᣠáĽá final
á á ááŤáł ááááá˝ á¨áááľ á ááŁáĽ. á áĽáááĽ, á áĽáááĽ, áĽáá
áĽáť á°ááłáłáááľ á OO ááŽááŤááá ááááá˝ á¨áĽááá°á á¨áá á á áá á¨á°áŤá á¨áááŁáł áá´áá˝ ááᢠáĽáá
á¨áá¨á á ááááŽá˝ áĽáť áľááá ááá áá´áá˝ á¨áá (ááá áĽááłá á¨á°ááŁáŽá˝ áĽá áá´áá˝ ááá á ááá
ááą áá ááĽááĽá ááá á á˘á˝áá ᣠáá áá
á¨á°áᨠááłá áá) - ááá˘áá áĽáá° áá áá°áĽ áá˝áá ᢠá¨áľáá áĽá¨á°ááᣠááᢠá¨áŁááľ áĽá¨áľ á˛áŤáᥠáá°ááĄá˘
áá
áĽáá´áľ áááá? áááá 4 áŁááľ á¨ááŤáἠá˛á´áŞáŤáááá áĽá´áąá áááá¨áłá 0xcrc32
- áĽá ááĽá áá áĽáá°ááá áááááŁá field1
á¨ááááľ áá int
ᣠáááľá áĽ.á¤.á . á áľááá 4 áŁááľ áŤááŁá, á áá
áá á¨áá á á áá á¨áá ááľá á¨á áááą áá PolymorType
á ááĽáĽá˘ áááá¨áłá 0x2crc32
áĽá áááľ á°á¨á᪠ááľáŽá˝ áĽááłá áááááŁá, á ááááŞáŤ long
8 áŁááľ áĽáááŁáá áááľ ááᢠáĽá á¨á፠áĽáá°áá á¨á°ááłá°á áááᾠᣠáĽáąá á á°ááłáłá ááááľ á¨á°á áḠááᢠáááłá, Type3
áĽáá° á
á°á á°á¨á°áá¸á áááľ ááá˘áá˝ á áá¨áłá ááľáĽ ááááš áá˝áá ᣠá¨á፠áááąáá áááááľ á ááŁá¸á 0x12abcd34
, á¨á፠á áá 4 á°á¨á᪠áŁááľ ááá ἠáŤáľáááááłá int
, ááá 0x6789cdef
, á¨á፠á áá ááá ááá á áááá. áá ááááá ááá - á¨á°áᨠááŁá áŤáľáááááłá. áááááá á¨áá
á áá 4 áŁááľ áá° ááá ἠáĽááááłááᢠint
á
áłáá˝ field_c
в constructorTwo
á áá
á á¨áá á ááĽá á áĽáá¨ááłááᢠPolymorType
.
á áá¨á¨áťá, á¨á°áŤá 0xdeadcrc
á constructorThree
, á¨á፠ááá ááá áá áἠá¨á°ááłá°á áááá. á¨ááááŞáŤá ááłá˝á ááᢠbit_flags_of_what_really_present
á¨ááááľ áá #
- á áĽáááą, áá
áááááą á°ááá áľá áĽáť áá nat
"á¨á°ááĽáŽ ááĽá" áááľ ááᢠáŤá áááľ á áĽáááą, áŤáá°áá¨á int, á áááŤá˝á áá, á áĽááá°á áá¨áłáá˝ ááľáĽ áŤáá°áá¨á ááĽáŽá˝ á˛á¨á°áą áĽá¸áá áááł áá. áľááá
, á¨áááĽáá á¨áĽáŤá ááááľ áŤáá áááŁáł áá, áá
ááľá áááľ áá - á á˝áŚá áá á¨ááá¨á á°ááłá á˘áľ á á°á áá°á ááľá áá á¨á°ááá áĽáť áá (á áááľ áĽáá° á°áá᪠áŚááŹá°á). áĽááá˛áŤá, áá
áľáá˝ áĽáá° á°ááá áĽááľáĽ, áá
á áááľ á¨á áá áĽáá° ááľá ááá ἠáŤáľááááá Type
, á áĽá ááłá ááľáĽ 2 ááá˘áá˝ á ááľ. á ááą áŁáś áá (áááŤáá áĽáť áŤáŤáľáłá) áááá ááľá á ááᢠids
á¨ááááľ áá ids:Vector<long>
.
áááąá á áĽááśá˝ áĽá á á ááá ááááŤáá˝ á ááŽáľ ááá á፠ááľáĽ áá¸á áĽáá áŤáľáĄ ááááᢠáá á áá°áá. áááľ ááťááᢠáá áĽá¸áá á áĽááá°á áá¨áłáá˝ ááľáĽ á¨áááá á ááá˝á á¨áá áá ááłá ᣠáĽá ááŹáá°á áĽáť áĽá á áá ááááᢠá áŁááľ áĽá¨áľ ááľáĽ, áĽááá ááŹáá°á á áááľ áĽáŤáą 4 CRC32 áŁááľ, áááá á°ááłáłá, á¨ááŤá 4 áŁááľ - á¨áľááľá á áŤááľ áĽááľ, áĽá á¨ááŤá áĽááá ááĽá¨ áááŽá˝ áĽáŤáłá¸á áááá.
á áá
áĽáááł áá á°á¨áłáłáááľ áááá á 4 áŁááľ áááľ ááľáĽ áá¨á°áłá, ááá ááááśá˝ áĽá áá¸á - á áĽáŽááἠááááśá˝á á°ááá¸áá. bytes
и string
ááááąá á áĽá
á°á¨áłáłá á ááľá¨á áĽá áá
á á°ááá á 4 - á°á
á ᣠáá°á á áĽá á á ááťáŤáááľ áá¤áłá áááľáá? ááá áĽááłá TL áá¤áłá áááľáŽá˝ á°á¨áłáłá áá á˘áŁáá ᣠáá á¨áĽááą áá áá° áááá ᣠááá áĽááłá áľáááááá ááá ᣠá¨áĄááŤá áĽá´áśá˝ áĽá áá á-ááá ááĽá¨ááááá˝ áĽááłá áá° 4 áŁáᾠᣠJSON á ááá á¨á áá áááŤá áááá? á°ááá¨áľ ᣠá ááľááá ááľáŽá˝ áĽááłá á áľáá˝ áŁáá˛áŤáá˝ áááá áá˝áá ᣠááá ááá á áŁá áĽáŠ áá ᣠáĽá ááá°ááąá áááá˝ áá˝áá ᣠáłá˛áŤ ááá á á˛áľ á ááŤá ááľáŽá˝á á áá áá ááá á áľá¨ááŠá?
áá á áááá, á¨áĽáá á áá ááá፠áłááá áááá á°ááľ áŤáá ᥠáĽá áľá á á°ááŁá አáŤáľáĄ. á ááááŞáŤ ᣠá¨ááá˘á CRC32 á¨áá°áá á áĽá áą á¨á˝áá ááááŤá áá°á á ááľáá áá á¨áľ áá (á°á¨á᪠áá áŚáłá áŤáľááṠᣠááá°) - áľááá á á˛áľ ááľá á¨á¨áᨠᣠá¨ááááľ ááááŤá ááľáá ááááŁá ᣠáĽá áľáááá á¨áĽáą CRC32 áĽá , á áá á ááááŤáľ, á°á¨áłáłáááľ. áĽá á áŽáá á°áá á á á˛áľ áŁáá˛áŤáá˝ á¨á°áááĄá áľ ááľá á¨á°áá á áĽá ááĽá áá ááľá¨á áĽááłáá áľ á áŤáá á?
á ááá°á á°á¨á, áĽááľáłááľ CRC32, áĽáąá áĽáá áá á áá á¨áą áĽáá° á¨áá˝ á°ááŁáŤáľ áá á áááľ (de) á°á¨áłáłá áĽá¨á°á°á¨á áĽááłá á áአáááł áááá°áᢠáĽáá á¨áááľ á˝áá á ááĽááá - áĽá á áááá, ááľá á 232 ááľáĽ á ááľ á áá°áá, áá á áŁá áľáá áá. CRC32 á áááá áťáá ááľáĽ áŤá áľá á°áśá˝á áááá¨áľ (áĽá ááá¨á) á¨á°áá°á áĽá á áá áá°á¨áľ ááá˝á á¨áááą ááĽá¨áśá˝á áĽáá°ááŤáťá˝á áá áŤáľáłááłá? áááłá ᣠáŁááľ áĽáá°áá áľááá°áŤááľ ááľ á¨áááᥠCRC32 á á¨áááľ ááľáá áŤá°á á ááá°áá ááľáĽ á¨ááááŞáŤáá 4 áŁááľ á áááĽááľ 4 áŁááľ áááŤááŤá - á°ááłáłá ááááᢠá¨áĽá ááĽááľ á¨áá˛á áá°ááľ (áĽá áľáá˝ áĽááá°-ááĽáĽ) á¨á˝áá ááĽá¨ááááá˝ á˛áá áĽá áĽááá áľáá˝ á á°áá á áááá° áŤááá ᣠáĽáá°áá á¨áá°áŤááľ áĽáľá á áŁá áá¨ááŤáá˘
á áááŤá˝á áá áĽá፠áŤááá áá ááľá¸á? á áĽáááľá˘ CRC32? á¨ááááŞáŤááš á¨ááá áŽáśá˝ á ááą (á¨áááľáá á ááľá á˘áá) áĽáŤááłááąá áḠáŁá ᪠á ááĽá 239 á¨ááŤáŁá á¨áá˝ á°ááŁá áá á¨áᣠá ááá á°áá˝ á áŁá á¨á°áá°á°áŁ ha ha!
á áá¨á¨áťáᣠáĽáşáŁ á¨ááľá á áááľ áŤáá¸á ááá áá˝ áĽááłá á°ááááĽáᢠVector<int>
и Vector<PolymorType>
á¨á°áᨠCRC32 ááá¨ááᢠáľá á¨ááľáá áá á ááťá¸ááľ? áĽá á ááľá-ááłáŁá áĽá᳠ᣠáá
á¨ááááą á áŤá áááá?? á¨á áľá áşá
ááĽáŽá˝á á á°áŤá°á á áłáááá áĽáá áᣠá á°áἠVector<int>
ááá ááá ááá˝ áá, ááááą áĽá áá 40000 áŁááľ. áá
á˘áááľ? Vector<Type2>
, áĽáąá á ááľ ááľá áĽáť áŤáŤáľáłá int
áĽá á á áááą áĽáť áá - 10000xabcdef0 34 áá áĽá á¨á፠4 áŁááľ ááľáá á ááĽá? int
ááá áááá á¨áááŁáłá áá ááŤá°ááá áá˝ááᢠfixedVec
áĽá ᨠ80000 áŁááľ ááá
áĽáá°áá 40000 áĽáť áŤáľá°ááá?
áá á ááŤá˝ áľáŤ ááľ á˛ááŹá˛áŤá áĽáŤá á áá°áá - á¨áĄáľá á°á áááá˝á áááá áĽáá°ááá á á áľáĄáľ ᣠáĽáŤááłááłá¸á ááłáá፠ᣠá¨ááááŞáŤ áľá ᣠá¨á áŤáľ áľá - á á°áááłáá˝ áľáá áááááľ áá á¨á°áááá á¨ááἠáá á ááŠááľ á¨áá°á ááá áá˝ááᢠááĽá ááľáłáá፠á¨á°á°á¨áá á¨á´áááŤá á°á¨áłáłáááľ áá¤áłáááľ á áľááá ááá˘
áľááá âŚ
áŹáá°á, áĽáąá áá˝á áŤáá°ááá
á¨ááŁáááá˝ ááá፠áážá˝á áĽá ááá˝á áááá á¨áá¨áŠ ᣠáŹáá°á (áĽá ááľáŞááľ áĽááłá) á áá°á áááľ á á ááŤáł ááá˝ ááľáĽ ááááŁáľ áĽá¨áá¨á¨ áááá áŤáŤáᢠááá áá á áá¨á¨áť áá¨áłá, á¨áá¨á¨áťá á°á¨á á°áááá, áĽá á¨áŹáá°á ááş á ááá á°á°áĽáˇá, áá
á áá á¨á ááľ ááááľ áá áŤááłá°á¨ áá. áááľáá á˝ááŠ? á ááááá˝ ááŽááŤááá, á á°ááá á°ááŁáŤá, á ááááŠá á á°á°ááá áááá˝ á¨á°ááá° áá - á°áá áááá áŤáá á ááá
áááá ááá á°á¨áľáś áá áŤá. á ááá á¨ááἠá°á¨áłáłáááľ á¨ááŤáľáááá á
ááĽáá ááᥠá ááá ááááá˝ á á ááᢠááááᣠáááľá áĽ.á¤.á . á¨áááľ á áŤááľ á áááá - á¨ááááŞáŤá á¨ááἠá áŤá áá ᣠááá°áá áŤáą á°ááłáłá ááá
á ááá áá
áŤáľ áŁáś áŚáł áá (áĽá
á (cons)
á ááá). áá áá
á ááá˝ áá ááá áĽáŤááłááłá¸á á¤ááááą á áááąá ááááá˝ á°á¨á᪠4 áŁááľ (CRC32 á TL) áŤááŁáᢠáľááľá áĽáá˛á á ááá áááá˝ áá˝ááᢠáá áá á, ááá áá á áľááľá áŤááłáá ááááľ áŤááá áľááľá áááł ááľáĽ, áĽá áĽáá°áĽáŤáá.
áľááá á˛á¤á áŹáá°á áááŁáľá áľááááá áľ á áá á áŠá áá¨áá áá á¨á áľ. á áá¨á¨áťá á°ááą áĽáá˛á ááá:
á°á¨áłáłáááľ áááá á°ááłáłá ááᢠ"áŹáá°á" áá ááá (const 0x1cb5c415 = crc32 ("vector t:Type # [t] = áŹáá°á t") á á°áááá á áááľ t áá á¨á°áá°á¨á° á áá°áá.
á¨á ááŤá áááŞáŤ t áá á¨áá¤áľ á áááľ á¨á°áá áľááá (áááá á¨ááĽááą á ááľ ááłááá) á á°á¨áłáłá ááľáĽ á áá°áłá°áá.
áá¨áĽ áĽáá áááá¨áąáĄ- vector {t:Type} # [ t ] = Vector t
- áá á¨áľááá áŚáł áá
ááş áŤáą á¨ááááŞáŤá ááĽá á¨áŹáá°áŠ ááááľ áá áĽáŠá ááá á áá áľ á ááá! áĽá á¨á¨áľá á áááŁá. áá
ááłááľ á¨áááŁá áĽá á áĽáá˝á áá°áá á áŤáá áľ á¨á°á°á ááᢠá áá áŚáłáŁ á°ááą áá
ááááą áĽáááľ áĽááłááá á áááááľ áá á
áłááĄ-
á¨áŹáá°á Რáááááá pseudotype âá áááľâ áá ᣠáĽá´áą á¨ááááá ááááľ áĽá´áľ á á°á á°á¨á°á áá ᣠá áŚááľ ááá áŁáśá˘
... áá á áĽáą áá á áŤá°áŠáá. á ááłáĽ ááá á (ááááŁáľá á¨áŠáá¨áá˛á˛ áŽááľ áłááááá ) ááŽáĽ á°áá˝áśá á°áľá áááá¨áĽ áľáľááľá áĽá á á°ááŁá á¨áą áá áĽáá´áľ ááľáŤáľ áĽáá°ááľá˝á áľáľááá¨áľ á ááá ááľá ááľáĽ áŤáá áľááľ áá á¨áŁáľ áá á¨áá ááᢠá ááá áá á¨ááłáĽ áľáá áᾠᣠáĽáą á ááá á¨á°áá á¨á á áááá á°áá˝ (áááľ á¨ááłáĽ áááááľ - á¤á˛á¤á á á¸áá) áĽáá ááá á áá°ááᢠáᥠ- áááłá¨áľ - á°áłááˇá.
á áááŤá˝á áá áľá ááĽáŠ. áŤáá áĽááľáłááľá
#
á°ááłáłá áá ááá˘nat
á¨á°ááĽáŽ ááĽááĄ-ááááľ ááááŤáá˝ á á (á áááľ-á¤ááľáá) áĽá á¨ááĽá ááááŤáá˝ (nat-á¤ááľáá). ááá, áĽááą á á°ááłáłá ááááľ ááááťá.
type-expr ::= expr nat-expr ::= expr
ááá áá á á°ááľá ááľáĽ áĽááą á á°ááłáłá ááááľ á°ááá¸áá, áááľá. áá ááŠááľ áĽáá°áá ááłááľ áĽá á áĽá áá°áá á á áá áľá˘
á°á
áᣠá áᣠá¨á áĽááľ ááááśá˝ (vector<int>
, vector<User>
á¨á፠áá፠á áá¸á (#1cb5c415
), áááľá áĽ.á¤.á . áĽáŞá áĽáá°á°ááḠáŤáá
users.getUsers#d91a548 id:Vector<InputUser> = Vector<User>;
á¨á፠áĽááľá á¨áá áĽááľ áŹáá°á áĽáť áłááá á¨á°á áááá˝á áŹáá°á ááᢠá¨á áá á áľááá ᣠá˘áťá áá áĽá - á áĽááá°á áŽáľ ᣠáĽáŤááłááą á áŤá ᣠáŁáś ááááľ áŤááá ᣠááá á ááá¨áá ᣠáĽá á áĽáŠ áááł á áľáá ፠ââââááá°á˝ á áľááá áááá - áá á áá á¨áŹáá°á áĽáŤááłááą á áŤá ááľáĽ á áľááá á°áá¨ááᢠáŤáá ááááľ? á ááľ áľááľá á á°ááŤáŠ ááĽá¨ áááŽá˝ ááľáĽ á¨á°ááŤáŠ ááááśá˝á ááá á¨áá˝áá áľ á ááłááľ ááááľ áá¤á˝á á˘áááľ?
á áá áá áá°áĽ ááááŤá - áĽáá˛á ááááą á˛á¤á á áľááá áá? ááááŁáľ áááŞá á¨á°á á°á¨áłáłá ᣠááľáááá á ááŤá áá á¨áá á¨áá ááŽáśáĄá áá áá ááťá ááá? ááľá ááłáĄ áá áᣠááááľá áĽáááá¨áľá˘
á áŽáľ ááľáĽ áŤá á¨á˛á¤á áľáá áŤáá˝
TL á¨á°ááá°á á¨áąáŽá áľááť á˝áŤá áá á¨áłáá ááľá°áśá˝ á ááľ áĽááłá á VKontakte áĽáááľ ááľáĽ á°ááá° áĽá (á áĽáááĽ), á¨á´áááŤá áĽáľááľ á¨áááአá ááľ áĽááłá. áĽá á áááľ ááá
Templates are not used now. Instead, the same universal constructors (for example, vector {t:Type} [t] = Vector t) are used w
ááá áá ááááľ áľáá á¨áááá á¨ááłáĽ áááá° ááἠááá¨áłá°á áĽááľáĽá˘
#define ZHUKOV_BYTES_HACK
#ifdef ZHUKOV_BYTES_HACK
/* dirty hack for Zhukov request */
ááá áá ááá:
static const char *reserved_words_polymorhic[] = {
"alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta", NULL
};
áá ááŤá áľá áĽááá á áĽááśá˝ áááĄ-
intHash {alpha:Type} vector<coupleInt<alpha>> = IntHash<alpha>;
áá á¨áá˝áá á áĽááľ á áááľ ááş áĽáá° áŹáá°á áŚá int - á áááľ áĽááśá˝ ááᢠá C++ ááľáĽ áĽáá°áá áŤá ááá áááľááá˘
template <T> class IntHash {
vector<pair<int,T>> _map;
}
áľááá
alpha
- ááá áá! áá á C ++ ááľáĽ áĽáť T ááá áá˝áá ᣠáá á áá ᣠá¤áł ááá á ááĽááľ ... áá ᨠ8 áá¤áśá˝ áŤáá áá ᣠá
á áą á¨ááŤá áá áľ ááᢠá á ááľ áá
áľ á á´ááľ áá°ááľá áá áĽáá°áá
á áááľ ááááśá˝ á¨á°áŤááą áááľááá˘
-- ĐĐ°Đ´Đž ŃдоНаŃŃ Đ˛ TL ŃайНОнŃ
-- ĐĐť... ĐŃ ĐżŃŃŃŃ ĐżĐ°ŃаПоŃŃŃ ĐˇĐžĐ˛ŃŃ Đ°ĐťŃŃĐ°, йоŃĐ°,... Đакио ŃĐ°Đź ĐľŃŃ ĐąŃĐşĐ˛Ń ĐľŃŃŃ... Đ, ŃŃŃĐ°!
-- ĐŃаППаŃика? ĐŃ ĐżĐžŃОП напиŃоП
-- ХПОŃŃиŃĐľ, какОК Ń ŃинŃĐ°ĐşŃĐ¸Ń ĐżŃидŃПаН Đ´ĐťŃ ŃайНОнОв и вокŃĐžŃĐ°!
-- Đ˘Ń Đ´ĐžĐťĐąĐ°Đ˝ŃĐťŃŃ, как ĐźŃ ŃŃĐž паŃŃиŃŃ ĐąŃдоП?
-- ĐĐ° но ŃŃŃŃĐľ, Он ŃĐ°Đź Один в ŃŃ
оПо, СаŃ
Đ°ŃкОдиŃŃ -- и Ок
ááá áá áá áľá TL "á á á ááá" áááááŞáŤ áá á¨áłá°á áľáá ፠áá á. á á´áááŤá á°áá ááťá¸á ááľáĽ áŤááľá á á°ááŁá á áá° áááľ áĽáá¸áááá˘
áá ááŤá˛ááĄ-
áŤá˛áᣠ[09.10.18 17:07] á¨ááá á áá á á áŤá áľáŠáľ áá ááááŤáąá áĽá á¨áá áááŽá˝á ááĽá¨á á¨ááŤá áŚááąá á ááśáťá¸á áĽá á¨áŽáľ áááŹá°áŠá á ááŤáá˝ áá¸áááłá á˘
á áá¤áąá, á ááááŞáŤ á¨áśá pilot.jpg
á¨á፠ᨠdzhekichan.webp áŽáľ
áĽááἠááᣠá áááŞáá áĽá ááłáĽá á¨ááŤáá á°áá˝áŁ á áᣠáĄááá áĽááłáá ᥠáĽá á¨á˛á¤áľá¤á á áááŁáŞááťá¸áá áááá ááááľ á áĽáá° áááłáľ á á˘ááąáľáľáŞá ááľáĽ á°á¨áŁá á°á¨á áŤáá¸áá ááłáŞáŤáá˝ áŤááá áĽáá áá á á áĽáá˝áááᣠá áá°á?...
á
16.12 04:18 áŤá˛áᥠá ááľ á°á áááľ+áŤáá áŤáá°áᨠáááľáááá˘
16.12 04:18 áŤá˛á: á áá ááááľ áááá¸á á áá˝ááá˘
16.12 04:18 áŤá˛á: á°á áᣠááá á¨á°á¨áááľ á áŞáŹ ááľáĽ ááá á¨ááľááŽá˝ áĽááľ ááá˘
16.12 04:19 Vasily: 3k+ ááľááŽá˝ ááá°.<censored>
á¨áá°áá°á ááá
ááááŁáľ á¨á°áᨠááá áá˝áá? áĽáá´áľ áĽáá°áá áĽáá
nametype = re.match(r'([a-zA-Z.0-9_]+)(#[0-9a-f]+)?([^=]*)=s*([a-zA-Z.<>0-9_]+);', line);
if (not nametype):
if (not re.match(r'vector#1cb5c415 {t:Type} # [ t ] = Vector t;', line)):
print('Bad line found: ' + line);
á áááá ááľáĽ 1100+ ááľááŽá˝áŁ áááľ áá°á á á áááážá˝ + áĽáá° áŹáá°á áŤá áአááłáŽá˝áŁ á áĽááἠá á˛á¤á á ááŁáĽ áá°á¨áľ ááá áĽááłáá áľ á áááááĽáŠ ááľáĽ á¨á°ááḠá˘ááá áĽáąá ááá°áá°á á áá á ááŁáĽ áá á°áááŠááá... áĽáŤáá á¨áááłá ááááľáá áá áá á°á áá á¨ááá?иáááááá á á°ááą áá°á¨áľ ááá á¨ááá°áá°á á¨áá á¨á áá á°á°áŤáŤá˘ áá?!
á áááŤá˝á áá... áľá CRC32 áźá áĽáá°á°ááááá á áľáłááľ? áľááá ᣠá á´áááŤá á´áľááśá áŽáľ áááŹá°á ááľáĽ á¨á°á°á CRC32 ááĽáá፠ááááśá˝ á¨áááŤá°áą áááá á á ᢠá áááłá°áá á áĽááá ááááŤá áá á¨á°á áá°á áá!
áŤá˛áᣠ[18.12/22 49:XNUMX] áĽá áĽáá áĽáá°áá á áááľ á˛á¤á áŤáľááá áĽáá°áá á áľáŁááá˘
á¨á°ááá á á°ááŁá á áá áá áá¸áľ á¨áááአá¨ááľáá áááťáá˝á ááľááŁáľ áĽáááŤáá ᣠá¨á ááááš ááľáĽ áááš áŁááĽá ááľáá áľááááá˝á áá°áĽáŤá
tdesktop áá áĽáá˛á
áľá á ááľ-ááľáá ááĽáĄá á áľáłááą, áľáá˝ ááá°á áá° áĽáą áĽááááłáá.
áĽáş á´áááŤá-áá áŚáá´áá áŤááá á´áááŤá á´áľááśá áŚááťá ááᣠáá áľáááášáľ? áá áŤááá?... á á ááľáŽááľ á°áá á áŽáľ ááľáĽ ááá á áááľ á¨áááááĽá áľáá°á á¨áá (áá á áľá áááľ ááá áĽáŤááá˝á áŤáľááłá ᣠáá áá áááá°áá ááá áá) ᣠáá ááá˝ á ááŤáł á áľáá á¨áŽáľ áááĽáŤáŽá˝ áá አᣠáá á áĽááą áá á°á¨á᪠á¨áłá˝ áááľ ááá.
á°á¨áłáłáááľ á á°ááŁá áá ááá˝ áĽáŤááá˝á áŤáľááłá? áááłáᣠáĽá áááŽá˝á á°áá°ááᣠá áĽáááĽáŁ á¨á˘áľ ââááľáŽá˝ áĽá áááłá ááľáŽá˝ áááĄ-
áŤá˛ááĄ
flags.0? true
ááłá á á áĽá áŁáá˛áŤ á¨á°ááá áĽáŠá áááá áááľ ááá˘áŤá˛ááĄ
flags.1? int
ááłá á á áĽá á¨á´áŞáŤááááľ ááá á áá áľ áááľ ááá˘áŤá˛áᥠá á ᣠáľáááłá°ááá ááá á áľá¨áá !
áŤá˛ááĄ- áĽáááľ áŁáś ááŽ-ááááľ á áááľ áĽáá°áá á áśááááą ááľáĽ á¨áá áŚáł á°á á áˇáᣠááá áá á¨áśáá°áŤá¸á ááá ááá áá°áĽá°áĽ á ááťáá
áŤá˛áᥠá áááľ ááá á á°ááŁá á ááľáĽá á˘áá áá á áá°ááᣠááá áá áĽá ááŤáá˝ áĽá áľááá˝ á áá˘
áľá á´ááśááľ? ᨠMTProto áááľá áá°ááľ á áááá¨áľ, ááłá - á á°ááą ááľáĽ áĽáá°áá
á áááľ áááĽáŤáŽá˝ á á, áá ááááą %
"á¨á°á°á á áŁáś-á áááľ áá á¨ááááľ" á°áĽá áĽáť ááááťá, áááľá. á¨áá
á áłá˝ áŁááľ ááłááá˝ ááľáĽ áľá
á°áľ ááá á°ááľ á¨ááá ááá á á
áŤá˛áᣠ[22.06.18 18:38] á á ááľ áŚáłáĄ-
msg_container#73f1f8dc messages:vector message = MessageContainer;
á á°áá¨áĄ-
msg_container#73f1f8dc messages:vector<%Message> = MessageContainer;
áĽá áĽááá áááľ áľááá ááŠááśá˝ áá¸á, á áĽááá°á á áááľ ááľáĽ á ááľ ááááľ áĽááá á¨áá áŹáá°á áááŁá
áŁáś á¨áŹáá°á ááş á áá¨áá áĽá á ááľá á ááá áááá˘
áľááłá á á´ááśá ááľáĽ á áĽá á¨á°áá áá
á áĽáą ááľá ááľáĽ áľáááá á°á°áĽáˇá
msg_container
áĽáá°áá, áĽáŤáá áľá% áááŤá. á áá°ááá¸áá˘
Vadim Goncharov, [22.06.18 19:22] áĽá á tdesktop ááľáĽ?
áŤá˛áᣠ[22.06.18 19:23] ááá áá á áá°á á áá°áŽá˝ áá áŤáá á¨á˛á¤á á°ááłá áá ááá á áá ááá˘
// parsed manually
TL áἠá¨áá áá, ááá áá á áá á áá°áá áá
áĽá % á áĽá áą áĽáŞáľ ááľáĽ á¨ááá˘
áá áĽáá á°ááą áĽáŤáąá ááá¨áá, áľááá idk
á á°ááľá ááľáĽ á°áááˇá, á¨ááşá áááľá ááááá˝ á ááá áá¨áą áá˝áá
á°ááąá á á˛á¤á áá á áá°áá, áŤá ááá˝ ááľá ááŤáááľ á áá˝áá
áá á ááŁá˘ âáĽáş áĽáá áᣠá ááľ ááá áľá°á¸ááá ᣠáľááá áĽáá´áľ áá°á¨á áĽááłáá áľ á áłá¨áâ áááá˘
áŤá˛á áĽáá˛á áľáľá ááá°á˝áĄ- âá°ááłáá á á°ááá¨á°áŁ áĽá áĽáá°áá áŤááľá áááŽá˝ áĽááłááá˘
args: /* empty */ { $$ = NULL; }
| args arg { $$ = g_list_append( $1, $2 ); }
;
arg: LC_ID ':' type-term { $$ = tl_arg_new( $1, $3 ); }
| LC_ID ':' condition '?' type-term { $$ = tl_arg_new_cond( $1, $5, $3 ); free($3); }
| UC_ID ':' type-term { $$ = tl_arg_new( $1, $3 ); }
| type-term { $$ = tl_arg_new( "", $1 ); }
| '[' LC_ID ']' { $$ = tl_arg_new_mult( "", tl_type_new( $2, TYPE_MOD_NONE ) ); }
;
á áá ááááľ á¨áá°áąáľ
struct tree *parse_args4 (void) {
PARSE_INIT (type_args4);
struct parse so = save_parse ();
PARSE_TRY (parse_optional_arg_def);
if (S) {
tree_add_child (T, S);
} else {
load_parse (so);
}
if (LEX_CHAR ('!')) {
PARSE_ADD (type_exclam);
EXPECT ("!");
}
PARSE_TRY_PES (parse_type_term);
PARSE_OK;
}
ááá
# Regex to match the whole line
match = re.match(r'''
^ # We want to match from the beginning to the end
([w.]+) # The .tl object can contain alpha_name or namespace.alpha_name
(?:
# # After the name, comes the ID of the object
([0-9a-f]+) # The constructor ID is in hexadecimal form
)? # If no constructor ID was given, CRC32 the 'tl' to determine it
(?:s # After that, we want to match its arguments (name:type)
{? # For handling the start of the '{X:Type}' case
w+ # The argument name will always be an alpha-only name
: # Then comes the separator between name:type
[wd<>#.?!]+ # The type is slightly more complex, since it's alphanumeric and it can
# also have Vector<type>, flags:# and flags.0?default, plus :!X as type
}? # For handling the end of the '{X:Type}' case
)* # Match 0 or more arguments
s # Leave a space between the arguments and the equal
=
s # Leave another space between the equal and the result
([wd<>#.?]+) # The result can again be as complex as any argument type
;$ # Finally, the line should always end with ;
''', tl, re.IGNORECASE | re.VERBOSE)
áá á á ááá áááá áááľ áááĄ-
---functions--- return FUNCTIONS;
---types--- return TYPES;
[a-z][a-zA-Z0-9_]* yylval.string = strdup(yytext); return LC_ID;
[A-Z][a-zA-Z0-9_]* yylval.string = strdup(yytext); return UC_ID;
[0-9]+ yylval.number = atoi(yytext); return NUM;
#[0-9a-fA-F]{1,8} yylval.number = strtol(yytext+1, NULL, 16); return ID_HASH;
n /* skip new line */
[ t]+ /* skip spaces */
//.*$ /* skip comments */
/*.**/ /* skip comments */
. return (int)yytext[0];
áĽáááŤá˘ ááá áŁá ááááľ ááľááἠááá˘
á á á áááᣠá áá¤áąáᣠá áľááá áĽá
á áá á¨ááá á¨á˛á¤á áľáĽáľáĽ á°ááłá áĽá áŽáľ áááŹá°á á áááľ áá° 100 á¨á°ááľá ááľááŽá˝ áĽá ~ 300 á¨áááŹá°á ááľááŽá˝ áá ááŁáŁáá (áááá á ááá á)ᢠprint
's á¨ááᨠáŽáľ)ᣠá áĽáŤááłááą ááá ááľáĽ áááľá -áááľ á áááľ á¨áá¨á ááááŞáŤáá˝á á¨ááŽá˘ áĽáŤááłááą ááááááá ááááľ áá° áŁáś á¨áá
á¨áá á¨áľ ááá ááá¨áŤá ᣠáĽá ááá˘áá˝ á¨áĽáą ááááłá áĽá á¨áááŤá¨áľ áĽá á¨ááľáááľ áá´áá˝ á áá¸áá˘
á á áááľ ááá ááááśá˝ áĽáĽá¨áľ
á ááŤáŤ áá°á¨áĽ áĽáŠ ááá áá á áá°á? á áᣠáá áááŤá á áá°áá (ááá áĽááłá á°áááá ááááá˝á áĽáááŁáá)ᣠááá áá á á˛á¤á áááá ááľáĽ áŤá ááĽá ááᢠá áĽáą áá á áááľá¨áľ áááá áááá ááááľ áźáŽá˝ áá°á á áááŁá. á°á á ᣠáĽáş ᣠááááŁáľ áĽáą áŤáą á áá°áá ᣠáá á á°ááŁá አᣠáá á˘áŤááľ áĽááąá áááá˝ á áá áľá˘ áĽá áá á áááľ áĽáľáá˝ áĽáááááá?
á ááááŞáŤ á°á¨á, áá°áŚá˝. áááá˝á áááľáá á á°ááą ááľáĽ áĽááŤáááĄ-
á¨ááá áááľáŽá˝ áááľ áá° áááá˝ áá¨ááá. ááá áááá˝ á°ááłáłá áá á áááŤá¸á áááŁá ( ááá_áá á ) áĽá á¨áá¨á°ááľ áááłáá˝ ááááľ á ááŁá¸á:
part_size % 1024 = 0
(á 1 áŞáŁ á¨áá¨ááá)524288 % part_size = 0
(512KB á ááá_áá á áĽáŠá áá¨ááá á áá áľ)á¨áá¨á¨áťá ááá áĽááá á áááłáá˝ ááááľ á¨áá áľáᣠáá á á¨áááľ_áá á áŤáá° á¨ááá˘
áĽáŤááłááą ááá á°á¨áłáłá ááĽá ááá¨á áááŁá. ááá_ááá, ᨠ0 áĽáľá¨ 2,999 áŁáá áá.
ááá á¨á°á¨ááá á áá á á áááአáá áááľááἠáá´ ááá¨áĽ áŤáľáááááłá. á°á áá
upload.saveBigFilePart á¨ááá áá áá á ᨠ10 áᣠá áá á¨áá áĽáupload.saveFilePart áá ááľá°á áááá˝.
á¨áá¨á°ááľ á¨ááἠáá¤áľ áľá á°áśá˝ ááľáĽ á ááą ááááľ áá˝áááĄ-
- FILE_PARTS_INVALID - áá áŤááá á¨áááá˝ áĽááľá˘ áĽá´áą á ááŤá¨á á áá°áá
1..3000
á áĽááá ááááŤá ááľáĽ áá
á á? áá
á áá ááááľ TLá á áá áá ááááťá? á á. áá áá
ááł á áľááááᣠá¨á áŤáľ áąáጠááľáŤá áĽááłá á¨á°ááášáľá á áááśá˝á áááá˝ á˝ááᢠáááá˝. áĽá á ááľ á°á¨á᪠ááá áŤáá
áá á, á áá á á°áťá áááł ááłááá enum
- áá (áľáá˝) á¨áĽá´áśá˝ áĽááľ ááá áá áŤáŤá°á° ááááľá˘ áĽáá° C - ááĽáŤá áŁá ááááὠᣠáĽáľáŤáá á¨á°áááááá áľá ááááśá˝ áĽáť áááá áἠáá á ááĽáŽá˝. áá á°áá áľááľáᣠááĽá¨ááááá˝á á á... áááłáᣠáá
ááĽá¨ááá áľáá ááĽá áĽáť ááá áĽáá°áá˝á á˘ááá˝ áĽáŠ ááááᣠá áá°á?
á¨áĽááá
ááľáĽ á ááłá¸áá á á˛á¤áá¤á ááľáĽ á¨ááᢠáá áááłá á JSON Schema ááľáĽ á áᢠáĽá áá á°á áľá 512 áŞáŁ áá¨ááá áá¨áŤá¨á á¨áťá ᣠáá
á ááá á áŽáľ ááľáĽ ááá°á˝ á áá ᾠᣠá¨á፠á°áá áá á ááá áŤá¨ááᥠᢠá ááťáá ááĽá á¨ááá á᪠áá 1..3000
(áĽá á°ááłá áľá
á°áą áááł á áá˝áá) ááťá áá á ᣠáľááá? ..
á áááŤá˝á áá áľá áľá á°áśá˝ áĽá á¨ááááť áááá˝. á¨á˛á¤áá¤á áá á¨á°áŠáľá áĽááł ááááťá¸áá áŤá°á ááá - áá˛áŤáá ááĽá á áááŁááᢠá áŤááłááą á á˛á¤á ááľáĽ áŤá á°ááŁá á¨á°ááá¸áá á¨ááááť á áááľ áĽáť áłááá áľá á°áľáá ááááľ áá˝ááᢠááá áá áá á ááá ááአTLá á°á á á ááááľ á ááťááᢠáĽááἠáá, ááľááá ááá˝ áá áĽá á á°ááŁá ááá ááá á áŤáľáááá (á áĽáááą, RPC á á°ááŤá¨ ááááľ áá¨ááá áá˝áá, áá°áá á áá áĽááááłáá) - áá áľá á¨á áĽáľáľáŤááľ ááááśá˝ á¨ááłáĽ á áá°-ááłáŚá˝ áá á ááľ áá áááľ ááťáá. á¨á°ááŤáá á áá?.. áá°áłáá á ááłááľ - áľááá á°ááá°á˘
áĽá á áá¨á¨áťá áľá á°ááŁá˘ááľáľ? á°á
á, áĽááŤ, á á á ááá, áĽááááá ááá፠á áááááĽáŠ ááľáĽ á áľááá áááááľ (á JSON ááľá ááľáĽ ᣠáĽáá°áá ᣠáĽáą áá) ᣠáá ááľááá á áĽáą áá ááĽá¨áľ áŤáá ááᾠᣠáľá á°ááŁáŤá áááľ áá áááľ ááťáá - á˘áŤááľ á ááááá˝ áá
áľ ááŠááśá˝á á áľááš áááá¨áłá? ááŤáľá
á°ááá¨áľ á
-channelFull#76af5481 flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int = ChatFull;
+channelFull#1c87a71a flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_view_stats:flags.12?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int = ChatFull;
ááá
-message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
+message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
á ááá á°á áá á¨á°áá°á¨á° áá, ááá áá GitHub, áááłá, áĽáá°áá áŁá á¨á á ááľááŽá˝ ááľáĽ áááŚá˝á áááááľ ááá°á á áááá. á¨ááłá "10 ááŠááśá˝á áŤáá", áĽá á ááá áá˛áŤáá á¨ááŤá¨á á áááąá ááłááá˝ ááľáĽ á áá áĽá áá¨á¨áť á ááľ áá¸á, á ááá áá á ááľ áŚáł áá á á°ááş á áá áááł ááá ἠáŤáľáááááłá ... á áĽá á áľá°áŤá¨áľ áá á ááľá ááłáĽ áĽáť á áá°áá. áá á áĽááł áĽáť ááťáť áĽá ááá á áŤá.
á áááŤá˝á áá áľá á˛á᪠áá á á. ááá á˘áľ ááľáŽá˝ áŤáľááááá? áĽááą á áááľááᢠáá˝á°áľ á¨á áááľ á˛á᪠á ááá ááĽá? ááĽáŤáŞáŤá áá°á áŁááľ á¨á˛áŤááŤá áľáŞáśá˝ ááľáĽ ááłá áá˝áá. ááááŞáŤ áá, á á, áĽáá°á፠áá á, ááĽáŤááłááą ááľáá áľ á á˛áľ ááááľ á°áá á¨. áĽááá áá á¨áłá áááŽá˝ á ááá á áá ááá á áᣠáááłááĄ-
storage.fileUnknown#aa963b05 = storage.FileType;
storage.filePartial#40bc6f52 = storage.FileType;
storage.fileJpeg#7efe0e = storage.FileType;
storage.fileGif#cae1aadf = storage.FileType;
storage.filePng#a4f63c0 = storage.FileType;
storage.filePdf#ae1e508d = storage.FileType;
storage.fileMp3#528a0677 = storage.FileType;
storage.fileMov#4b09ebbc = storage.FileType;
storage.fileMp4#b3cea0e4 = storage.FileType;
storage.fileWebp#1081464c = storage.FileType;
á áá áá á áľáĄáľ, á ááá áá ááľáĽ 5 á ááŤá ááľáŽá˝ áŤáááľ, áááá ááá á¨áá˝á á ááŤáŽá˝ 32 á áááľ áŤáľáááááłá. áĽáá áááłáł. áľááá ᣠá¨á˛á¤á á˛á᪠ááŞáľáłá áá á á áĽáá°áá á á˛áŞáŤáááá˝á á¨áŁáľ áĽáááł á á°áŁá áĽá¨áľ á á ፠áá á°á°á á¨á˘
á á°á¨ááŞá á á ááłááľ áŚáłáá˝ áĽááá á°áá˝ áŤáłá¸á á¨á¨áŤáłá¸áá á¨á áťáťá áľááľ ááĽáłá. áááłá, á MTProto (á áááĽáá áááŤá) áááš á Gzip áá¨áá áá˝áá, ááá ááá áĽáŠ áá - á˝ááá˝ áĽá áá¨áłáá˝ á¨á°áŁáą á áľá°áá. á áá´ á áľááᣠá¨á°á°á á°á á RpcResult áŤáą áłááá áááą áá áᢠá°á á, ááá áá á á á°áááá? ... áááááŤá á á¨áľááá áŚáł áĽáá˛á°áŤ áá° ááŤáá˝ ááá¨áĽ áá á¨áĽá.
ááá áá ááłáᣠá ááľ áá áľá
á°áľ á ááá°áá - á°ááłáᢠInputPeerUser
á InputUser
. ááá á á°ááŤááᢠáá á°ááˇá! áááľáᣠá áááአáľáá áááą ááľ á áá°á ááᢠáá
áĽáá´áľ ááá áá˝áá? áááą á á´áááŤá-áá á áŽáľ áááĽáŤáŽá˝ áá°á á áá˝áááĄ-
if (tgl_get_peer_type (E->id) != TGL_PEER_CHANNEL || (C && (C->flags & TGLCHF_MEGAGROUP))) {
out_int (CODE_messages_get_history);
out_peer_id (TLS, E->id);
} else {
out_int (CODE_channels_get_important_history);
out_int (CODE_input_channel);
out_int (tgl_get_peer_id (E->id));
out_long (E->id.access_hash);
}
out_int (E->max_id);
out_int (E->offset);
out_int (E->limit);
out_int (0);
out_int (0);
á áá á áááá, á°á¨áłáłáááľ áŤáá áŚáł áá áá á áĽá ᣠá¨á°áá ᨠáŽáľ á áá°áá! ááááŁáľ á áááአá á°ááłáłá ááááľ áá°áá á áá˝áá? ... á ááá á°á¨á, áá á ááľ áá á¨á°á°áŤ áá áŤá, ááá áá á ááááá˝ á áá áĽáá´áľ áá°áá áá˝áá? ááá áá áĽá áą á¨á°ááá°áá? áĽá áĽáá áá° ááŁáŠ áĽáŤá áĽáá¸áááŤáá.
áľáŞáľ áááŁáľá˘ ááĽááĽáŽá˝
ááá áźáá˛á áľáŞáśá˝ ááĽááĽáŽá˝ á°áĽáá á¨áá áŠáľ á áłá°ááľ áźáá˛ááľ áłáŞá áá á áááľá¨áľ áĽáť áá. á ááá˝ ááá¨áľ áĽáá°ááťáá, ááááŞáŤ áá á°áŤá˛ááš áŤáá°ááá áá áĽá áľ á áá áá áá°á¨áłá áááŽá˝ áá¨ááá áĽáá°áá˝á áŤáľáĄ áá á, áĽá á áľááá áá á˛áá, áá°áá°á áĽáŤááá˝, á¨á°áᨠáľáŞáľ á áá áá áá°á¨áá áŤááááłá. á ááá á°á¨á ᣠáĽáŠ ááłáĽ áĽááłá - áĽá á á˛áą áĽáá° âáľáĽáá â ᣠá á áŽáá áá á°á°áŤáŤá˘ ááááᢠáá áĽáá´áľ áĽáá°á°á¨ááá áĽáááá¨áľá˘ áĽáááľ áá ᣠá¨ááááŞáŤá ááᎠáĽáąá áá¨áľ á ááťááŠá - á áľáá áá ᣠáá á¨áá á¨áľ ááŁá áĽááá ááááŤá á ááá á¨ááᢠááĽááĽáŽá˝ á¨á°áááŠáľ á 2 ááᢠá°ááą áľá áአá¨á˛á¤á áŁá ᪠áááá¨áááĄ-
á°áá á ááĽááĽá 2á á¨áá°áá á¨áá á¨áá¨á°áá ááᢠáĽá á áá ááá á áá áľáĄ-
invokeWithLayer2#289dd1f6 {X:Type} query:!X = X;
á á°ááŁá áá áááľ á¨áĽáŤááłááą á¨á¤áá á áĽáŞ á ááľ á˘áᲠá¨ááá áá áááľ ááá˘
0x289dd1f6
á¨áľááą ááĽá á ááľ áá¨áá á áá áľ.
á¨á°ááá° áááľááᢠáá ááĽá áá áá? á¨ááŤá áłá¨
invokeWithLayer3#b7475268 query:!X = X;
áłá˛áŤ ááĽá áá á á? áĽááľá áĽáá°ááááąáľ,
invokeWithLayer4#dea0d430 query:!X = X;
á áľáá? á áᣠáááłá á áŁá áá ááᣠáĽáááłáá á áľáĄá áľ áĽáŤááłááą á¨áá ááĽááĽá áĽáŤá á áĽáá°áá ááááľ áአááááľ áá á áá á áá áľ - ááá ááĽááľá á¨á°ááŤáŠ á¨áá áĽáá´áľ áá áĽááąá ááá¨áľ áá˝áá? áĽá á¨ááľ áááľ 4 áŁááľ áá¨á á áŁá áá¤áłá áá´ ááᢠáľááá áŁ
invokeWithLayer5#417a57ae query:!X = X;
ááá áá á¨áĽááľ áá á áá áá á ááľ ááááľ áŁáŤáá፠áĽáá°ááá ááá˝ áá. áááľááá ááŁáĄ-
á áááᥠᨠ9 ááĽááĽá áááŽáŁ á áἠáá´áá˝
invokeWithLayerN
áá áĽáť áĽá á áá ááá áá˝ááinitConnection
ááŹ! ᨠ9 áľáŞáśá˝ á áá á áá¨á¨áť á 80 ááš ááľáĽ á á áááá¨áĽ ááŽáśáŽáá˝ ááľáĽ áá° á°á¨áááá ááá á°áá°áá - á áááááą ááááŞáŤ áá á ááľ áá á áľáŞáľ áá á°áľááá°áá!
áłá˛áŤ ááĽá áá á á?...
invokeWithLayer10#39620c41 query:!X = X;
...
invokeWithLayer18#1c900537 query:!X = X;
á áá áá á ááá ááłá áľá˝ááá . á¨áá 9 ááĽááĽáŽá˝ á áá ᣠá¨áľáŞáľ ááĽá áŤáá áááá°áá ááᢠá áá¨á¨áť á°á¨ááŻá ᣠáá á á áááááą ááááŞáŤ áá á ááľ áá áĽáť áá áŤáľ á áá ᾠᣠáĽá á¨ááĽááĽáŽá˝ áľááá á¨á á áááľáá ᣠá áá áĽáá° áááłá áľáŞáľ áá ᣠá ááá áŚáł. á˝áአá°ááˇá.
á áľááá?..
áŤá˛áᣠ[16.07.18 14:01] á áἠáááľ áĽááłá á á°áĽáŠáĄ-
á´á á áááአáŤááĽáŤá ááľá°áśá˝á áááŤáᢠáĽáŤááá˝ InvokeWithLayer ááľáĽ áá á áá á ááŁá¸áᢠá áááአááááá˝á á áŤá ááááᤠááážá˝á áĽá ááááá˝á ááá á áá ááá ááá á á¨ááá˘áĽáááŤá˘ á°áá áá ááťáťáŤáá˝á á¨ááááá áľá ááĽááĽá áááá˝ á áá˝áá
Vadim Goncharov, [16.07.18 14:02] InvokeWithLayer á ááá á°á¨á ááŤáá˝ á áá°áá?
Vasily, [16.07.18 14:02] áá áĽá¸áá ááááľ áá
Vadim Goncharov, [16.07.18 14:02] áá á á áá á¨áą á ááá ááá ááááŞáŤ áá á ááĽááĽáŠ áá ááľáááľ á áá áľ.
á áááŤá˝á áá á¨á°áá á áá˝áááá á áá°á°á á
ááááá˝áŁ áááľá ááááľ Updates
á áĽá
áą ááľáĽ ᣠáá
á áááአáá°áá áá á¨ááá¨á áá¤áá á áĽáŤá ááá˝ áłááá ᣠá ááľ ááľá°áľ á˛á¨á°áľ ááĽáťá ááᢠáá
á áá á˝áá ááľáĽ á¨ááĽáŤáŤ ááľáĽáľáĽ áááľ áá, á áá áá á°áá áá á¨ááľáá áá á˘ááá á áááአááááá˝á áĽáá°ááŤáľááἠááá
á áľááá áá.
áľááá , ááá á áá ááá°á áŤááá áĽáŤááłááłá¸á áĽá˝á áľáŞáąá ááááá¨áľ ᣠáá ááááŤáłá á áá ááááľ áá°áá¨á°ááľ ááá á¨áá˝á á˝ááŽá˝ áááŤá á˘
- á°áá áá á¨áľááá áľáŞáľ áĽáá°áá°áá á¨ááłáá á ááľ á áááአááťáťáŤáá˝á áá°áá áá áááŤá
- á°áá ááá áŤáťáťáአá áá áá ááľá¨á á ááĽá?
- áá ááľáľááá˝á áá°áą áá áľ á áááአáľá ááĽááĽá ááĽá áŤáá á áľá°áŤá¨áľ á ááá¨áá?
áá á ááľá ááłáŁá ááááľ áĽáť áá áĽáá áŤáľáŁá ᣠáĽá á á°ááŁá áá ááá á áá˝áá ᣠááááŤáąá á áááአá áľááá áľáá°áťá (á˘áŤááľ á áĽáŠ áááł á¨á°áá¨á¨ áá)? á! ááá á˘áá!
á ááá´ áá á¨ááŁáá áľ áááł áá ááᢠá ááá´ 14ᣠá á´áááŤá á°áá¨áŽá˝ áá á¨áá ááá áĽá¨á°ááá áĽáá°áá á¨ááááš áááĽááśá˝ áá áŠ... áĽá á¨ááŤá á áááἠááľáłááťáá˝ ááľáĽáĄ-
2019-08-15 09:28:35.880640 MSK warn main: ANON:87: unknown object type: 0x80d182d1 at TL/Object.pm line 213.
2019-08-15 09:28:35.751899 MSK warn main: ANON:87: unknown object type: 0xb5223b0f at TL/Object.pm line 213.
áĽá á¨ááŤá áĽá áááŁááľ á¨á°ááá áąáŤáá˝ (á á°ááĽ, á á°ááłáłá áá áááἠááľáłááťá á°áľá°áŤááá). ááááŠáŁ á ááľ ááá á áĽááľá TL ááľáĽ áŤááłááᣠá ááá áááľáŽá˝ ááᣠá¨ááľáአá áłá˝ ááá áááłáᣠáááłáľ á¨áááťá ááááᢠá áĽáá°áá ááááľ áááł ááľáĽ áá ááľá¨á á ááĽááľ?
á°á áᣠáá° ááááá á°á á áĽáᎠá¨áááŁá á¨ááááŞáŤá ááá áááááąá ááá¨áĽ áĽá áĽáá°áá ááá¨á ááᢠá áá¨áłáᢠáĽá google CRC32 - áĽááá á¨áá áľ 73 á¨á°áá áááŽá˝ ááá á°ááá°ááᣠááá áĽááłá á 82 áá áĽáá°áŤá ááášá á áĽááá áĽáááá¨áłáá - á¨áááľ á¨á°ááŤáŠ áĽá áśá˝ áááŤáá˝ á á!
ááááŁáľ á˝áአá áĽá áŚáá´áá áŁááá á°áá á ááľáĽ áĽáť áá? á áᣠá´áááŤá á´áľááśá 1.2.17 (á á ááŤáł ááááľ áľáááśá˝ á¨áááἠáľáŞáľ) áĽááľááá¨áááᣠáá° áአáááἠáá˝ááᥠMTP áŤáá°á á á á áááľ ááłáá፠#b5223b0f á MTMessageMedia ááľáĽ ááá áŁáâŚ
ááá áá°á á˛á áá áŤááá á°áá áá˝ á á ááą áá á°ááłáłá á˝áá áĽáá°á°áá ᨠá áłááˇá ᣠáá á¨á፠á¨áľáŞáľ ááĽáŽá˝ áĽá ᣠá áá áá á¨áľ ᣠáááśáš á¨á°ááŤáŠ áá áŠâŚ
áłá˛áŤ áá áĽááľáá? áĽá áĽá áŤá˛á á°ááŤá¨á: áá¨áłáá áá° 91 ááááá áááŻá, áĽááľ áááľá ááá á á áĽá á 73 áá áááá¨á áá°ááŠá. áááąá áá´áá˝ á áá°áá, ááá áá á°á¨áŁá áľááá áá áŤá á áá° áá ááá áá° áłá˝ áĽáá°áááá ááá áááᤠá¨áá. ááááá ááá ááá áŤá á áá áá á á á ááĽááľ.
á áá áááłáá áĽáá°áá ááŁááľ áťááŠ-á°áá ááá á áľááá¨áá, á áĽáá, áá¨áłáá áá° áá ááĽááĽá áĽáá°á áľáŁáá, áĽáá°áá á áľááá, á˝ááŠá áĽáá°áá áŤá, áá° ááłáá á°áááľ - áŚá, ááá á áááľ á¨áá¨áł áááŤá¨á áĽá á°áá áá áĽáá°áá ááááŤá. áĽááľ á°áááá˝ áá¨áłá. á¨á°ááŤáŠ ááĽááĽáŽá˝ á¨á°áááą á¨ááἠá ááááŽá˝á ááá áá.
ááĽáŤáŞáŤ? á¨á°ááŤáŠ á¨á°ááá᪠ááááśá˝ áĽáá°ááááąáľ á áááአá á°ááŤáŠ áá˝áá˝ áá á¨á°ááŤáŠ á áááľ áĽá áá°áśá˝á áŤáá ááᢠááááŁáľá áâááá¨áŤâ á°á áŤá á¨ááá á áááá á áááš á¨á°áĄáľá áá¨á ááľáĽ á áľááĽá°á á áľáááą áá á áá á¨á áĽá áľ ááľáĽ á°áĄáľá˘ áĽáá áá áá¨á "á¨á á°á á°" áĽáľáŞáá áľá¨áľ ááá ááľá¨á á ááťáá.
ááááŁáľ ... áá áá á áŁá á áľá᪠ááŤáá˝ áá?!.. á áá°áá, áľá áĽáĽáľ ááłáŚá˝ á¨áá°áĽá á ááľ, áŚáá´áá á°áá áá˝á áŽáľ áĽáá. á á ááľáŽááľ áľáŞáľ ááľáĽ ááá á áááľ á¨á˛á¤á á°ááłá á áááááᣠááá áá á¨áŁáľ ááá (ááľá ἠáááŤá ááá°á á áá°áá) á (de) á°á¨áłáłáááľ á ááá°ááᢠá¨áŽáľ á ááĽáŚá˝ áĽáááááĄ
public static class TL_message_layer68 extends TL_message {
public static int constructor = 0xc09be45f;
//...
//ĐľŃĐľ паŃка пОдОйнŃŃ
//...
public static class TL_message_layer47 extends TL_message {
public static int constructor = 0xc992e15c;
public static Message TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) {
Message result = null;
switch (constructor) {
case 0x1d86f70e:
result = new TL_messageService_old2();
break;
case 0xa7ab1991:
result = new TL_message_old3();
break;
case 0xc3060325:
result = new TL_message_old4();
break;
case 0x555555fa:
result = new TL_message_secret();
break;
case 0x555555f9:
result = new TL_message_secret_layer72();
break;
case 0x90dddc11:
result = new TL_message_layer72();
break;
case 0xc09be45f:
result = new TL_message_layer68();
break;
case 0xc992e15c:
result = new TL_message_layer47();
break;
case 0x5ba66c13:
result = new TL_message_old7();
break;
case 0xc06b9607:
result = new TL_messageService_layer48();
break;
case 0x83e5de54:
result = new TL_messageEmpty();
break;
case 0x2bebfa86:
result = new TL_message_old6();
break;
case 0x44f9b43d:
result = new TL_message_layer104();
break;
case 0x1c9b1027:
result = new TL_message_layer104_2();
break;
case 0xa367e716:
result = new TL_messageForwarded_old2(); //custom
break;
case 0x5f46804:
result = new TL_messageForwarded_old(); //custom
break;
case 0x567699b3:
result = new TL_message_old2(); //custom
break;
case 0x9f8d60bb:
result = new TL_messageService_old(); //custom
break;
case 0x22eb6aba:
result = new TL_message_old(); //custom
break;
case 0x555555F8:
result = new TL_message_secret_old(); //custom
break;
case 0x9789dac4:
result = new TL_message_layer104_3();
break;
ááá
boolean fixCaption = !TextUtils.isEmpty(message) &&
(media instanceof TLRPC.TL_messageMediaPhoto_old ||
media instanceof TLRPC.TL_messageMediaPhoto_layer68 ||
media instanceof TLRPC.TL_messageMediaPhoto_layer74 ||
media instanceof TLRPC.TL_messageMediaDocument_old ||
media instanceof TLRPC.TL_messageMediaDocument_layer68 ||
media instanceof TLRPC.TL_messageMediaDocument_layer74)
&& message.startsWith("-1");
á... á¨áąá áááľááᢠáá ᣠááááŁáľ ᣠáá
á¨ááᨠáŽáľ áá ᣠá¨á፠áĽáş? .. áá á áĽááá áááľ áááá áľáŞáśá˝ áá°ááá! áĽáááľ áá, ááá ááá ááá á ááľ áá áĽáá°áá°áŁáá
, ááľáĽáŤá ááááśá˝ áĽá ááá á áááľ ááá áĽáá°áá ááá˝ á áá°áá _old7
áĽáá°ááá á¨áá˝á áááá¨áľ á áľááľáá... á˘áááᣠá¨ááá á áá áá á°áááľáŠ
TL_message_layer104
TL_message_layer104_2
TL_message_layer104_3
ááśá˝áŁ á á ááľ ááĽááĽá ááľáĽ áŤááá áĽááłá ááá°á á áľá˝áá?! á°á áᣠáĽáşáŁ áĽáá áᣠâáááľâ á áľá á°áľ á°áááᣠá°á áᣠáá¨á°áłáᣠáá áśáľáľ?... áá˛áŤáᣠáŤá áŹá áĽáá°áá? áá áá á áááľ á¨áá˛áĽ ááá áá áá ááł?...
á á´áááŤá á´áľááśá ááá áŽáľ ááľáĽ ᣠá áááŤá˝á áá ᣠá°ááłáłá ááá áá¨á°áłá - áĽáá°á፠á¨áá ᣠáĽááá˝ á á°á¨áłáłá áá° áááááĽáŠ á¨ááĄáľ á¨ááĽááĽá ááĽáŠá á ááááĄá ᣠáá á¨áá ááá áŤáľá°áŤááᢠááá áą ááá ááááľ áŚáá´áá á¨áá¨á ááá á ááá áľ áááł á¨ááá á°áá á áááŽá˝ á áľá°áá á¨á¨áľ ááá áá˝áá? áĽá á¨á፠á¨áá°áąáľ, áááá áá´áá˝ áĽáľáŞááአáľá¨áľ áĽá áą áá á áá áľááá áááá áĽááá á ááá á áá˝áá.
áá áĽáá´áľ ááá¨á áá˝áá? á¨áŠááľáŁ á°ááŁáŤá áĽá ááá˝ áá¨áŤáá˝ á°áááá˝ á á áľá°áŤá¨áśáš ááľáĽ áĽáá°ááŤáá á°áľá á á°ááááá˘
áĽáşáŁ áá áŽáľ áĽáááĄ-
public static class TL_folders_deleteFolder extends TLObject {
public static int constructor = 0x1c295881;
public int folder_id;
public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) {
return Updates.TLdeserialize(stream, constructor, exception);
}
public void serializeToStream(AbstractSerializedData stream) {
stream.writeInt32(constructor);
stream.writeInt32(folder_id);
}
}
//manually created
//RichText start
public static abstract class RichText extends TLObject {
public String url;
public long webpage_id;
public String email;
public ArrayList<RichText> texts = new ArrayList<>();
public RichText parentRichText;
public static RichText TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) {
RichText result = null;
switch (constructor) {
case 0x1ccb966a:
result = new TL_textPhone();
break;
case 0xc7fb5e01:
result = new TL_textSuperscript();
break;
áá á áľá°áŤá¨áľ âá áĽá á¨á°áá á¨â á¨áá ááá ááá áĽáť á áĽá á¨á°áťá áááá áá ááá (áááá á¨áĽáá á á áľ ááááľ áľá˝ááá˝á?)ᣠá¨á°áá¨á á°áá á áá˝á á¨á°áá ᨠááᢠááá áá, á¨á፠áá áĽáŤá áááłá - áááŽáš áááá áá á áá á áá°áá (a la GPL blobs á ááááľ á¨ááá)ᣠáá áá á áľááľá á¨ááá°áá ááá áááľ ááá˘
áá á á ááᢠáá áá á°á¨áłáłáááľ áá° áá°áŤá áľ ááŽáśáŽá áĽáááľá˘
á¤áá˛ááŽáś
áľááá
áĽáááá°á
áááłáᣠâáááĽááľâ áĽá âááá-ááâ áááľ áĽáá á¨á°ááá°á á¨á´áááŤá á°áá á á áááá˝ á¨á°áᨠááá ááᢠá°á á ᣠá áááĽááą ááá ááá ááá áá ᣠá OOP áááľ áá°á¨áá áá˝áá ᣠááá á ááá âááŹáľâ á¨ááá áá á°áĽá áá ፠áá˝áá - áá áá á°á ᣠá¨áľáŤááľáááľ á°á¨á áá ᣠá áááá˝ ááľáĽ á°ááłáłá áááááśá˝ á¨áá ᣠáĽá á¨á áááááľ áááĽááśá˝ á áᢠ. áá ááá-ááá ... áá ááááŞáŤ áááŽá˝ ááááŞáŤá˘
á¨áááᣠááĽááĽá
á¨ááááŞáŤá ááá áááᣠáá. áľá 5 á ááŤáŽá˝ ááááŠáááĄ-
- TCP
- ááĽáśáŹáľ
- Websocket á HTTPS áá
- HTTP
- á¤á˝á˛á˛áá¤áľ
áŤá˛áᣠ[15.06.18 15:04] á¨áŠá˛á áľáŤááľáááľá á áᣠáá á áá°áááá á
áĽá TCP á áŚáľáľ á°áááŽá˝
á¨ááááŞáŤá á TCP áá ᨠUDP áá á°ááłáłá áá, áĽáŤááłááą áĽá˝á á°á¨áłáłá ááĽá áĽá ááŹá˛áľ áŤáŤáľáłá
á á᪠áá á°ááśá˝á ááá ἠááá áŤáá?
á°á
á, á áá á á
- áłá .á
- ááŤá¨áá
- á¨áłá¸á ááŤá¨áá
- áá
á°á áᣠáĽáşáŁ á¨áłá¸á ááŤá¨áá á MTProxyᣠáá á¨áá á áá á áłáá ááľá°áśá˝ ááááŤáľ áłáááᢠáá ááá áááľ á°á¨á᪠áľáŞáśá˝ (á á á ááá áśáľáľ) á á ááľ ááááľ á˛á˝á? á áŤáąá á¨áááŤáŠáľ á¨áááá MTProto áááá áĽá áááľ áĽáá´áľ áááá á áĽáá°ááťá áĽáť ááᣠáá á á¨á áá ááĽáŤáŤááĄ
- á á áĽáŞá áľ ááľáĽ 1 ááá 4 áŁááľ áá ᣠáá 0xef á áá°áá ᣠá¨á፠á áŤá
- á ááŤá¨ááá áá
4 áŁááľ ááááľ áĽá ááľá áá, áĽá á°áá áá áááááŞáŤ áá ááá á áá áľ
0xeeeeeeee
ááŤá¨áá áááá ááááá¨áľ - áá á áŁá áąáľ á¨ááŤáľááᣠá¨ááľááá á°áŞ áĽááł á ááťáᥠááááľáŁ á°á¨áłáłá ááĽá áĽá ááá MTProtoᣠá áŤáᣠCRC32 á áá°ááᢠá áᣠáá áá á TCP á ááľ áá ááᢠá°á¨áłáłá áŁááľ áĽá¨áľ á áááľá ááአá áľá°ááá ááááŁá áá°á ááᤠááá á áááľ á á°á á°á¨á°áá˝ á áŤáľáááá á á°ááá áźáŽá˝á˘ áĽáşáŁ á áá á ááľ á°á TCP áŁá 16-á˘áľ áźáá°á áĽááłáá ááááááᣠáľááá á¨ááἠáá áá¸áľ áá¨á°áłáᢠá áŁá áĽáŠáŁ ááá áá á¨16 áŁááľ á áá á¨áá áá˝ áŤáá ááŞááśááŤáá ááŽáśáŽá á ááᣠáĽááá áá áľá á°áśá˝ - áĽá á¨á áá - á á¨áá°á á°á¨á á SHA á ááááŁá á ááŤááᢠá áá áá á CRC32 ááá ááĽáĽ á¨ááá˘
á ááľ áŁááľ áááá á¨ááťáá áľá á áĽáŞáľáľ ᨠIntermediate áá áĽáááłáľáᣠáá á âáŁá 4-áŁááľ áłáł á á°ááá á˘áŤáľáááâ á¨ááą ááᢠááᣠá¨á´áááŤá ááŽááŤá á áľáŤááá˝ áĽááľ á¨ááá¸á á¨áááá¸á á¨á°ááł áá¨áá á¨áśáŹáľ áá° aligned buffer ááá ἠá áá˝áá á°áĽá ááłááá? á ááá áá áá ááľá¨á á ááŚáľ, ááááŤáąá ááá ἠáááááá á¨áŁááľ ááĽá ááááľáá áá˝áá (áĽáá˛áá ááŽáᲠá°áá¨áŽá˝á á á, áááłá ...). ááá á áá á áŠáᣠá ááá á 16 áŁááľ áá á ááŤáŤ ááŁá á¨áŤáá á áĽáŞá áľá ááá áĽáááááá - 3 áŁááľ áááĽáĄá˘ á ááłááľ áá ?
á ááľ á°á ááŽáá áąáŽá á¨ááľááá ááŽáśáŽáá˝á á¨áᎠáááá˝á áĽáá°áá áááá°á áĽáá°áááľ áá°ááá ᣠáŤá ááá áĽááá°á á°ááŁáŤá ááááľá˘
ááá˝ á¨áááᣠá ááŤáŽá˝, á¨ááŽ. áἠáĽá MTProxyᣠáĽáŤá áŤáᣠááááŁáľ á áá ááĄá á˝áá áá á áá á áááá¨áľáᢠáľááá MTProxyᣠá áá áĽáť áĽááľáłááľ á 2018 á¨á°ááá á áá á á áŤá˘áá˝ á ááĽááľ áĽáąá áááľ áĽáá°á°ááŠáŁ ááá፠áááľ, á ááˇá á¨áĽá á áá á! áĽá á°áá á C ááľáĽ á¨á°áťáá MTProxy á áááá (á áľáá á áááľáá) á¨ááááľ ááááŽá˝ áá á¨áá á á áá á¨á°áłá°á¨ ááá ááá áĽááłá áá á ááŤá˝ á áŤáľáááá (áá áŠáá áŤá¨áááŁá) áĽá á Go ááá Node.js ááľáĽ áŤáá á°ááłáłá á áááá á¨ááś áŁáá° ááľááŽá˝ ááľáĽ á°áľááá˘
ááá áá ááá˝ ááłáŽá˝á á¨áááľ ááľáĽ áŤáľááŁá á áá áľá áĽááá á°áá˝ á´áááŤá áĽáááľ á ááá áá¨á¨áť áá áá°áá°á፠áá áĽáá°ááłáá. áá ááᣠáá° OSI ááĽááĽá 5 áĽáááľáŁ ááá áá - MTProto ááá ááá áŤá°á¨áá áľá˘
áááá˝áŁ áááááśá˝áŁ ááá-áááá˝áŁ Diffie-Hellman
áá á áá á áľááá á áá°áá áĽá፠á áľááá ááłá... á ááľ ááá áá á áá ááá áááá˝ ááľáĽ á á ááááš áá á¨ááłá¨á á°ááłáłá ááá áá á áá°ááᢠáá á á á°á á°á¨á°áá˘
áľááá á¨ááááŁá ááĽááĽá á¨ááłáá ááááľ áŤáá áŁááľ ááĽá¨ááá á°áá ááᢠáá áá á¨á°áá°á ᨠáááĽááľ ááá ááá˝ á˝áá áá - á ááá á ááá áľááááľ á°á¨á áá á¨ááá áĽá áĽáŤá°á¨ááá á¨ááᢠ"ááá" á¨ááŁááľ á˝áá°-ááłáŚá˝ ááŤá¨á áľá á¨áľáá áá áĽá¨á°ááááá áŤááá? áá áá ááłá áá´áááŤá áĄáľá áĽáŤáą áĽááĽáŤáŤ (á¨á ááą 4 á°á áľ áá á¨áŤá´á á°ááľ á¨áĽááááá á á°á¨á á áĽáᎠáľáá°á¨ááአáá ááł áĽá áááá ᣠá ááłááľ áá¨áá˝á áĽáá°ááą áá°á ááá áá á)
á¨ááŁááľ áááľ á áŤááľ á áᢠááá áá - áĽáŤááłááą ááá áá á¨ááá ááŁáŞáŤ / áľááá° ááá áá á áááłá°áá áľ âá á áá ááá-áááá˝â áľá áŁáá áŚáá´áá á°áá áá˝ UI ááľáĽ á ááąá˘
ááá°á - MTProto ááá áá, á ááľáĄá á¨áááĽááą á°á¨áłáłá ááĽá áŤáá (á áá á°á á°á¨á) áĽá á¨áľáá áá á á°ááŤáŠ ᨠTCP áááááśá˝ ááŤá¨á ááá áá˝áá. áĽá MTProto ááá áááá˝á á á°ááłáłá áá ááŤá ááťáá, áááłá, ááá ááá¨áľ áááá á.á áĽááá á áááą ááŤá¨á ááá- á˝áá°-ááłáĽ á á áááľ. á á°á áḠáááł, áĽá áááľ áĽáá˝ááá á¨áŠá á ááá áá áá á°ááłáłá áá áááľ, áá ááŽ, ááá ááá á¨á°ááłá°á áá. áĽáľá˛ áĽáááá¨áľáĄ-
- á á á˛áą ááŁáŞáŤ áá áŤáá á°á áá á ááááŞáŤ áŤáááŤá auth_key áĽá á¨ááłáĄ áá áŤááááá, áááłá á á¤áľá¤áá¤áľ - ááá áá áááľ
- á áááááŤá ááľáĽ á°á¨á°á° MTProto ááá áááŤáá
session_id
á áŤáľá ááľáĽ á˘- á áá á°á¨á, áĽáá¨áľ ááᾠи
session_id
á°áĽá áá ፠áá˝ááᢠáĽááŁá - áá áá á á ááłááľ á°áá áá˝ á°ááśá˝ áĽá áŽáľ ááľáĽ ááłáŤá- á¨á፠á°áá áá ááááľ áá˝ááᢠáĽá á¨MTProto ááá-áááá˝ á á°ááłáłá áľá auth_key - áá° á°ááłáłá á˛á˛.
- á¨á፠á ááľ áá á°áá áá áááá á¨áĽáŤáá áá á¨á áááá áłá áá á˛á˛ - áĽá ááá á˛á˛ á á˛áľ ááá áŤá auth_key !
- áľáááą á á˛áľ á°á áá á ááááá áááłáá , áá á°ááłáłá áá áááľ (á¨áŠá á ááá áá), á°áá áá á¨á¤áá á áĽáŞáá˝á áá ááá
auth.exportAuthorization
á á¤áľ á˛á˛auth.importAuthorization
á á á˛áą á˛á˛.- ááá ááá á ááľ áá, áĽáááš áááľ ááá áá˝áá á¨MTProto ááá-áááá˝ (áĽáŤááłááłá¸á á¨áŤáłá¸á áá
session_id
) áá°áá á á˛áľ á˛á˛áŁ áľá á¨áĽááą auth_key.- á áá¨á¨áťáᣠá°áá áá ááá á¨áá áá°ááľ ááľáĽáŤáááľá áááá áá˝ááᢠáĽáŤááłááą auth_key áá á áá ááá - á á˛á˛ - áĽá á°áá áá áá°áá áá˝ááá˘
auth.bindTempAuthKey
ááá áá áááŤá auth_key - áĽá áĽáá°áá, á ááľ áĽáť temp_auth_key á á˛á˛áŁ áááá á¨á°ááá° á¨MTProto ááá-áááá˝ áá°áá á˛.á˛.áἠáá á á¨á (áĽá á¨áá°ááľ á¨áá˝á) áĽáá˛á á ááľ áá auth_key áĽáááŤá˘ á ááá á°á ááŤá¨á á¨á°á፠á¨MTProto ááá-áááá˝ áá° á°ááłáłá á˛á˛.
"á á°ááŤáŠ á¨TCP áááááśá˝" ááŤá¨á áá áááľ áá? áľááá áá áááľ ááᢠáá áĽáá°á á áááľ á¨áááľ áŠáŞ á áľá áŁá˘áŤ áá - á¨á°á°á á áááá áá áĽá ᨠTCP áááááśá˝á áááĽáá (áá°ááá)ᣠáá á ááľ áá ááĽá ááááᢠá¨á¤á˝á˛á˛á á á°áᨠááአá MTProto ááľáĽ áŤá áááĽááśá˝ á á á°á á°á¨á°á á°ááĽá¨á á¨á°á¨ááᥠáá¸áᤠáá° ááťá ááľáĽ á¨áᥠáááááą á°áá¨á - á á˛áľ áááááľ á¨áá ᨠá áá á áááአá ááľáá á áá ááá áá áŤáá°á¨á°áá áá á á ááĽáŽáľ áááŤá TCP áááááľ.
ááá áĽáá á¨áá áŤáá áá¨á á¨áĽá ááŤáľ ááá፠á áá á°á ááá. áĽáľá¨ááŤá áľá¨áľ á°áá ááťá˝áá á¨áŁáś áĽá¨á°á°áá áá áá? - áá° ááááŞáŤá áĽááááľ.
áľááá
áĽáááá auth_key
áá
Vasily, [19.06.18 20:05] data_with_hash: = SHA1 (áłáł) + áłáł + (ááááá á¨áááá° áŁááľ); ááááą 255 áŁááľ áĽáŠá áá;
á˘áááŞááľáľ_áłáłáĄ= RSA(áłáł_áá_áá˝áŁ á áááá_public_key); áŁá 255 áŁááľ á¨á á ááĽá (áľáá á˘áá˛áŤá) á ááááá ááá áá áá°ááááá ááá áááłáᣠáá¤áąá áĽáá° 256-áŁááľ ááĽá á°ááá§áá˘á ááłááľ áśá á˛á¤á˝ á áá¸á
á¨á¤áá á°á á˛á¤á˝ á áááľááá˘
á dx ááľáĽ áááľ á¨á áἠáááá˝ á¨áá
á°á
á ᣠá áá¨á¨áť áá
á°áľá°áŤááá ᣠáá ááŞáá˝ ááá°áá - á¨áĽáŤ áá¨áááŤá á á°áá áá ááĽáŠá ááááŤáľ á˝áá ᢠᨠDoS áĽááśá˝ á¨áá¨áá¨áŤ á áááľ. áĽá ᨠRSA ááá á á ááľ á á
áŁáŤ á ááľ áá áĽáť áĽá
á áá áááá, á áá á¨áą ááááľá á new_nonce
. ááá áá áá
ááá á¨áááľáá ááś áĽáá á˘áłáŤá áá ááŤááĽáááľ áá˝áá?
áŤá˛áᣠ[20.06.18/00/26 XNUMX:XNUMX] áĽáľáŤáá á¨áá°áá áŞáŤá áĽáŤá á ááááá
áá áá áĽáŤá áDH
áĽá á áľáŤááľáááľ ááľá¨áŤá ááľáĽ á 4 áŁááľ á¨áľá á°áľ áŽáľ ááá˝ ááľá áľ áĽáá°áá˝á ááááŤáᢠááźá áá
á°á á ᣠááá¨á -404 ᣠáłá˛áŤ áá?
áĽáá áĽáá˛á á ááŠáľáĄ âá áá á áááľ á¨áŁáľ á áťáŤ á á áááá ááá á˘áááŞááľ á¨á°á°á¨ááá áĄááşáľá á áŤáᣠᲠá¤á˝ áĽáááááâ áĽá á á á 404 ááá°á˘
áľááá á¨á áááá ááá˝ áá áŤáľáŁá? áá áááľá¨á? á¨áá áá á¨áá (á ááá°áá ááá áá áá á¨á áá )á˘
áĽáá ááá ááááľ á ááľá¨áŤá áá áá¨áááá
áá á¨áá°ááá ááá á¨áááᣠááĽáŽá˝á áá° ááľ áĽá áá° ááľ á¨ááá¨á á áá áá á¨áá˘
áááľ 32 á˘áľ ááĽáŽá˝á˘ áĽáá°ááá á°á á¸ááłá¸á
áá á ááááᣠáĽááá áááą áĽáá° BE ááááŞáŤ áá° ááľáá áá¨áá á ááŁá¸á
Vadim Goncharov, [20.06.18 15:49] áĽá á áá 404 ááááŤáľ?
áŤá˛áᣠ[20.06.18 15:49] á á!
Vadim Goncharov, [20.06.18 15:50] "áŤáááá" áá áĽáá°áá á áááŁáá.
áŤá˛áᣠ[20.06.18 15:50] á áááľ
áĽáá˛á ááááąá áá áľá áľ áá° áá ááááŤáśá˝ ááááľ á ááťááŠá%)
áľá á°áľ áŞáááľ ááľá¨áá áĽááłá á áááá áááá˘
Vasily, [20.06.18 20:18] áŚá ᣠMD5á á áᢠá áľááľá áŚáľáľ á¨á°ááŤáŠ hashes
á¨ááá á áťáŤá á áá¨á°áá ááአáá°áááĄ-
digest = md5(key + iv) fingerprint = substr(digest, 0, 4) XOR substr(digest, 4, 4)
SHA1 áĽá sha2
áľááá
áĽááľááá á auth_key
Diffie-Hellmaná á áá áá 2048 á˘áľ áá á á°ááĽáááᢠááĽá áá á á? á ááá á á¨áá
ááá á¨áłá˝áá 1024 á˘áľ á ááá ááááľ áĽá
á áá áĽáá°áááá áĽááľá°áááá ... áá áá áá áľááá
ááłá áĽááľáĽá˘ á áá
á°á¨á á¨á áááአáá á¨á°á፠ááľáĽá á ááᢠá¨á˛á¤áá¤áľ ááá áá á ááá á°ááľááˇá, áá
á á áŁá ááľ á¨áá á á°áŤá áá. áá á áááአá ááá áľáááááłá˝á ááá á¨ááŤááá ááá á¨áá! áá á áá°ááᣠá áĽáááąá˘ áááľ ááľá áľ. áĽáááŤá˘ á á ááľ áá
áľ á ICQ áĽááłá°á¨ááľ ááá á˘áŤááľ âááá˘áŤ-áááâ áĽáá° á¤áľá¤áľá¤á˝ (áááłá á á ááłááľ gitlab/github) á âááá˘áŤ-ááá ááâ áŤá°áĄá˘ ááááą áŤááłáá á°á á°á¨á°áᢠá áááአ"áĽááá
áľáá ááĽáŽá˝ á áá á˛á˛ á áááááľ áá°áŁá" á˘áááľ? ááá á°áá "áľáá ááĽáá
áłááˇá"? áĽá ááľá¨á á¨ááá˝áá áĽáŠá ááá á áá áĽáá°ááá áĽá á ááŤá áá áĽáá°ááá á°áĽáľ á°áľá á ááľá¨á áá.
á áááŤá˝á áá, á á°áŤá áŚáłáá˝ "á°áá ááá". áááłá á ááááŠá áĽááááá? á¨áá¸áľ á¨áááľ? ááŞááśááŤáá áá°áťáá˝ áŤáľááá áá ááĄ-
Vasily, [21.06.18 17:53] á¨ááŁáá á°áá áá˝á áááłáááľ 2kbit ááĽá ááá¨ááἠáá°áŁá%)
áá á ááŤá˝ ááá˝ á áá°áá, nafeijoa
Vasily, [21.06.18 18:02] á°ááą ááá áŤááá áá ááľá¨á áĽááłáá áľ á áááá˝á.
á áá°áŁááᢠá áá
ááłá áá áŚáá´ááá á¨á ááľáŽááľ á°áá á áá áĽáá°áá°áŤ áĽáá? á
278 static const char *goodPrime = "c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b";
279 if (!strcasecmp(prime, goodPrime)) {
á áᣠá áĽááἠá ááá áĽá፠á áᢠá ááłááľá˘ á¨ááĽá ááłáááľ áá°ááá˝ á áᣠáá á áá á¨á áá á áá á á á¨ááłáĽ áĽáááľ á¨áááá˘
áĽáşáŁ áá ááá á ááá°ááᢠááááŁáľáŁ áááľá áĽ.á¤.á . áĽáŤááá˝á ááአᣠAES á á áá áá á°á¨á᪠ááľá áŤá áá¨ááá áŤáľáááááłáá˘
á¨áááĽááľ ááá áĽáá° SHA128 á¨áááĽááľ á áŤá 256 ááŤá¨áá á˘áľáľ (á¨ááá ááᣠá¨áááááľ ááłáááŤáŁ ááá°. á¨ááŽ)ᣠá¨áá á á፠áŁááľ á¨ááŽáŁ á¨áááľ ááá á á°áá°á° 32 áŁááľ á°ááá áˇáá˘
áŤá˛áᣠ[22.06.18 14:08] á ááŤáᣠá´áľ ááťáŁ á˘áľ
á°á¨á°
auth_key
. áááᢠá¨ááą áŁáťáá... á¨á°ááą ááá á áá°ááᢠá¨áááľ ááá áŽáľ áááĽááľ ááááľ áá°áá á˘MTProto 2.0 á¨12 áĽáľá¨ 1024 áŁááľ áá˛áá áĽáá°ááŤáľáááá áἠáá áᣠá ááá áá¤áą á¨áááĽááľ ááááľ á 16 áŁááľ ááŤáá á áá˝á áááł áá ááá˘
áľááá áá áŤá á ááŁá áá¨áá á ááĽááľ?
áĽá á áᣠáľá á°áľ á¨á°áá ᨠ404á á áá˘
ááá á°á á¨á°ááśášá ááľá áĽá á˝áá á áĽááá áŤá á, áĽá፠ááá MAC áĽáá°áá á áľá°áááá. áĽá ፠AES á áá á ááááá áŚáł áĽá á áá á áááá á á°áá°á ᨠIGE áááł áĽá á áá áááá. áĽááą á áĽááἠáľááá ááłá á áĽáŤáááťá¸á ááľáĽ áá˝áá ... áĽáá ᣠáá ᣠá¨áááĽááą ááá áŤáą áĽáá˛á á˛ááŞááľ á¨á°á°á¨áá áłáł SHA áá˝ áá ᣠáľááááááľá ááá¨ááἠáĽá á áá áááá - áĽá á ááááŁá á á áááá áľ áá á°ááśáš á áá ááááŤáľá˘ áĽáááąá á áááł á˝á áááľá ááááŤá (ááá áá áľá á°á áááľáľáŁ á˘á°áĽáŠááľ?)
áĽá ááŞááśááŤáá á áá°ááá, ááááŁáľ á áá
áááł á áá
áááł á¨á˛ááŞá˛áŤá áĽááł á ááťá ááá áľá
á°áľ á¨áá áľá. ááá áá á´áááŤá á´áľááśáá áĽáá° ááłá á áá áá á°ááŁáŤá á˝ááá á ááá
áá°ááá áĽá˝áááᢠá á áŤáŁá˘á áŤááá áá¸á፠(áĽááá
á áá D877F783D5D3EF8C) á MTProto ááľáĽ áŤá áááááśá˝ áá á á°ááłáłá ááአ(á áá
ááłá áá áľáŞáľ 1.0 áĽáť) áŤááľáĽáŤáᢠá ááááŞáŤ á¨áááĽááľ ááá ᣠá¨á፠ááᥠáŤáą (áĽá á¨ááá áľáá
áá° áá áŚáł auth_key
256 áŁááľ, áŤááą msg_key
á¨ááá á
á)ᢠáľááá
, á˝áአá áľááá
áááá˝ áá á¨ááłá áááá. áá¸áá áááľ á
ááá˝á ááľááἠáŤáľáááááłá - á¨á°áá°á ᨠáĽá á˛ááŞááľ á¨á°á°á¨áᢠáĽá áááłá áááŁááľ ááá á¨áĽá¨áľ á°áááłáá˝ ááľá ááľáá˝ áŤá?... á¨áľááŞááą á áá ᨠMAC áá áŤá ááá˛á áá
áśá˝ á áĽá¨áľ áĽáá˛áŤááĄáľ áŤáľá˝áááłáᣠáá˛áŤáá áŤáľá°ááááᢠááá áá ᨠMTProto áá ááľá¨á á ááĽááľ ááááŞáŤ áá áááá áááĽááľ á˘áááŞááľ áŤáľáá ááá á˛ááŞááľ áŤáľááᣠá¨á፠áĽáť áá° á ááłá¨ áá¨áĄ ááá áá° á˛áľá áŤáľá°áááᢠáľááá
ᣠá á´áááŤá á´áľááśá á¨á
áἠáá áľáŞáśá˝ ááľáĽ áŁáá áá¸á፠ááľáĽ user_data
áá á
áá¸áľ áĽáá˛á áĽá
á áá áááá - á CTR áá᳠ᨠAES ááá˘
áŤá˛áᣠ[21.06.18 01:27] áŚáŁ IGE áá áĽáá°áá á°á¨áłáᥠIGE á¨áááááŤá á¨"á¨áá¨áá፠ááľá ፠áááł" áá áᣠá ááááŞáŤ ááŹáá¤áŽáľá˘ áŤáá°áłáŤ áá¨áŤ áá á (á¨áłááááľ áĽá áá á áá°áĽá) áĽá ááááľ áá á¨á áľá˘ ፠á¨áá°áŤá á¨20 áááľ ááá á á¨ááá á¨ááľá ፠áááł ááááŞáŤ áá áᣠáĽáąá á á áᥠáĽáá° OCB áĽá GCM áŁá áááłáá˝ á°á áááá˘
áĽá á áá ááááŽáš á¨ááŞá áá:
á ááŽáá áąáŽá á¨áááŤá á¨á´áááŤá ááᣠáŤáá áĄáľá áľáľáľáľ á¨á¤á˛á¤á áťáááŽááá˝á áŤáá á˛áá ááážáš á ááłáĽ áá¤á˝á˛áá˝ áá¸áᢠá¨á ááá á¨MTProto áľáŞáľ ááááá áááľ áááľ áá°á áá áˇá¸ááá˘
፠á áľáá ááᢠá áá á°á á°á¨á áá áááľ áááłáľ
ááá tls áĽáť ááá°áľ áá˝ááá˘
áĽáşáŁ ááľá áŤáá áĽá ááá˝ áĽáá
á áááŽá˝á á áá°áá áĽáá áᢠá áá¨á¨áť á á˛á¤á ááľáĽ á°á¨áłáłá áĽáŤááá˝á ááá áĽá ááážášá áá°áá¨á ááťáá? áľááá
áá áĽá áĽáá´áľ ááá á ááĽááľ? áĽáá
, áá´á áĽáá á
Vasily, [25.06.18 18:46] áááááľ ááááŤá áĽá á á°á ááá ááłáŞáŤ áĽá áá°áá áŞáŤ áá áá¨áá áŤáľáááŁáá˘
app_idᣠdevice_modelᣠsystem_versionᣠapp_version áĽá lang_code ááá ááá˘
áĽá á ááłááľ áĽáŤá
á°ááśá˝ áĽáá° áááá. áááľ áááá áááĽááľ ááááľ áá°áá
á invokeWithLayer ááá ááá á áááľ ááá˝ á¨áá áłá˛áŤ áĽáá áá á˝áá á á? á°ááá ᣠá áá áĽáá á - á°áá áá ááľááá áľá á áááአá¨áá áá ááá áá á¨á - áĽá áááá á¨ááááá áĽáŤá á áá˘
Vasily, [25.06.18 19:13] á áŽáą áá á¨áľ, á¨ááááŞáŤá áĽáŞ á áá ááťáť á°á á ááá áłá, áĽá ááŤá áĽáŤáą á invokewithlayer á°á á ááá.
ááááľáá initConnection á¨á°áᨠáĽáŞ ááá áŤááťáá ááá áá áá á
á፠ááá á áá áľ? á á ᣠáĽáá° á°ááá ᣠá áĽáŤááłááą ááá áá ááááŞáŤ áá áá áá áá°á¨á á áá ᾠᣠáĽá á ááľ áá á áá°áá ᣠáĽáá° ááá áááᢠáá! áŁáá°ááá° á°á áá áá ፠á áá˝áá! á áá á°ááŁáŤá á¨áááá áľ á°á¨á áá á°áá°ááá˘
á¨á¤áá á áá´áá˝ ááľáĽ áľáá˝ ááá áĽáť ááá°ááá°áá¸á á°á áááá˝ áááááĄ-
- auth.send áŽáľ
- auth.resend áŽáľ
- account.getPassword
- auth.checkPassword
- auth.checkPhone
- auth.ááááŁ
- auth.signIn
- auth.import áááľ
- help.getConfig
- help.getNearestDc
- help.getAppUpdate
- help.getCdnConfig
- langpack.getLangPack
- langpack.getStrings
- langpack.getDifference
- langpack.getLanguages
- langpack.getLanguage
á¨áĽáááąá á¨ááááŞáŤáᣠauth.sendCode
áĽá á á_á˘áľ áĽá á á_áá˝ á¨ááááá áľ áĽá á¨á፠á áá áŽáľ á¨áŤá á¤áľ á¤á á¤áľ á¨áááá áá áľ á¨ááááŞáŤ áĽáŤá á áᢠáĽá áĽá á á°áłáłá° á˛á˛ ááľáĽ á¨ááá (á áá
ááá ááľáĽ áŤá á¨áľáá ááĽáŽá˝ á áá á áááááľ áá°áŁá, áááłá), á¨ááŤá á¨ááááááá á¨á˛á˛ ááĽá áľá
á°áľ áá°ááľáĽáá. á¨áľááá á¨á á á á áľáŤáť á á˛á˛ ááĽá áááááľ áĽááłááŚáľ áááá
áĽááłá help.getConfig
. á á ááľ áá
áľ 5 áá¤áśá˝ áĽáť áá áŠ, ááá áá ᨠ2018 áłáá ááľá°áśá˝ á áá ááĽáŠ á á¨áá°á áááł á¨ááŻá.
á áá áĽáá á°á¨á áá áĽáá°á°á¨áľá áĽááľáłááľ á á áááአáá ááááłá¸á áłááłáá ᢠá áá á áľáŤáť áĽáť ááááľ á áŁá ááľ á áá°áá? ááá áá á áĽá ááá˝ ááááá˝á áŁáá°áá°á ᨠá¨MTProto ááá ááľáĽ á áłá°ááá? á°ááááá á°ááťááᥠâáĽáá´áľ áá á áá¸áľ á áľáŤáť á¨ááááąáľ RKN á ááááá áĽáá´áľ áá¨ááἠáĽáá˝ááá?â ááá á, á á á ááá, áŚáá´áá á°áá áá˝á áĽááľáłááłáá á¨RSA áááá˝ á°ááááᣠáááľá áĽ.á¤.á . áĽáť áľá˝ááá ááááľ áá áá¨á. á áĽáááą áá á¨áá°á¨áá á°áá ááťá¸á á ááá˝ áťááá˝ á¨ááá ááľá áĽááł áááá áá¨á áááááľ áá (á á áááᎠáá á MTProto ááľáĽ á áŤáą áá¨ááá á áá˝áá ᣠá¨áľ áĽáá°ááááá ááá áŤáľáááááłá)á˘
áĽáş á áá á¨á°áá á áááľ á°á¨áᣠáĽáľáŤáá áááľ á áá°á°á áá áĽá áááá¨áťá˝áá á ááľááááĽááᢠá áááአáŤáá°ááá° á°á áá áááľ áá´áá˝ áá ááá˝ áĽáá°áá°áĽ á áá áá¨áľ áĽááááááᢠáĽá áĽáá âŚ
áŤá˛áᣠ[10.07.18 14:45]
https://core.telegram.org/method/help.getConfig config#7dae33e0 [...] = Config; help.getConfig#c4f9186b = Config;
https://core.telegram.org/api/datacenter config#232d5905 [...] = Config; help.getConfig#c4f9186b = Config;
á áĽá áą ááľáĽ, á¨ááááŞáŤá ááá°á áááŁá
á tdesktop ááľá ááľáĽ áŚáľá°áá áĽá´áľ áá
á áᣠá¨ááŤá áá áááŽáŁ á áĽáááĽáŁ á°ááą á°ááááᢠááá áĽááłá áĽáá áłááá áĽáá°áá á ááŁáĽááľ á¨ááá ááá áá˝áá. áá᪠ááᢠáĽáá´áľ ááá á áá áľ? ááááŁáľ áááá¨áťáá áŤáľááááĄ, áŤáłááááłá? áŤá˛á áá á á á°á¨á, áá ááŽ, ááá ááá á áááŠáľá (áĽáá°áá, á ááá°áá ááá ááľáĽ áľááá ááłá áĽáááááŤáá).
... á áľááľáá áĽáá°ááá áá° á¤áá á áĽáá°á°áááłááľá á áľá°ááááᣠáááľá. áá°áááĽáá á°á¨áᣠáĽá á MTProto áááľ ááľáĽ á¨áá ááá á áááŚáá? ááá á áŤáľá°áá ááĄ-
áŤá˛áᣠ[28.06.18 02:04] ááᣠá e2e áá á ááłááľ áľáá° áááŽá˝á áĽáŤáŤáᥠááá˘
Mtproto ááááąá ááŤáá˝ á¨ááľá ፠áľáá° áááŽá˝á áĽá áááá˝á áĽáá˛áá áľáá˝ á¨áá á á፠ááá áá ááááťá
ááá áá á¨á°ááŤáŠ á¨ááá á°á¨ááá˝á áŤáááá¨áĽ áŤááá ááᣠáľááá mtproto á¨áľ áĽááłá á áĽá ááŁáŠ á°á¨á á¨ááá¨á áááá ááá˝ á áá°áá
áĽáá´áľ áá°áŁááá? á°á
á, á PFS á°ááłáłá áááŤá ááá áá¸áá, áááłá (á áááŤá˝á áá á´áááŤá á´áľááśá áá
á ááľá¨á á áá˝áá). á¨áá¨áááá á á¤áá á áĽáŤá ááᢠauth.bindTempAuthKey
ᣠáááľá áĽ.á¤.á . á¨áááá á°á¨á. áá á á°ááłáłá áá á áá
á°á á°á¨á ááľá ፠áá áŁáá áááŁá - á¨áĽáą á áá ᣠáááłá ᣠáĽáá°áá ááľá¨á áŤáľáááááłá initConnection
ááá°, áá
á áá°áá áĽáş áá°á á áĽáŤá. áአá¨ááá áá ááłá á˘ááá á á˛á˛ á ááľ áááŤá ááá áĽáť áááááľ áá˝ááᢠauth_key_id
á áĽáŤááłááą áááĽááľ ááľáĽ áááá á˘áŤááľ áĽáŤááłááąá áááĽááľ áĽáá˛ááአááá
áľáááłá ᣠáĽá á áááአá ááááá áá áááŤá áááá âá¨áááłáľâ ááĽáľ á áá - á°ááą á áá
ááłá áá áá ááľá¨á áĽááłáá áľ á ááááá⌠áĽáŠ ᣠááá á áá°áťáá ááá°ááą á¨á¨á áľáĽáľáĽ áĽá áááá˝ á¨áááľá áĽá?
áľá MTProto ááĽáĽ áἠááŁá á¨áááŁá ááá˝ áĽááľ áááŽá˝ á áá˘
á¨áááĽááľ áááĽááśá˝áŁ msg_idᣠmsg_seqnoᣠáá¨áááŤáá˝áŁ ááá áá° á°áłáłá° á á
áŁáŤ áĽá ááá˝ áááŁá á áááŤá¨áśá˝
áľááĽááą ááá ááá á áľááá? ááááŤáąá áĽááą áá° á¨áá°á á°á¨á "áááłá" áĽá á¨á¤áá á áá á˛á°áŠ áĽááąá ááá á ááĽááľ. ᨠmsg_key ááááľ á¨ááá áĽáá áĽááľáĽá¤ á¨áłá˝áá á°á¨á áááá ááá á˛ááŞááľ á áľáááááᢠááá áá á˛ááŞááľ á á°á°á¨áá ááᥠááľáĽ á¨áá¨á°ááľ ááľáŽá˝ á áá (áĽáá˛áá á¨áá¨áá áááᾠᣠáľááá áá¨ááŤá á¨áľ áĽááłá áĽááááá ᣠáá ፠á áľááá á áá°áá)
- á¨á - int64
- session_id - int64
- message_id - int64
- seq_no - int32
áááá á˛á˛ á ááľ á¨á áĽáť áĽááłá áĽááľáłááľá
ᢠáľá áĽáˇ ááá áłáááá
? áĽáŤá áľáá áĽáť á áá°ááᢠget_future_salts
, á¨áľááš ááá°áśá˝ áľáááá áĽáá°áá ááááááłá, ááá áá á¨áá "á¨á á°á á°" á¨áá, á¨ááŤá áááĽááą (áĽáŤá) á ááá áá áá. á áááአá áĽááἠá á˛áąá á¨á á áááŁáľ áŞáááľ áŤá°ááá new_session_created
- áá á¨á áŽáá áá ᣠáááłá á áá ááááľ áĽáá°áá ááá á ááĽááľá˘ áĽá áá
ááłá á¨áá°áá áŞáŤáá á ááá´áá¸á áááŤá.
á áááአááá áááá˝á áá á áá áĽáá˛áĽá áĽá á áĽá ááááŤáśá˝ á áá
ááááľ ááá˝ áĽáá˛á°áĽ á°áá
áśááłáᢠá áĽáááąáŁ á¨á°áá áá ááá á¨MTProto ááá áá áááľáá? áĽááá
áááľ ááĽáŽá˝ áá¸á session_id
и seq_no
á áá
ááá áá ááľáĽ áááááśá˝. á°á
á ᣠáĽá ááá ᨠTCP ááááᾠᣠá áĽáááĽá˘ á°áá áá á ááá áĽá áááŽá˝á áĽáá´áľ áĽáá°áá°áŤ á áŤáá
á áĽáá á, áááááąá á ááጠáĽáá°áá á°ááá. áá
á ááĽááľ á¨á°á¨á°á° - á¨áľáŽá ááá áá á á á˛áą TCP áááááľ ááľáĽ ááĽáá, áá¨áአseq_no
á°á¨ááŞ. á¨áá áŤá áá á¨áá°á° á áááአáá°ááá áá˝áá, ááááŤáąá á áĽáą á áŠá á°áá áá¨á áá, áĽááłáá
áá.
áá ááá á áá áľ seq_no
? áŚá
ᣠ፠á áľá¸á᪠áĽáŤá ááᢠáá áááľ áĽáá°áá á áľááá ááá¨áłáľ ááááĄ-
á¨áááľ áá á¨á°áŤáŤá áááĽááľ
ááá˝ áĽáá á á¨ááŤáľáááá áááĽááľá˘ áĽááá á¨áŽáá´áááŽá˝ áĽá ááľáááá˝ á áľá°áá áááá á¨á°á áá áĽá áĽá á¨á áááááľ áááááśá˝á áŤáŤáľáłáá˘
á¨áááĽááľ á á°á á°á¨á°á ááĽá (msg_seqno)
á¨áá áááĽááľ á ááľ á ááŞá á¨á°áá ᨠâá¨áááľ áá á¨á°áááâ áááĽááśá˝ á áĽáĽá áĽáŠá á¨áá áŁá 32 á˘áľ ááĽá áĽá á ááá áá á áá áŤáá áááĽááľ á¨áááľ áá á¨á°áŤáŤá áááĽááľ. á ááľ ááŤáŁ áááá á¨á á ááá áááą á áá ááá áŤá; áľááá , á¨áĽáą á°á¨áłáłá ááĽáŠ á ááľáĄ áŤááľ á¨áááĽááśá˝ á°á¨áłáłá ááĽáŽá˝ áá ááŁá ááá áĽáŠá áá.
áá
áá ááááľ á°áá¨áľ áá á 1 ᣠá¨ááŤá áá á 2 áááŞ?... ááááŞáŤ áá âáľááš áá¤á˛áŹ á áŁá á áľáááá áľáὠᣠá¨á°áá¨á ááĽá ááâ áááłá¸á áĽáá°áá áĽáááłáá ᣠáá áá¤áą á°ááłáłá á áá°áá - á á°ááá áááŁá, ááá áá˝áá áĽá áá¨áááŤáá˝ á°ááłáłá áá¸á seq_no
! áĽáá´áľ? á°á
á ᣠáááłá ᣠá áááአá¨áá ááá áááááá ᣠáááŤá ᣠáĽá áĽá áĽáŤáłá˝á áá áĽáááá ᣠáááááśá˝á ááá áá á ááŤá¨ááᥠá¨á áááááľ áááĽááśá˝ ááá˝ áĽáá°áŁáá ᢠá áá
á ááŁáᣠá¨á᪠áá¨áááŤááťá˝á á°ááłáłá á¨á᪠ááĽá áááŤá¸ááᢠᨠTCP áá á á°áἠá¨ááŤáá á¨áá áĽá áá
á áá ááááľ á¨áąá áááľáá áĽáá áŤá°áĄ ᣠáá á áŁá áąá á áááľáá ᣠááááŤáąá á TCP ááľáĽá˘ seq_no
á ááááĽá, áá áá¨áááŤá áááłá seq_no
á áá á áŠá ááľá¨áá
áĽá¸áŠáááᢠáá¨áááŤáá˝ á MTProto ááľáĽ ááá áá á áá°áá áá seq_no
, áĽáá° TCP, áá á msg_id
!
áááľáá áá msg_id
á¨áĽááá
ááľáŽá˝ ááľáĽ á áŁá á áľáááá? áľá áĽáá°ááŤáááá°á áአáááĽááľ ááŞá˘ áĽáą áĽáá° 64-á˘áľ ááĽá ááááťá ᣠáá
á°áááš á˘áľ áĽáá°áá âá áááá-á áááá á áá°ááâ á áľááľ á áá¸á ᣠá¨á°áá¨á ááááá áááá á¨áᎠá¨áŠáááľ á¨áá áá
á°á áá ᣠ32 á˘áľ áá° á፠á°ááá ᢠáĽáááŤá˘ timestamp á á´ (áĽá á áŁá áĽá áá áŤáá¸á áááááśá˝ á á áááአááľá
áá°á¨áá)ᢠá¨áá
á áááłáľ á á á ááá áá
áá°áá áá ááá á ááá á¨áá áá፠áá. á¨á°á°á á - áĽááľáłááľ session_id
- áĽá ááľáľá á°á°áĽáśáá; á ááá á áááľ áááł áá ááľ ááá áá á¨áłá°á áááĽááľ áá° áá ááá áá ááá á ááťáá. áŤá áááľ ááľááá áááŠá áŤáłáŤá áśáľáľ á°á¨á - ááá áá ᣠââá¨ááá-áá ááĽá ᣠá¨áááĽááľ ááłáááŤá˘ ááá áĽáá°áá
á áááľ ááľáĽáľáĽááľ, áá
ááľá˘á á áŁá áľáá
áá.
áĽá áľááá
, msg_id
áŤáľáááá á...
RPC: áĽáŤááá˝, ááážá˝, áľá
á°áśá˝. áá¨áááŤáá˝á˘
áĽááľá áĽááłáľá°áááľáŁ ááá áĽááłá ááážá˝ á˘ááŠáľá á áĽááá ááááŤá ááľáĽ á¨áľááá áአâᨠRPC áĽáŤá á áľááâ ááááľ ááá á°ááŁá á¨ááᢠá°ááá á¨áááľ áá á¨á°áŤáŤá áááááśá˝ á áá! áŤáá, ááááá áááĽááą áĽáŤá ááá áá˝áá! ááá áááááᢠá¨ááá á áá, áĽáŤááłááłá¸á ááľ msg_id
. áá áááśá˝ á ááĄ-
rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult;
áá
áá¨áľáá áááĽááľ ááá˝ áĽáá°áá á¨á°ááá¸á áĽáá
áá ááᢠáľááá
ᣠá á¤áá á á¨áá°á á°á¨á ᣠá¨áĽáŤáá ááĽá áá áĽáá°áá ᨠááľáłááľ á ááĽááľ - áĽáŤá á¨ááááłá°á áááá ááľá¨áłáľ á áŤáľáááá ᣠáĽá á á°ááłáłá áá á áá°áľ áá áŤá áĽá áĽáŤááá˝ ááአáá˝áá ᣠá ááááá á
á°á á°á¨á°á ááááľ á¨áá˝ááľ áááśá˝? á ááá
á°á¨áᣠá¨áá
áĽá áĽáá° á°áŤá°á á¨áá°á á¨áľá
á°áľ áááĽááśá˝áŁ á¨áá
á áľá°ááᣠáŤáá á¨áľá-á
áá áľáŤ ááłáá
áá˝ááᥠá¨áĽááľá áá ᨠTCP áááááľá á¨áá áĽáá á áááá á¨ááľ-áá¨á¨áť ááá áá ᣠáĽáŤááá˝á áá° áááŁáá˝ áŤáľá°áááá áĽá áááś áá°á áľáŁáᢠmessage_id
. áĽáá
ááá ááá ááá˝, ááááŤáłá áĽá áĽáŠ áááľáá.
á á? .. áĽá á˘áŤáľáĄáľ? á¨ááá á áá ᨠRPC ááá˝ áŤáąá ááľá á áá msg_id
! á á áááአáá "ááá´á áĽá¨áááľá á áá°áá!" áĽáá ááŽá
á ááĽá? áĽá á áᣠáľá áá¨áááŤáá˝ áá áá á? áľá áá˝
msgs_ack#62d6b459 msg_ids:Vector long = MsgsAck;
áĽá á áĽáŤááłááą áá áá°á¨á á áá áľ. áá áááá á áá°áá! RpcResult á¨á°áá áá áĽáą áŤáą áĽáá° áá¨áá፠áá áŤáááááᢠáááľáᣠá áááአááĽáŤáá á MsgsAck ááá˝ áá°áĽ áá˝áá - áĽáá° âá°áá ááŠáľá˘ RpcResult áá˛áŤáá ááá˝ áá°áĽ áá˝áá. áááąá ááá áá˝áá.
áĽá á á, á ááá áááąá ááááľ á ááĽááľ! áá¨áááŤ. áŤáá áá፠á áááአáĽáá°ááá°ááľ áááĽá¨áá áĽá áĽáá°áá áá° áĽááľá áááŤáᢠáĽáá°áá á¨á°ááá á áá áĽááłá. áá áĽáá , á áĽáááĽ, á¨áá ááĽá፠ááłá áááłá. áľáá˝ ááá°á áĽááŤá¸áá˘
áĽáľá¨ááŤá áľá¨áľáŁ ááá á¨áá˝á á¨áá áá á ááťá¸á áľá á°áśá˝á áĽáááá¨áľá˘
rpc_error#2144ca19 error_code:int error_message:string = RpcError;
áŚá
ᣠá ááľ á°á ááŽáťá ᣠá¨á áá á°áĽá áááľ áŤáá á
áá¸áľ áĽáá
á á - ááľáá á á! ááá
á áá°áľ. áĽáá
FLOOD_WAIT_3600
á ááľ á°ááľ áá á á
á ááĽááľ áááľ áá, áĽá PHONE_MIGRATE_5
, áá
á
áľá á
áĽáŤ áŤáá á¨áľáá ááĽá á 5 áá á˛á˛ ááľáĽ ááááἠá áá áľ. á áááľ ááá á áá á áá°á? á¨ááĽá¨ááá áááá á ááááá ᣠáá°á áááš áŤá°áááłá ᣠáĽáşá˘
á áľáá, áá
á á áááááľ áááĽááśá˝ áá˝ áá á áá°áá, ááá áá, á áá
ááŽáááľ áĽáá°á°ááá°á, áá¨áá ááá áá˝áá á áá á¨á°ááľ áá˝ áá. ááá áĽááŁáŹá ááŁá. á ááááŞáŤáŁ á°ááá¨áľáŁ áá°á¨áĽ/ááĽááĽá ááŁáľ - RpcError
ááľáĽ ááá°áľ áá˝ááᢠRpcResult
. ááá áá á áááá? áááľ ááľáĽ áŤááľááŁá ááá áááľá áá?... á áá
áá á¨áľ ááľáľáá á¨áľ á á? RpcError
ááľáĽ ááŤá°áľ á áá˝ááᢠRpcResult
, áá á ááĽáł ááá á áá ááááľ ááľáĽ ááá°áľ? ... áĽá áŤááťá, ááá á á¨áá°á á°á¨á áá á áá°áá, áááľá. áááľáá req_msg_id
? ..
áá áľá á¨á áááááľ áááĽááśá˝ áĽáááĽáᢠá°áá áá á áááአáá¨á á áá áĽáŤá°á áĽáá°áá ááŤáľáĽ áá˝áá áĽá áá á áľáá áĽáŤá áŤáááŁááĄ-
rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer;
ááá áĽáŤá áŚáľáľ ááá á¨áá˝á áááśá˝ á á ᣠáĽáá°áá á¨áá¨áá፠áá´á áá ááŁááŤá ᣠáá ááá áĽááłááŁá¸á ááá¨áłáľ ááá¨á (áĽá á á ááá áá¨áá፠á¨ááŤáľáááá¸á ááááśá˝ áááá) áá ááŁá˘á áĽáá° á¨á¤áľ áĽáŤ á°ááľáá (ááľáłááť: á ááľáĽ áŤáá áá¨á á¨á´áááŤá á´áľááśá ááá áŽáľ á áá°á áááá)á˘
á¨ááľáááľ áąáľáĄ á¨áááĽááľ áááłáá˝
á á á ááá á á˛á¤áᣠá¤áá˛ááŽáś áĽá á´áááŤá ááľáĽ áŤá áĽá áŚáłáá˝ á¨ááľáááľ áľááľ áá°ááᣠááá áá á¨á¨áááľáŁ á áá´ áĽá ááá˝á ááľááł á˝ááł á áľá
áľá áá á áááᣠáĽáá á ááááśáš ááľáĽ áŤááľá á¸áŤá áľáááśá˝ áłááąá á á°á¨ááᢠááá, áá
áŚáłĐá áĽááá áá˝ áľá ááá˘
áŤáááá ááłáľ ááááŤáᣠá áá¨áááŤáá˝á˘ á ááá áá ááááŠááá˘
bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int error_code:int = BadMsgNotification;
bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int error_code:int new_server_salt:long = BadMsgNotification;
á°á áᣠá¨MTProto áá ááĽáŤáľ á¨ááᨠááááá á°á ááŤááĽáá¸á áááŁáᤠâá á°áľá°áŤá¨áá - á á°áťáťáá - á á°ááá¨áâ áá°áľ ááľáĽ á¨ááĽá áľá á°áśá˝á ááááľ ááá á á ááľááľ áá ááĽá ááá á¨áťá á¨á á¨á°ááá° ááá ááᢠáááᣠáĽáá áááľ ááĽáŚá˝ á ááĄ-
- áá áááľ ááá áááĽááľ á ááˇá áááľ ááᢠá ááłááľ áá¨ááá˝á ááá á á ááĽá, á áá áá áĽáááá¨áłáá.
- áĽááá áŤáá°áááą á¨áľá á°áľ ááĽáŽá˝ áááľáá¸á? 16, 17, 18, 19, 20, 32, 33, 34, 35, 48, 64... ááá˝ ááĽáŽá˝ á¨áľ á á áśá?
á°ááą áĽáá˛á ááááĄ-
áááá á¨áľá á°áľ_áŽáľ áĽá´áśá˝ á°á§áľáá (áľá á°áľ_áŽáľ >> 4) áá¸áᥠáááłáᥠáŽáśá˝ 0x40 â 0x4f á ááŤáŁ áá áľá áľ áá áŤá áľá á°áśá˝ áá ááááłáá˘
áá, á ááááŞáŤ, áá° áá á á áŁáŤ ááá¨á, áĽá ááá°á, ááá á áá°áá, ááá˝ áŽáśá˝ á¨áľ á á? á á°áŤá˛á ááá ááľ?... á˘áááᣠáĽááá áĽáá á áááŽá˝ áá¸áá˘
áąáľ á¨áááá¨á á¨áááĽááľ áááłáá˝á áĽá á¨áááĽááľ á ááá˝á á áááá¨áľ áááĽááľ áááĄ-
- á¨áááĽááľ áááł áá¨á áĽáŤá
á¨áľááá á°ááá ááá á¨ááአáááĽááśá˝ áááł áá áá¨áá áá°áá°á áá áŤáá°á¨á°áᣠá¨áááá ááá á ááá áá áá áá˝áááĄ-
msgs_state_req#da69fb52 msg_ids:Vector long = MsgsStateReq;
- á¨áááĽááśá˝á áááł á á°ááá¨á° á¨áá¨á áááĽááľ
msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo;
áĽáá ,info
á¨áᢠmsg_ids áááá ááľáĽ ááĽáŤááłááą áááĽááľ á áľááá á ááľ áŁááľ á¨áááĽááľ áááłá á¨áŤá ááĽá¨ááá ááá˘- 1 = áľá áááĽááą ááá á¨ááłáá ááá á¨áá (msg_id á áŁá áá á°áᣠáááá ááá á¨áľáśáľ ááá áá˝áá)
- 2 = áááĽááľ á áá°á¨á°á (msg_id á á°á¨ááš áááŤáá˝ ááá ááľáĽ áá á¨áááľááᤠááá ááᣠáááá ááá á áĽááá áááľ áĽáá°áá áŤá áááĽááľ á áááá)
- 3 = áááĽááľ á áá°á¨á°á (msg_id á áŁá á¨á áŤá á˘áááᣠáááá ááá á áĽááá áááľ áĽáľáŤáá á áá°á¨á°áá)
- 4 = áááĽááľ á°á¨á° (áá ááá˝ á á°ááłáłá áá á°á¨á°á áááá áἠáá á)
- +8 = áááĽááľ á áľááľá áĽáá á á áááˇá
- +16 = áĽáá áá á¨ááááá áááĽááľ
- +32 = á áááááľ áá°áľ ááľáĽ ááá á áá°áľ áá áŤá ᨠRPC áá áá ááľááá á°á áá áá
- +64 = á áľááľá áá°áá á¨á áááĽááľ á¨áááľ áá á¨á°áŤáŤá ááá˝
- +128 = áááĽááľ á áľááľá áĽáá°á°á¨á° áá á áŤá áŤááá
áá ááá˝ áĽáá á á áááááᢠáĽáą á áŤáą áĽá ááááá¨á°á msgs_state_req áĽáá á ááá˘
áἠá á á áľáááľ á¨áááá á áŤá áá° áĽáą á¨á°áᨠá¨áááľá áááĽááľ á¨ááá áááĽááą á ááá áĽáá°áá ááá áá˝ááᢠááá á°ááá ááá á¨áááĽááąá áááľ á ááá˝ á á ááľ áá ááá á á˘ááŁáá á¨á°áŁáá ááá á˝á ááŁááᢠ(á áŁá áĽá áá áŤáá áĽá ááá msg_id á¨á áá á áá á¨áá°áŤ áŤááá áááĽááą á msg_copy áá á áá á áá áľ)á˘
- á¨áááĽááśá˝ áááł á ááá°áááľ áááááľ
áááąá áááá˝ á áááá ááá á¨áá°ááááľá áááááśá˝ áááł ááááá á áŤá á ááá°áááľ ááłáá áá˝ááá˘
msgs_all_info#8cc0d131 msg_ids:Vector long info:string = MsgsAllInfo
- á¨á ááľ áááĽááľ áááł á¨á°áŤáá á¨ááá°áááľ áááááľ
...
msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo;
msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo;
- áááááśá˝á áĽáá°áá áááá ááá
áĽáŤá
msg_resend_req#7d861a08 msg_ids:Vector long = MsgResendReq;
á¨áááľ ááá˛á á¨á°á á¨ááľá áááááśá˝ á áľáá á ááá áá˛áŤáá ááá˝ áá°áŁá [âŚ] - áááśá˝á áááá ááá
áĽáŤá
msg_resend_ans_req#8610baeb msg_ids:Vector long = MsgResendReq;
á¨áááľ á áŤá áá˛áŤáá á áľáá á ááá ááá˝ áá°áŁá áááľ áá°á á¨ááľ áááááśá˝ [âŚ] - á¨áááĽááľ á
ááá˝
á á ááłááľ áááłáá˝áŁ á¨á áá á áá á¨áá°áŤ áŤááá msg_id áŤáá á¨áᨠáááĽááľ áĽáá°áá ááá á áá áľá˘ á¨ááŤá á á á ááŤáŁ ááľáĽ áá áááááĄ-
msg_copy#e06046b2 orig_message:Message = MessageCopy;
á áá´ á¨á°á¨á° áááĽááą áá á ááŤá áĽáá°áá á°á°áá áá á¨áá°áŤáᢠááá ááᣠáááĽááą orig_message.msg_id ááľá¨áąá á áĽááá áááľ á¨ááłáá á¨ááᣠá á˛áą áááĽááľ á áá°á°áŤá (á á°ááłáłá ááᣠit and orig_message.msg_id áĽáá á áŤáá)ᢠá¨orig_message.msg_id áá á¨ááŤáŁá á¨áááááľ_ááłáá፠áŤáá° ááá á áá áľá˘
áá áĽáá áĽááłá áá áĽáá á msgs_state_info
áĽáá°áá áŤáá°á áááá á˛á¤á ááŽáá˝ á°áŁáĽááá (á¨áŁááľ áŹáá°á áĽáááááá ᣠáĽá á áłá˝áá áááľ á˘áľ ááľáĽ á ááľ á˘áá áá á ᣠáĽá á ááŤá¸á áááľ á˘áľ áŁáá˛áŤáá˝ áá áŠ)ᢠááĽáĄ á¨á°áᨠááᢠáá
áá ááá á á°ááŁá áá áĽááłá á¨áá¨áł á á? á áĽááá°á á°áá á ááľáĽ á áľááá? .. á á˝áá, ááá áá á ááľ á°á á áá¨á áá á¨á°áłá°á á ááłááľ áĽá
áá˝á ááááľ áá˝áá, áĽá á ááá°ááá áááł - á ááááŠá áá áĽá áĽáá´áľ áĽáá°áá áá áá. áá áĽáá
áĽáŤáááš á°ááá¸áá á°ááś áááľ.
áľááá áĽáŤááłááą á áŤá áááĽááśá˝á áááľá á áĽá ááá áĽáť áłááá áľááŤáłá¸á áŁáľááá°áŁá¸á ááážá˝ áŁááááłáá áá áá¨á áá¨áá¸áľ á ááŁá¸áᢠá°ááą á¨áĽááá á áŁá áŞáŤáľ áá ááá á°ááŁáŤáááľ á áááá˝áᢠá áá°áá. á áŁá á¨ááŤáľá°ááá áá á áŚáá´áá á°áá áá˝ áŽáľ ááľáĽ áá ááá¸á áá! á ááá˝ áĽáá°ááłá¨á á á ááŁá á°ááśá˝ ááľáĽ áŤáá°áŤá°á° ááá á°áááŤá¸áᢠá¨áŽáą á°á¨áą ááá, á¨á áá á áá áĽáá° TL áááł ááá á áá°áá - áĽáą (á á áááŤáááľ) á ááááŤáłáááľ á¨á°ááá á áŤá á áá°áá, ááá áá á¨áá°áá áŞáŤá á ááá´áá¸á áá á¨á°áŤáŤá ááŤá, áááľá. á¨áá°áá áŞáŤáá áŽáľ ááá¨áłáľ ááá á¨áá á°á¨á᪠áá áááááá˘
ááá áĽá áá. áá¨ááá˝
á¨ááá ááá ᣠáľá á áááአá ááá´áá¸á (á¨áĽáŤááá˝ áľáááľ á áááŁáá˝ áá) áááśá˝á áŤáľáłááľá ᣠá áŁá á áłáá ááá áá¨á°áá - á TCP ááľáĽ ááá á¨áááŞáŤ ááľáľááá˝ á˘ááŠá (áá¨áá á°á°áĽáˇá ᣠááá áľá ááá°áą ááááŤá¸áá ᣠáá á˝áአá¨áá¨á°áą á ááľ áá¨áá áááŤá) ᣠá MTProto ááľáĽ áŤá áá¨áááŤáá˝ - ááá ááľáľá á¨áá. á áááአá ááá áááĽááľáá ááŤáŁ ááá ááĽáá áá˝áá, áĽá ááá ááľá¨á á ááťáá, á¨á°ááŤáŠ á áááľ ááŤáá˝áá˝á áĽáť áá áá.
áĽá á ááááŞáŤ á°á¨á - á¨áááĽááľ áá¨ááá˝. á°á áᣠá á ááľ ááá ááá ááá áá á¨ááááŞáŤá ááá áá á - áŤáá°á¨ááá áááĽááľ áááἠáĽá áá áłá¨áľ á áá áľá˘ áĽá á¨á¨áľáá á°ááľ á áá? áĽá ááľá°á áŤááááᢠááááŁáľ áĽáá፠áąáľ á¨á°á ááą á¨á áááááľ áááĽááśá˝ áá áá á˝áá á ááŤáá˝ áááą áá˝áá ᣠá á´áááŤá á´áľááśá ááľáĽ á¨áĽááą áá á¨ááááą áá° 4 á¨áá á áá¨ááá˝ á á (ááááŁáľ áá°á á˛á áĽáá°á°á áá°á ᣠááá á áá° áŽáą áĽá áĽá áááá á áĽáááľ ááááá áŤáľáááááłá ᣠá á°ááłáłáá áá ᣠáĽáá° ááá ááá°áľ áĽáá°ááá˝á áĽááááá ᣠᨠMTProto áááááĽá á¨á°áá°á ááááśá˝ ááááśá˝ á áĽáą ááľáĽ áĽá á áá á áááá)á˘
áá ááá áĽá¨áá áá? ááááŁáľáŁ á¨á áááአááŽááŤá á áľáŤááá˝ á áááľá°á ááľáĽ áŤááá á áľá°áááááľ áá¨ááἠá ááťááᣠááá á áá°áá ááá áá ááľ ááľá¨á áĽááłá á ááťááᣠáĽá áá á á˝áá áá°áá áá á áľá°áááááᢠá¨á°áľá ááá¨áĽ á¨á°áᣠáŤá˛á á ááŤá á ááŤáá á°ááŁáŤá áááľá¨á áááŻáᣠá áááľ áá¨ááá˝ áĽáťáŁ á¨TCP áľáá° áááŽá˝á á áá áá - RTT á áá° á áááአá áááŤáľ áĽá á¨"ááľáŽáľ" áá áá (á áááĽááśá˝) á ááľá°áŤá¨á áŤáá°á¨ááᥠáĽáŤááá˝ áĽááľá˘ áááľáᣠá¨á ááááŠá áááľ áááááá áĽáá°áá áŤá á¨áŁáľ ááŠáŞáľá˛ááľ áľááľ áĽáŤáááťá˝á á á ááľ áá ááá áĽá áĽáá°ááá á ááá˘
á°á áᣠáááľáᣠá°á¨áľá°ááᣠá áá°á? á TCP áá á áá°áŤ ááŽáśáŽá áá TCP á áĽáá°áá áá°áá á áŤááĽá ᣠáá á¨ááŤáłá¨á á áŁá á°áŤá áŤááá ááŽáśáŽáá ááá˘
áŚá
á áᣠááá á¨á ááľ á áá áá¨á áŤáľáááááᣠáĽá áá
áááááá á¨á¨áá°á á°á¨á á¤áá á áá ááá°áŤ á°á áá áááľ áá? á°ááá¨áľáŁ áĽáŤá á á
áá ááᣠá°á¨áłáłá á áľááᣠáá áĽá áá áá˛áŤáá ááá á áľá˝ááᢠááá? ááááŤáąá áááą áááá msg_id
, áá
á áááŤá ááĐ°áĽá áá፠áá ᣠáá°áŁá á á°áťá áá á ááááś áĽáá˛áŤáá á¨á°á°á¨áá - á áĽá áĽá á áĽáą ááŤá¨á áŁáá á¨áá á áááŁáŁá ááááŤáľ á áááአááľá
áŤá°á¨á (á áĽááἠáá ᣠáááŤá˝áá á¨á áá á¨áááá ááŤáá˝ áĽáá°áŤáá) á¨á áááአááážá˝ á¨á°á°á á´ááł á áá¨áá áá° á áááአ- áŚáá´áá á°áá áá˝ áá
áá áŤá°áááłá ᣠáá á ááá¨áĄ ááááŤáľ á°á¨á
áĽá á¨á°áłáłá° áá)ᢠáľááá
ᣠá¨á¤á°-áá˝áááľ á á áá ááľáĽ á¨á°ááŁá áĽáŞ á˛á áá áááĽááą á áá¨á°ááľ á°á¨ááá˝ ááľáĽ áŤáááá˘
- á á ááľ áá¨á ááľáĽ á°ááˇá áĽá ááľá áŤá áá áĽááá˘
- á°ážá
msg_id
áĽá áááĽááą áá° áá áá¨á ááˇá - á¨ááťá ááľá°ááá; áá° áśáŹáľ áá. - á) á áááአá MsgsAck ááá˝ á°á - áááĽááą á°ááˇá ᣠᨠâáá áá¨áâ áĽáá°áááááá˘
á) ááá á á°ááŤáá ᣠáĽáą á¨áá ááá á ááá°á°á ᣠá badmsg ááá° - ᨠâáá áá¨áâ áĽáá°áá áá
á) ááá á¨ááłáá ááá á¨ááᣠáááĽááą á¨áá áá¨á ááá¨á á áá áľ - áá ááź áĽáá°áá á áľááá á ááłáá áᢠ- á áááአá áá¨á¨áť ááá˝ á°á
RpcResult
- áľááááá ááá˝ (ááá áľá á°áľ) - ááľá¨áľ áĽáť áłááá á°áľá°áŤááá.
ááááŁáľ, áŽáá´áááŽá˝á áá áá á˝ááŠá á á¨áá áááł áá˝áá. á áá
áá áĽá áááĽááśá˝ á á ááľ áá á°áááá áĽá á áááአáááá á á ááľ áá áá¨áá፠á°áĽáˇáᢠmsg_id
. ááá áá á ááľ á˝áá á¨á°áá ᨠáá á áá áá
áá áĽá
á ááľá
áŤá°áááá˘
áĽá á áá áá á´áááŤá áŤááá ááłáŚá˝ áá° á¨ááł áááŁá. á¨á°ááᎠᣠáĽá ááŤáá˝ á áá°áá ᣠáĽá á á°á¨á᪠ᣠá áá á°á¨á᪠á¨ááĽá áááŽá˝á áĽá á¨áľá-á áá ááłááá˝á áĽááŤáá - á áĽáá°áá áŤá áááłáá˝ ááľáĽ áĽáá°áá áŤá ááłááá˝á ááá áĽá ááľá¨á á áá áá? áĽáŤáá á¨áááá áá (á áĽááἠá áá°áá)á˘
áľá áá áĽáŤááŤá áá? âáľá áááĽááśá˝ á¨ááľáááľ áááĽááśá˝â á ááá áááľ áá á ááá áĽáá° âáá áὠᣠá áľá°áá áĽá áłá˝áá á áááŁá˝á!â áŁá á°ááááá˝ ááááľ áľá˝ááá˝áᢠ(áľááá á ááááŞáŤ á°ááśášá ááá ᣠáĽáá° áá°á á á°áὠᣠá ááááŤáłáááľ áĽá á ááŹáľ áááἠááłááὠᣠá¨á፠áĽáááááŤáá) ᣠá¨á፠áá / áá ááĽá፠áá á áá á°ááŁáŤá áĽá á¨á°áᨠáĽáŤá áá ᣠáĽáá ááá ááá áá¨á á áá ááłáááᢠá°ááą áľá áá ááĽááŤáá˝ áá áááá¨áá?
á áááá áĽááá áá á¨á°áá á áááĽááľ ááá áá (á á°áááśáŁ ᨠRPC áá áá ) ᨠRPC ááá˝á á áá áá ááá ááᢠáááš áĽá áá á¨ááŁáŁ á áááአááááŞáŤ á°á¨á°á áĽáá á ááá áá˝ááᣠáĽá á¨á°áá°á áá á ááᣠᨠRPC ááá˝ áŤáąá˘
á°áá á áĽááá áá á¨á áááአáááĽááľ ááá áá (á á°ááᜠᨠRPC ááá˝) ááááĽáá ᨠRPC áá áá á áŁá ááááś áŤáá°ááá (á¨ááᨠá¨60-120 á°á¨ááľ á°á¨á°á á áá á¨áá) áĽáá á áá°áŁáᢠá¨á áááአá¨á°áᨠáááĽááľ)ᢠááá áĽáá áá¨á á áá áá° á áááአáááĽááľ áááá ááá ááááŤáľ á¨áá ááá á¨á áááአáĽá áŤáá°áá á áááááśá˝ (ᨠ16 á áá) áŤá á°áá áá áŤáąá á¨áťá áĽáá á áá°áŁá.
áĽá á°ááááŤáá: áĽá áĽáŤáłá˝á áá áŤá á áĽá áĽáá´áľ áĽáá°ááŤáľáááá á ááá á, áľááá áĽáá°áá ááá áĽáá áĽááľáĽ.
áľá ááááľáĄ-
ááá áááááśá˝ (ááá/PONG)
ping#7abe77ec ping_id:long = Pong;
ááá˝ áĽááá áá áá° á°ááłáłá áááááľ ááááłááĄ-
pong#347773c5 msg_id:long ping_id:long = Pong;
áĽááá áááááśá˝ ááľáá á áŤáľáááá¸ááᢠááá á¨áá°áááá áááá ááá˝ áĽáť á˛áá ááá á áááąá á áŠá áááá áá˝áá.
á¨ááᨠá¨áááááľ ááááľ + ááá
ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong;
áĽáá° ááá áá°áŤáᢠá á°á¨ááŞá áá á¨á°á¨á° á áá á áááአá¨á°ááľ ááŁáŞ ááááŤá áá á áááááľ ááááˇá á¨á´áŽááśá˝ á áá á°ááłáłá á áááľ á á˛áľ áááĽááľ áŤáá°á¨á°á á áľá°áá áááá á¨ááľá ááŁáŞáá˝á á áŤáľ-á°á áłáá áŤáľáááŤáᢠá°áá áá áĽááá á ááá á 60 á°á¨ááľ á ááľ áá á¨áá¨áŁ áááłáᣠá¨áááááľ_delayá á¨75 á°á¨ááľ áá áĽáŠá ááŤáááĽá áá˝ááá˘
á áĽá°áá?! á 60 á°á¨ááľ áŁáĄáŠ áá° áŁá˘áŤá ááĽáś á°áłááŞáá˝á ááááłá áĽá áĽáá°áá á ááťá ááľáĽ áŤáá áááááľ áá ááᢠá 120 á°á¨ááľ ááľáĽ, á˛á°ááľ, áá° áá áá°ááłá, áĽá áááááą ááá¨áĽ áá˝áá. á°á á ᣠáĽááŽáš á¨á¨áľ áĽáá°áᥠááá áá - âáá°áá á°áá ᣠáá á¨áľ áĽááłá á ááá áâ ᣠá¨ááá á áááŞáá áĽá áááá°ááá áĽáŤ á¨áłá°á ᨠTCP_NODELAY á ááŤá á áᢠáá ᣠáá á᳠ᣠááŁáŞ áĽá´áąá áŤá - 200 ááá°á¨ááśá˝ á°ááłáłá á¨áá ááá áááłá¨áľ áĽá á á°áťá áĽááľ ááŹáśá˝ áá áááľááἠá¨ááá á 5 á°á¨ááľ áŤáĽááľ ááá "á°á ááá áĽá¨áá áá..." á¨áááĽááľ áá áŤááá áľ á áá ááᢠáá á¨áá á áá á¨ááá˘
áĽá á áá¨á¨áťá ááá. áááľá á¨TCP áááááľá ááá ááá°á˝ ááᢠá áŁá á áľáá áá ᣠáá ᨠ10 áááłáľ á ááľ áľá ááŠáá˛áŤá˝á áśáá áááĽáá°á á ááľ ááłá á˝áá áťáአ- áĽá፠áŤááľ á°áŤá˛áá˝ á ááááŠá á¨á°áá áá áá¨ááŠáľ ᣠáĽá á á°ááŤáá á áá°ááᢠáá á¨3á á ááľ á°ááŞáá˝ á ááľ ááá áá¸á á áá á áá á˘áŽ á°áá áá áá á áá°á?...
á ááááŞáŤ, áľáá˝ áľáá ááłá ááŽááŤá. ᨠTCP áááááľáŁ á¨ááŹáľ áááἠá ááá áľáŁ ááłáááłáľ ááá áá˝ááᢠáá áĽáá° á ááá áĽáŠá ááĽáá ááᢠáá áááአá¨á¤áľá¤áľá¤á˝ áááááľ á¨á°á¨áá° áĽáŠ áá á¨áŽáááŠá°á á°ááľá°á áŤáá°áá áłáá á áľááłá áá° áŚáłá áĽáľáááľ - á áá á áááá á áŠá áŤáá ááá áá á áá°áá°á°á (ááá á áľá°ááĽá ááá áĽá˝áá˝ á¨áá) ᣠááš ááᢠá á áááአáá á áşáá˝ á¨ááá አá°áá áá˝ áŤá áŁáĽáŤááłááłá¸á ááĽáśá˝á á¨áááľáą á¨áá ááĽá áá (áá ᣠááľáľááŹáľ!) ᣠáĽá á¨á°áá áá á áľá°ááá á¨á¨á á áá á ááľ áłáá á áľááł ááá áá˝áá - áá áľááĽáą á ááá áá˘
á¨áťáľ/IM á˛áľá°áá˝ á á ááľ á°á¨á᪠ááááŤáľ á ááá°áá ááłá ááľáĽ áááľáá - á¨ááľáá áá áááłáá˝á˘ á°á ááá "á¨áá°á" áľááá ááłá ááá-áá áá ááłáá á ááĽááľ. áŤáá áá፠á¨áá á ááŁáŞáá˝ á¨á°áŠáľá áľá á°áľ (áĽá á 20 áááłáľ áŤáá) áá¨ááłá - á°á ááá áááááąá á°áá¨á ᣠáá áĽáą ááľáá áá áááá á ááá áá° áĽáą áááĽááľ ááá áá á (áá á á áĽááá ááľáĽ áá á áá á áá°áá) áááááą á¨ááĽááą áĽááľ á°áááá˝ á ááľ). á áᣠTCP_KEEPALIVE á ááŤáᣠáĽá á°áá˝ TCP ááŁáŞáá˝ áĽáá´áľ áĽáá°áá አáŤáá°á¨áą á áááá° á¨ááĽááľ (áĽáá° á áľá á°áŽááśá˝ áŤá á¨áąá áĽá´áśá˝á á áááááľ) áĽáá á áá á áá - á¨áľááá° ááá á¨ááá áĽáť á ááááá áá¨ááἠá ááĽááľá˘ á¨á°á ááá áá˝á á áŤá ááᣠááá áá á áá°á áááľ áá°áŤáᣠááá˝ áááľá áľ áá˝ááᣠáĽá á áááŹá˝á áŤáą (ááááá á¨ááá˝á áááľáááłá? á´áááŤá á´áľááśá á áĄáĄááą 18.04 áá á¨á ááľ áá á áá áááááá)á˘
ááá á áá ááá ááľá¨á áŤááĽááľ á áááá á°áá á, áĽá á á°ááŤáá á áá°áá - á°áá áá áá á áŤá°á¨á, áááááą á¨á°á°á á¨, ááá á ááááĽá, áᥠá ááłáŤá.
á á´áááŤá áá áĽááŤáá? á áľááá á°ááŤá áá! áĽááá˛á
ᣠ፠ááᢠá áá°á áááľ, áááąá áááá˝ áĽááľ á áĽááłá¸á ááŁá á áá˝áá. á á°ááŁá, á°áá áá˝ ááŤáá˝ áá ááá ping_delay_disconnect
, áá
á á¨á°ááľ ááŁáŞáá á á áááአáá áŤáááá. á°á
á, áá
ááł á áľáááá, áŤá ááá ááá áŤá
á áá ááá áĽáá°áááá áááá°á á°áá áá á¨áááľáá á áá°áá. á áááአá áááą áá á°ááľááś á¨á°áťá áŤáááᢠáá ᣠá áĽááἠᣠááĽáąá áŤááľá¸áአᣠá¨á፠áĽááľá á¨áĽáŤáľá áá áááşáŽ áááá ᣠáĽá ááŤáá˝ áŤá°ááá ...
áĽáá´áľáľ ááá°á áá á¨á áľ?
á¨áá áŤááľ áĽáááłáá˝ á¨á´áááŤá/VKontakte áĄáľá á áŽáááŠá°á ááľáááŽá˝ áľáŤááľáááľ (áĽá áá á°á) á°á¨á áá á áŁá áĽááľ áĽáá°ááá áĽá á áááá¨áłá¸á ááłáŽá˝ áá áŤáá¸áá áá á°á áááááá˝ á ááá áŤáłáŤá áĽáŹ á ááááá˘
ááá á áŁá á¨á°ááłá°á áá áĽá á¨á´áááŤá á ááá´ááśá˝ ááááá áĽáá´áľ áááአáá˝áá? á¨TCP áááááľ á¨áá°áá ááá áá áááľá¨á ááá¨áŤá¸áᣠáááľáᣠá áá áŤáá°á¨á°áᣠá áá áĽáá°ááłááᢠááááŁáľ ᨠUDP áľáŤááľáááľ áááĽáŤáľ ááá¨á ááááᣠááá áá á˝ááŽá˝ á ááĽáá¸á áĽá áľá°ááľ (ááá á áá á°ááą áŁáś á¨ááá - á¨ááŠáŤáŤá áľ ááá á ááá á¨á)ᢠáá á á á ááá ááľáááŽá˝ áĽá á á°ááá TCP áĽáá´áľ áĽáá°áá አᣠá áĽáą áá áá°áááá áľ áĽáá°áá˝á ᣠáĽá áĽáŤáľá á¨áľ áĽáá°áááá (áĽá áĽáá´áľ) áĽá áá áá á¨ááŞááśááŤá áá áááŁáá á ááá¨á ááááŤáľ á á áááᤠáľáááá âáááľ ááá˝ á á ááľ áľáááâ áá áá¤áľ ááá˘
áĽáá´áľ á áľááá? á ááá áĽáááł áá á áááľá¨áľ msg_id
á¨áľáá ááŤááľ áĽááśá˝á ááá¨áá¨á á¨ááľá áŤá áĽááł á ááťá á¨áá áá
á°á á áľááá ááᣠáአáá፠á°ááŁáá á¨áĽáą áá ááŤáŤá áľá
á°áľ ááᢠáľááá
ᣠá áá áŤááá á ááá´áá¸á á áá á¨áłáááľ áłáááἠ(á¨ááááá˝ áĽá¨áľ á˛áá áᣠáá
ááá á¨áá
á°á¨áłáłá ááĽáá˝ ááá á¨áá°á á°á¨á áŤáá á¨á¤áá á áááľ áá)ᣠá ááľ á°á á¨áá¨á°ááľá ááľá¨á áááá áłááĄ-
- ᨠTCP áááááľá á¨á°áá áá áá á¨áááá á áááá áááááąá áááľáłá - á¨áśáŹáľ áá áŤáá á áĽáŁááá ááá á ᣠáŤáľáŹáą ááá áľá á°áľ áááṠᣠááá áŞáłáŤ á¨ááᢠá¨á፠áá¨áááŤá á¨ááłáááŤáá˝ áŹáá°á á áá°áá ᣠáá á ááá âá¨áá¨á¨áťá á¨á°áá áá seq_noâ - ááĽá áĽáť ᣠáĽáá° TCP (áááľ ááĽáŽá˝ - á¨áĽááľá á´á áĽá á¨á°á¨ááá á)ᢠáĽá áá áá á ááá-ááá ááľáĽ áá ᣠá áá°á?
- á¨áľáááá˝ áĽááśá˝á ááá¨áá¨á á¨áá áá
á°á á¨á°áᨠááľá ááááᣠla nonceᢠá°á¨ááá§á, ááá áá áá ááá ááá á áááŤá. á á áĽá
uint32
á¨áĽá á¨á á˘áŤááľ á á¨ááá˝ áá á¨ááá¨á á¨áá 16 á˘áľ áá á°á á¨áľááá á˘áľ á˘áá˛áá áá áá ááᣠá¨á°áá¨áá - áá ááľ á°á¨ááľ ááááá (áĽáá°á áá) ááá°áĽ áĽáá˝áááᢠ- á°áááˇá
msg_id
á á á ááá - á áááŁáá˝ áá áĽáŤááá˝á á¨ááá¨áľ á ááťá, á ááááŞáŤ, á¨á°áá á ááłáááŤ, áĽá ááá°á, á¨ááá áá ááłáááŤ, áŤáááá¸áá. á áá áá á¨áľ áĽáá° áĽáŤá áá፠á ááľ ááá áĽáť á á ááá˘seq_no
.
áá á°áá á áŁá á¨á°áłáŤá á ááŤá á áá°ááᤠáá á áááá° áĽáá° áá፠áá ááŤáááá áá˝áá - á áááŤá˝á áá áááĽááľ á˛áá áá ááľááá á á¨áá°á á°á¨á á¤áá á ááľáĽ áá¨ááááᢠá ááá´áá¸áá á¨áááľ áá° áááááľ áá ááá áĽáá°áŤ ááťááᣠââáá áá ááá ááá áááľ áĽáá áá ááĽá á áá°ááá˘
á¤áá á?
áł-áłá! áľááá ᣠá á áá áĽá á ááŤáá˝ á á°áá ááááľ áá á ááłáá ᣠá áá¨á¨áť áááááá áĽáŤá áá° á áááአáááá áĽá áááááá áááľ áááá á ᣠáĽáá˛áá á¨á áááአááááá˝á áááá á áťáá (ááĽáŤá ááá˝ áłááá ᣠáĽáą áŤáą) ᢠáĽáá° PUSH áá áááŤááᣠááá á°á á á፠ááááľ ááá˝ á¨áá)á˘
áľáŠá¨áľ, á áá á á áááš ááľáĽ á ááá ááľáĽ áĽá¸áá ááłá áááŤá! (á ááŁáĄá áááŤáááľáŁ á¨á á¨á¨áľ á¨ááááŞáŤá áá¨áŤá¨áŞáŤ á¨áááŠá áá¨á á áááá ááᣠááá°áá ááá á°áá áá)
2019.10.24 12:00:51 $1 = {
'cb' => 'TeleUpd::__ANON__',
'out' => bless( {
'filter' => bless( {}, 'Telegram::ChannelMessagesFilterEmpty' ),
'channel' => bless( {
'access_hash' => '-6698103710539760874',
'channel_id' => '1380524958'
}, 'Telegram::InputPeerChannel' ),
'pts' => '158503',
'flags' => 0,
'limit' => 0
}, 'Telegram::Updates::GetChannelDifference' ),
'req_id' => '6751291954012037292'
};
2019.10.24 12:00:51 $1 = {
'in' => bless( {
'req_msg_id' => '6751291954012037292',
'result' => bless( {
'pts' => 158508,
'flags' => 3,
'final' => 1,
'new_messages' => [],
'users' => [],
'chats' => [
bless( {
'title' => 'ĐĽŃНинОПика',
'username' => 'hoolinomics',
'flags' => 8288,
'id' => 1380524958,
'access_hash' => '-6698103710539760874',
'broadcast' => 1,
'version' => 0,
'photo' => bless( {
'photo_small' => bless( {
'volume_id' => 246933270,
'file_reference' => '
'secret' => '1854156056801727328',
'local_id' => 228648,
'dc_id' => 2
}, 'Telegram::FileLocation' ),
'photo_big' => bless( {
'dc_id' => 2,
'local_id' => 228650,
'file_reference' => '
'secret' => '1275570353387113110',
'volume_id' => 246933270
}, 'Telegram::FileLocation' )
}, 'Telegram::ChatPhoto' ),
'date' => 1531221081
}, 'Telegram::Channel' )
],
'timeout' => 300,
'other_updates' => [
bless( {
'pts_count' => 0,
'message' => bless( {
'post' => 1,
'id' => 852,
'flags' => 50368,
'views' => 8013,
'entities' => [
bless( {
'length' => 20,
'offset' => 0
}, 'Telegram::MessageEntityBold' ),
bless( {
'length' => 18,
'offset' => 480,
'url' => 'https://alexeymarkov.livejournal.com/[url_вŃŃоСан].html'
}, 'Telegram::MessageEntityTextUrl' )
],
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'text' => '???? 165',
'data' => 'send_reaction_0'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'data' => 'send_reaction_1',
'text' => '???? 9'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'message' => 'Đ Đ˛ĐžŃ Đ¸ Đ˝ĐžĐ˛Đ°Ń ĐşĐ˝Đ¸ĐłĐ°!
// [ŃокŃŃ ŃООйŃĐľĐ˝Đ¸Ń Đ˛ŃŃоСан ŃŃОй но наŃŃŃĐ°ŃŃ ĐżŃавиН ĐĽĐ°ĐąŃĐ° Đž ŃокНаПо]
напоŃĐ°ŃĐ°Ń.',
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'date' => 1571724559,
'edit_date' => 1571907562
}, 'Telegram::Message' ),
'pts' => 158508
}, 'Telegram::UpdateEditChannelMessage' ),
bless( {
'pts' => 158508,
'message' => bless( {
'edit_date' => 1571907589,
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'date' => 1571807301,
'message' => 'ĐĐžŃĐľĐźŃ ĐŃ ŃŃиŃĐ°ĐľŃĐľ Facebook пНОŃ
ОК кОПпаниоК? ĐОМоŃĐľ ĐżŃОкОППонŃиŃОваŃŃ? ĐĐž-ПОоПŃ, ŃŃĐž ŃикаŃĐ˝Đ°Ń ĐşĐžĐźĐżĐ°Đ˝Đ¸Ń. ĐоС дОНгОв, Ń Ń
ĐžŃĐžŃоК ĐżŃийŃĐťŃŃ, Đ° ĐľŃНи ŃĐľŃĐ°Ń Đ´Đ¸Đ˛Ń ĐżĐťĐ°ŃиŃŃ, ŃĐž и ĐľŃĐľ ПОгŃŃ Đ˝ĐľŃ
иНО пОдОŃОМаŃŃ.
ĐĐťŃ ĐźĐľĐ˝Ń ĐžŃĐ˛ĐľŃ ŃОвоŃŃоннО ĐžŃовидон: пОŃĐžĐźŃ ŃŃĐž Facebook Đ´ĐľĐťĐ°ĐľŃ ŃМаŃĐ˝ŃĐš пО каŃĐľŃŃĐ˛Ń ĐżŃОдŃĐşŃ. ĐĐ°, Ń Đ˝ĐľĐłĐž ПОнОпОНŃнОо пОНОМонио и Đ´Đ°, иП пОНŃСŃĐľŃŃŃ ĐžĐłŃОПнОо кОНиŃĐľŃŃвО ĐťŃдоК. ĐĐž ĐźĐ¸Ń Đ˝Đľ ŃŃĐžĐ¸Ń Đ˝Đ° ПоŃŃĐľ. ĐОгда-ŃĐž вНадоНŃŃĐ°Đź ĐОкии ĐąŃНО ŃПоŃнО ĐžŃ ĐżĐľŃвОгО ĐĐšŃОна. Đни Đ´ŃПаНи, ŃŃĐž ĐťŃŃŃĐľ ĐОкии ниŃогО ĐąŃŃŃ Đ˝Đľ ĐźĐžĐśĐľŃ Đ¸ Она навŃогда ĐžŃŃаноŃŃŃ ŃĐ°ĐźŃĐź ŃдОйнŃĐź, ĐşŃĐ°ŃивŃĐź и ŃвŃŃĐ´ŃĐź ŃоНоŃОнОП - и Đ´ĐžĐťŃ ŃŃнка ŃŃĐž ĐşŃĐ°ŃнОŃĐľŃивО доПОнŃŃŃиŃОваНа. ТопоŃŃ Đ¸Đź но ŃПоŃнО.
ĐОноŃнО, ŃопŃĐ¸ĐťĐžĐ¸Đ´Ń ŃОпŃĐžŃивНŃŃŃŃŃ Đ˝Đ°ĐżĐžŃŃ ĐźĐžĐťĐžĐ´ŃŃ
гониов: ŃĐ°Đş ĐŚŃкоŃйоŃгОП ĐąŃĐť пОМŃĐ°Đ˝ Whatsapp, пОŃОП Instagram. ĐĐž вŃŃ Đ¸Đź но пОМŃĐ°ŃŃ, ĐĐ°ŃĐ° ĐŃŃОв но ĐżŃОдаŃŃŃŃ!
Так ĐąŃĐ´ĐľŃ Đ¸ Ń Đ¤ĐľĐšŃĐąŃкОП. ĐоНŃĐˇŃ Đ˛ŃŃ Đ˛ŃĐľĐźŃ Đ´ĐľĐťĐ°ŃŃ ĐłĐžĐ˛Đ˝Đž. ĐŃĐž-ŃĐž кОгда-ŃĐž ŃĐ´ĐľĐťĐ°ĐľŃ Ń
ĐžŃĐžŃиК ĐżŃОдŃĐşŃ, ĐşŃĐ´Đ° вŃŃ Đ¸ ŃКдŃŃ.
#ŃĐžŃŃĐľŃи #facebook #Đ°ĐşŃии #ŃопŃиНОидŃ',
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'data' => 'send_reaction_0',
'text' => '???? 452'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'text' => '???? 21',
'data' => 'send_reaction_1'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'entities' => [
bless( {
'length' => 199,
'offset' => 0
}, 'Telegram::MessageEntityBold' ),
bless( {
'length' => 8,
'offset' => 919
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'offset' => 928,
'length' => 9
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'length' => 6,
'offset' => 938
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'length' => 11,
'offset' => 945
}, 'Telegram::MessageEntityHashtag' )
],
'views' => 6964,
'flags' => 50368,
'id' => 854,
'post' => 1
}, 'Telegram::Message' ),
'pts_count' => 0
}, 'Telegram::UpdateEditChannelMessage' ),
bless( {
'message' => bless( {
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'data' => 'send_reaction_0',
'text' => '???? 213'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'data' => 'send_reaction_1',
'text' => '???? 8'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'views' => 2940,
'entities' => [
bless( {
'length' => 609,
'offset' => 348
}, 'Telegram::MessageEntityItalic' )
],
'flags' => 50368,
'post' => 1,
'id' => 857,
'edit_date' => 1571907636,
'date' => 1571902479,
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'message' => 'ĐĐžŃŃ ĐżŃĐž 1ĐĄ вŃСваН ĐąŃŃĐ˝ŃŃ ĐżĐžĐťĐľĐźĐ¸ĐşŃ. ЧоНОвок 10 (видиПО, 1Ń-ĐżŃОгŃаППиŃŃОв) одинОдŃŃнО напиŃаНи:
// [ŃокŃŃ ŃООйŃĐľĐ˝Đ¸Ń Đ˛ŃŃоСан ŃŃОй но наŃŃŃĐ°ŃŃ ĐżŃавиН ĐĽĐ°ĐąŃĐ° Đž ŃокНаПо]
ĐŻ ĐąŃ Đ´ĐžĐąĐ°Đ˛Đ¸Đť, ŃŃĐž йНоŃŃŃŃĐ°Ń Ń 1ĐĄ диŃŃŃийŃŃиŃ, Đ° ПаŃкоŃинг... Đ˝Ń, ŃакОо.'
}, 'Telegram::Message' ),
'pts_count' => 0,
'pts' => 158508
}, 'Telegram::UpdateEditChannelMessage' ),
bless( {
'pts' => 158508,
'pts_count' => 0,
'message' => bless( {
'message' => 'ĐĐ´ŃавŃŃвŃĐšŃĐľ, ŃĐ°ŃŃкаМиŃĐľ, пОМаНŃĐšŃŃĐ°, ŃоП вŃĐľĐ´Đ¸Ń ŃкОнОПико 1ĐĄ?
// [ŃокŃŃ ŃООйŃĐľĐ˝Đ¸Ń Đ˛ŃŃоСан ŃŃОй но наŃŃŃĐ°ŃŃ ĐżŃавиН ĐĽĐ°ĐąŃĐ° Đž ŃокНаПо]
#ŃĐžŃŃ #it #ŃкОнОПика',
'edit_date' => 1571907650,
'date' => 1571893707,
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'flags' => 50368,
'post' => 1,
'id' => 856,
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'data' => 'send_reaction_0',
'text' => '???? 360'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'data' => 'send_reaction_1',
'text' => '???? 32'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'views' => 4416,
'entities' => [
bless( {
'offset' => 0,
'length' => 64
}, 'Telegram::MessageEntityBold' ),
bless( {
'offset' => 1551,
'length' => 5
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'length' => 3,
'offset' => 1557
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'offset' => 1561,
'length' => 10
}, 'Telegram::MessageEntityHashtag' )
]
}, 'Telegram::Message' )
}, 'Telegram::UpdateEditChannelMessage' )
]
}, 'Telegram::Updates::ChannelDifference' )
}, 'MTProto::RpcResult' )
};
2019.10.24 12:00:51 $1 = {
'in' => bless( {
'update' => bless( {
'user_id' => 2507460,
'status' => bless( {
'was_online' => 1571907651
}, 'Telegram::UserStatusOffline' )
}, 'Telegram::UpdateUserStatus' ),
'date' => 1571907650
}, 'Telegram::UpdateShort' )
};
2019.10.24 12:05:46 $1 = {
'in' => bless( {
'chats' => [],
'date' => 1571907946,
'seq' => 0,
'updates' => [
bless( {
'max_id' => 141719,
'channel_id' => 1295963795
}, 'Telegram::UpdateReadChannelInbox' )
],
'users' => []
}, 'Telegram::Updates' )
};
2019.10.24 13:01:23 $1 = {
'in' => bless( {
'server_salt' => '4914425622822907323',
'unique_id' => '5297282355827493819',
'first_msg_id' => '6751307555044380692'
}, 'MTProto::NewSessionCreated' )
};
2019.10.24 13:24:21 $1 = {
'in' => bless( {
'chats' => [
bless( {
'username' => 'freebsd_ru',
'version' => 0,
'flags' => 5440,
'title' => 'freebsd_ru',
'min' => 1,
'photo' => bless( {
'photo_small' => bless( {
'local_id' => 328733,
'volume_id' => 235140688,
'dc_id' => 2,
'file_reference' => '
'secret' => '4426006807282303416'
}, 'Telegram::FileLocation' ),
'photo_big' => bless( {
'dc_id' => 2,
'file_reference' => '
'volume_id' => 235140688,
'local_id' => 328735,
'secret' => '71251192991540083'
}, 'Telegram::FileLocation' )
}, 'Telegram::ChatPhoto' ),
'date' => 1461248502,
'id' => 1038300508,
'democracy' => 1,
'megagroup' => 1
}, 'Telegram::Channel' )
],
'users' => [
bless( {
'last_name' => 'Panov',
'flags' => 1048646,
'min' => 1,
'id' => 82234609,
'status' => bless( {}, 'Telegram::UserStatusRecently' ),
'first_name' => 'Dima'
}, 'Telegram::User' )
],
'seq' => 0,
'date' => 1571912647,
'updates' => [
bless( {
'pts' => 137596,
'message' => bless( {
'flags' => 256,
'message' => 'ХОСдаŃŃ Đ´ĐśĐľĐšĐť Ń Đ¸ĐźĐľĐ˝ĐľĐź пОкОŃĐžŃĐľ ??',
'to_id' => bless( {
'channel_id' => 1038300508
}, 'Telegram::PeerChannel' ),
'id' => 119634,
'date' => 1571912647,
'from_id' => 82234609
}, 'Telegram::Message' ),
'pts_count' => 1
}, 'Telegram::UpdateNewChannelMessage' )
]
}, 'Telegram::Updates' )
};
á á ᣠáá á°áĽá á áĽá á áá°áá - áĽáľáŤáá áŤááá áĄáľ áááĽá áĽá áŤáľáááľ!
áá áá~~... áá áá áááľáá? á áŁá á¨ááłáá ááá... ááááŁáľ áá á JSON ááľáĽ áŤáá á¨á°ááá° á¨áľá á¤áá á á¨ááἠááá á ááᣠáááá˝ áĽáá˛á á¨áĽááá˝ áá á¨á°áŤáŤá á áľá°áá?...
áĽááá˛á áĽáá˛á áá...áááľá áá ááśáź?.. áĽá áĽá¨áľ - áĽá á¨áľá ááŽááŤááŽá˝ áŁáá áľ ááá¨á áááᢠáá á áááá áá?... JSON á HTTPS áá áĽáť ááá á áááá?! á ááἠáá á ááá? áĽá¨áą á¨ááŤáľáá áá á?
TL+MTProto áá áĽáá°á°á á áĽá áá á ááŤáŽá˝ ááአáĽáá°áá˝á áĽáááááᢠá°á áᣠá áĽáŤá ááá˝ áá´á áá á¨ááŤá°áŠá¨á á¤á˝á˛á˛á ááĽá áĽááľ ááᣠáá á˘áŤááľ á TLS áá á¨áá ááá á á?
á¨áłáá á°á¨áłáłáááľ. á¨JSON áá á¨áááłá°á áá
á á¨ááἠááá
á áľááá¨áľáŁ á¨áĽáą áááľáŽá˝ áľáŞáśá˝ áĽááłá á áľáłááłááᢠMsgPack á á á áááł ááᣠá¨ááá˝á áĽáá°áá ááááľ áĽááľáááᣠáá áááłáᣠCBOR á á - á áááŤá˝á ááᣠá ááľáĽ á¨á°ááá¸á ááľáááľ
- 25 + 256 - á°á°ááá ááľááŽá˝á á¨ááľáአááĽá áá á ááŁááľ á áá°áŤáľ áĽáá°áá áŤá ááŤá˝ á¨ááá áá´
- 26 - á°á¨áłáłá á¨ááá ááá á¨ááá áľá áĽá á¨ááᢠááááŽá˝ áá
- 27 - á°á¨áłáłá ááá-áááá°á ááá á¨á áááľ áľá áĽá á¨ááᢠááááŽá˝ áá
á°á áᣠá á˛á¤á áĽá á CBOR ááľáĽ á°ááłáłáŠá ááἠá ááĽá¨ááá áĽá á ááá áá¸á á áá ááá°áá°á áá¨ááŠá˘ áá¤áą á¨áááŁááľ á¨áá áŚáł á CBOR áááľ ááááἠááá¨áĄ-
cborlen=1039673 tl_len=1095092
áĽá áľááá , áá°áá°ááŤááááłá°á á áááłáŤáľ ááá áŤááłáá á᪠á˝áá á¨ááááᥠá¨áá˝á˝á á ááĽáá áá á áŁá ááá á¨áá á áá¸áśá˝ á áá˘
ááŁá áááááľ áááľá¨áľ. áá áááľ áĽáá°áá á¨á°ááá á áá (ááá á ááľ áá á˛áá á) áᎠRTT áááľ áá - á¨ááááŞáŤá MTProto áááĽááľ áá á°áááááľ ááá¨áá ᣠáá á á ááłááľ áŚáłáá˝ - á°ááłáłá á¨á ááṠᣠááá-ááá á¨á á°á á° á áá°áá ᣠááá°. TLS á ááľáŠ áá áá°á áá? á áááą áá áĽá áľáĄ-
á TLS ááľáĽ PFS á˛á ááᣠTLS á¨ááá áá áľáŹáśá˝ (
RFC 5077 ) áááášá áĽáá°áá áłáá°áŤá°áŠ áĽá ááá áá¨ááá˝á á á áááአáá áłáŤá¨ááš á˘áááŞááľ á¨á°á°á¨ááá ááá áá áááá á ᢠá¨ááááŞáŤáá áááááľ á˛á¨ááľ áĽá áááá˝á á˛ááĽá, á áááአá¨áááááľ áááłá á˘áááŞááľ á áľáá áá°áá áá (á ááá áá á˛áŹáľ ááá) áŤáľá°áááá. á áá áá á¨áľ áááááą á¨áá á á°áá áá á¨ááá áá áľáŹáľá á¨áᎠá¨ááá áááá ááá áá° á áááአáááŤáᢠá˛áŹáą á áááŤá ááá (á¨ááá áá áľáŹáľ ááá) á¨á°áá°á ᨠááᣠáĽáąá á á áááአáá á¨á°á¨áḠáĽá á ááá á¨ááľ áááľ á ááááŽá˝ ááŤá¨á áá°áŤá¨áľ áŤáá áľ á¤áľá¤áľá¤áá á áááľá°á áááľááá˝á˘[10]ᢠáľááá á¨ááá áá áľáŹáľ ááľá°ááá áááŤá á¨á áááá áááá˝ á¨á°áŁáą PFSá ááĽáľ áá˝áá áááłá áá¨á á áá á˛ááᥠ(OpenSSL, nginx, Apache á ááŁáŞááľ áááŽááŤá áááł áá áŤá¨ááťá, áłáá áŁá˘áŤáá˝ áá ááá. ááá ááĽá á°ááłáľ, áĽáľá¨ áááľ áľá¨áľ).
áĽáá RTT áᎠá áá°ááᣠá˘áŤááľ ClientHello áĽá ServerHello ááááἠáŤáľáááááłááŁá¨á፠á áá á°áá áá á¨Finished áá ááἠááá áá˝ááᢠáá áĽáá áĽá áľá ᨠáá˝ áĽáá°ááá ááľáłááľ áŤááĽá á á˛áľ á¨á°á¨ááą áááááśá˝ áľáĽáľáĽ áŤáá áááĽáá°á áá ᣠáááááą áĽááá áá á ááľ áĽá áĽá ááá á¨á፠áŤáá° á¨á á áá áŤáá ᣠá á ááťáŤáááľ á áá á¨áľá¨-áážá˝ áĽáŤááá˝ - ááá ááá á°áŁááˇáᢠá¨ááľáĽá˘ áááľáᣠá áŁá ááĽá á¨ááľá ááľáĽ áŁáĄá ááá áŤááá áá á áŁá á°ááŁáááľ á ááá˘
áá ááá á¨áłá? á á áľá°áŤá¨áśáš ááľáĽ ááá.
áááĽáá!
á áá á°á¨áłáłá ááĽáá˝ ááá°á ááá ááľáĽ á´áááŤá áłááá áľáá áłá ááłáŽá˝á - á ááŤá¨áŚá˝á ᣠáááŽá° áááá ᣠá áááá˝á ᣠá¨á°á áááá˝á á áááŤá¨áľ ᣠááá° áĽáááá¨áłááᢠááá áĽáá áĽáá á áá¨á á á´áááŤá áá¨á áá á áááľá¨áľ.
áŚáľá°áá ááá á¨á´áááŤá á áŤá / á¨áááľ áááľá áá°áá°á áááĽáá. á á°áá áááŤááĄ-
- á¨á°ááŤáŠ á¨á˛á¤á ááááśá˝ áá á¨ááá˛ááá¨á ááŁáááľ
- áľá á°ááŚá˝ áĽá áąáá áĄáľáá˝ áŤááłáá áááŽá˝
- ááááŽá˝ ááá á¨áŽáľá°á á¨á áá ááĽá áá¸áá˘
- áľá ááá áĽá á ááťáŤá áááĽááľ á áľáŤáť
- á ááś áĽá á ááľá ááŤá¨á áŤáá ááŠááľ áááľáá?
- áľááľ ááá ááľáá˝ á á°áŤá á˝áá áá áĽáá´áľ áŁáá áĽáá°áááĄ
áĽá ááá˝ ááŤáá˝! áá¨áłá°á!
ááá: hab.com