рдорд╕реНрддреА рдФрд░ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реИрдкрдЯреЙрдк рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрдирд╛, рдпрд╛ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛ, рднрд▓реЗ рд╣реА рдЖрдк рд╕реНрдорд╛рд░реНрдЯ рди рд╣реЛрдВ

рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдм рд╢реБрд░реВ рд╣реБрдЖ


рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рд╣рдорд╛рд░реЗ рд╕рдорд╕реНрдпрд╛ рдХрдерди рд╕реЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 1 (рдПрдХ) рд▓реИрдкрдЯреЙрдк рд╣реИред рдПрдХ рдирдпрд╛, рдЧреЗрдорд░ рд▓реИрдкрдЯреЙрдкред рдЗрд╕рдХреЗ рдХреАрдмреЛрд░реНрдб рдкрд░ рдХреБрдЫ RGB-backlight рдХреЗ рд╕рд╛рдеред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЫрд╡рд┐
рдЪрд┐рддреНрд░ lenovo.com рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЗрд╕ рд▓реИрдкрдЯреЙрдк рдкрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рд╡рд╣ рдЪреАрдЬ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИред

рдПрдХ рд╕рдорд╕реНрдпрд╛ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рдкрд╕рдВрджреАрджрд╛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВред рдПрд▓ рдИ рдбреА рдлреНрд▓реИрд╢ рдФрд░ рдЙрди рд╕реБрдВрджрд░ рд░рдВрдЧ рдкрд░ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕ рддрд░рд╣ рдЭрдкрдХреА рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдкреНрд░рд╢реНрди рдпрд╣ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╡рд╣ рд╕рдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд┐рдирд╛ рд░рд┐рд╡рд░реНрд╕-рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд▓рд┐рдЦреЗ?

рдПрдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдЬрд╡рд╛рдм рдЙрдарддрд╛ рд╣реИ, рдирд╣реАрдВред рдЖрдЗрдП рдЖрдИрдбреАрдП рдЦреЛрд▓реЗрдВ рдФрд░ рдХреНрд░реИрдХрд┐рдВрдЧ рдХрд░реЗрдВред



рдЪрд░рдг 1 - рдХреЛрдб рдореЗрдВ рдЦреБрджрд╛рдИ


рддреАрди рдЯреНрд░рд┐рдЧрд░ рд╣реИрдВ рдЬреЛ рдмреИрдХрд▓рд╛рдЗрдЯ рдЪрдордХ рдмрдирд╛рддреЗ рд╣реИрдВред рдЖрд░реЛрд╣реА рдХрдард┐рдирд╛рдИ рдХреЗ рдХреНрд░рдо рдореЗрдВ:

1. рдмрдбрд╝реЗ рдмрдлрд╝рд░ рдЧреЗрдорд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓реЗрдиреЛрд╡реЛ рдирд░реНрд╡ рд╕реЗрдВрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдмрдлрд╝ рд╕реЗрдЯрдЕрдк рдореЗрдиреВ рд╣реИред

2. рд╣реЙрдЯрдХреА рд╕рдВрдпреЛрдЬрди рдПрдлрдПрди + рд╕реНрдкреЗрд╕ - рд╕рдВрднрд╡рддрдГ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

3. BIOSред рдЬрдмрдХрд┐ рд▓реИрдкрдЯреЙрдк рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдмреИрдХрд▓рд╛рдЗрдЯ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд▓ рдХреЗ рд▓рд┐рдП рд▓рд╛рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╢рд╛рдпрдж рд╣рдо рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореБрдЭреЗ рд╕рднреА рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдереА 3. рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдлрд▓рддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдЪрд▓реЛ рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓рддреЗ рд╣реИрдВ:

рдлрд╝реЛрд▓реНрдбрд░

рдпрд╣рд╛рдБ рдиреЛрдЯрд┐рд╕! рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ DLL рд╣реИ - LedSettingsPlugin.dllред рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ...? рдЖрдЗрдП рдЗрд╕реЗ рдЖрдИрдбреАрдП рдкреНрд░реЛ рдореЗрдВ рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред

рд╕рд╣реА рд╕реЗ рдбреЗрдврд╝

рд╕реНрдХреНрд░реАрди рдХреЗ рджрд╛рд╣рд┐рдиреЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ - рддреЛ, тАЛтАЛрдЗрддрдиреА рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА! рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рддрд╛рд░ рдпрд╣рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ ...

рдирд╛рдо-рдСрдл-рдж рд╕рдорд╛рд░реЛрд╣

рдУрд╣, рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ! рдЖрдЗрдП рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдирд╛рдо рд╕реЗ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдлрд╝рдВрдХреНрд╢рди рд╕реВрдЪреА рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред рдЖрдИрдбреАрдП рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╣реЙрдЯрдХреА рдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХреЗрд╡рд▓ рдЙрд╕ рдЪреАрдЬ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдирд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

setledstatusex

рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдореЗрдВ Y720LedSetHelper :: SetLEDStatusEx рдирд╛рдордХ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП! рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рддрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ CHDDevHelper :: HidRequestsByPath рдирд╛рдо рдХреА рдЪреАрдЬрд╝ рдХреЛ рджреЗрддрд╛ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ ID_38 рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдЖрдИрдбреАрдП рдиреЗ рдкреНрдпрд╛рд░ рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред

Var_34 рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рднреАред рдпрд╣ var_38 рдХреЗ рдареАрдХ рдмрд╛рдж рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХреЛрдбрд╛рдВрддрд░рдХ рдкрд░рдВрдкрд░рд╛рдУрдВ рдореЗрдВ, рдЪрд░ рдЖрд░рдПрд╕рдкреА рдХреЗ рддрд╣рдд рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред IDA рдореЗрдВ Var_34 рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдирд╛рдо рд╣реИ - -34hред

Var_38 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рд╢реВрдиреНрдп, рдлрд┐рд░ рд╢реИрд▓реА, рд░рдВрдЧ, рдирдВрдмрд░ рддреАрди рдФрд░ рдмреНрд▓реЙрдХ - рдХреАрдмреЛрд░реНрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдбрд╛рд▓рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд░рдВрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред (рдмрд╛рдж рдореЗрдВ, рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдирдВрдмрд░ рддреАрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрдордХ рд╣реИред рдЙрд╕ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рдирд╛ рд╣рдорд╛рд░реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛ рджреЗрдЧрд╛!)

рдЕрдм, рд╣рдо HidRequestsByPath рдореЗрдВ рдПрдХ рдЧрд╣рд░реА рдбреБрдмрдХреА рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдФрд░ рдХрд╣рд╛рдБ рднреЗрдЬрдирд╛ рд╣реИред

devhelper

рджреЗрдЦреЛ, рджреЛ рдХрд╛рд░реНрдпред HidD_GetFeature рдФрд░ HidD_SetFeatureред

рд╡реЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Microsoft рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ - рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ ред

рдЦреИрд░, рд╣рдо рдЕрдм рдЦреБрдж рдХреЛ рдкреАрда рдкрд░ рдердкрдердкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЪрдЯреНрдЯрд╛рди рдиреАрдЪреЗ рд╣реИ, рдХрд╣реАрдВ рднреА рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдХреЗ рдкрд╛рд╕ рджреЛ рдХрд╛рд░реНрдп рд╣реИрдВ - рд╣рдо рдмрд╕ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╣рддреЗ рд╣реИрдВред ... рдареАрдХ рд╣реИ?

рдЪрд░рдг 2 - рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ ...?



рдмрд┐рд▓рдХреБрд▓ рдирд╣реАрдВред рдЖрдЗрдП рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ lsusb рдЦреЛрд▓реЗрдВред рд╣рдореЗрдВ рдЕрдкрдирд╛ рдХреАрдмреЛрд░реНрдб рдорд┐рд▓реЗрдЧрд╛, рдФрд░ рд╣рдо рдЙрд╕реЗ рдХреБрдЫ рднреЗрдЬреЗрдВрдЧреЗред

lsusb

рдПрдХреАрдХреГрдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдПрдХреНрд╕рдкреНрд░реЗрд╕, рдЗрдВрдХред рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЖрдЗрдП рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдХрд░рдг / рджреЗрд╡ / рд╣рд┐рджреНрд░рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рд╡реНрдпрдХреНрддрд┐ / sys / рд╡рд░реНрдЧ / hidraw / hidraw * / рдбрд┐рд╡рд╛рдЗрд╕ / uevent рдХреЛ рджреЗрдЦрдХрд░ рдЙрдЪрд┐рдд рдПрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

hidraw

рдпрд╣ рдПрдХред рд╕рднреА рдЕрдВрдХ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ / dev / hidraw0 рд╣рдорд╛рд░рд╛ рдЙрдкрдХрд░рдг рд╣реИред рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдХреБрдЫ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ ... рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ! рдХреНрдпреЛрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, burnout рдХрд┐рдХ рдореЗрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдирд╢реНрд╡рд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмрд╛рдд рд╣реИ?

рд▓реЗрдХрд┐рди рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд░рд╣реЗрдВред рдЗрд╕ рдкрд░ рд▓реЗрдЦрдХ рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреЗ рдереЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд░реНрд╡ рд╕реЗрдВрдЯрд░ рдХреЛ рдХреБрдЫ рдФрд░ рдЙрд▓рдЯ рджрд┐рдпрд╛ рдФрд░ рд╣рд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдП ... рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдорд╕реНрддрд┐рд╖реНрдХ рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░реЗрдВ, рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдпрд╣ рдмрд╛рдд рд╣реИ - рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░, рд╡реЗ рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдп рд╣реИрдВ - рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд░рд▓ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХред

рддреЛ рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдПрд▓рдИрдбреА рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдм рддрдХ рдмрд╕ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп!

рдЕрдХреНрд╖рдо-рдбрд┐рд╡рд╛рдЗрд╕

рдЗрд╕рдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ред рдпрджрд┐ рд╣рдо рдЗрд╕рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдИрдбреА рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ - рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рд░рд╣рд╕реНрдпрдордп рдПрд▓рдИрдбреА рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИред

рд╣рдорд╛рд░реЗ-рдбрд┐рд╡рд╛рдЗрд╕

рджреЗрдЦреЛ - рдпрд╣ рд╡рд╣ рд╣реИред

dmesg

рд╡рд╣ рдЙрдкрдХрд░рдг рдЬреЛ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдореЗрд░реЗ dmesg рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИред

[рдЗрд╕реЗ lsusb рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛? рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдмрд┐рд▓реНрдХреБрд▓! рдмреИрдХрд▓рд╛рдЗрдЯ I2C рдЫрд┐рдкрд╛рдИ рдирд╛рдордХ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЙрдкрдХрд░рдг рдХреЛ рдмреБрд░рд╛рдИ рд╕реЗ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рд▓реЛрдЧреЛрдВ рдХреЗ рд╣рд╛рде рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдмрд╕ рдкрд░ рдЫрд┐рдкрд╛рдИ рдЧреИрдЬреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред]

рд╕рд┐рдбрд╕реНрдЯреЗрдк 2.5 - рдЪрд▓реЛ рдПрдХ рдХрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ


рд╕рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЗрд╕ рдЦреЛрдЬ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореВрд▓ рдмрддрд╛рдиреЗ рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдирд╛ рд╕реЗрдЯрдЕрдк рд▓рдЧрднрдЧ рд╕рднреА рддрд░рд╣ рд╕реЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдХреБрдЫ рднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдЦреБрдж рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдЗрд╕ dmesg рд▓реЙрдЧ рдХрд╛ рдЖрдирдВрдж рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЪреВрдБрдХрд┐ рд╣рдо рдпрд╣рд╛рдБ рд╣реИрдВ - рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЫреЛрдЯреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ?

рд╣рдореЗрдВ рджреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╡рд╣ рдЬрдЧрд╣ рдЬрд╣рд╛рдВ I2C рдЫрд┐рдкрд╛рдИ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рдЙрдирдХреЗ quirks рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдпрд╣рд╛рдБред рдЖрдЗрдП рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рди рд╕реЛрдЪреЗрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦреЗрдВ: рдЕрдзреВрд░реА рд░рд┐рдкреЛрд░реНрдЯред рдЪрд▓рд┐рдП рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдмреБрд░рд╛-рдЗрдирдкреБрдЯ рдЖрдХрд╛рд░

рдПрдХ рдирдпрд╛ рдХреНрд╡рд┐рдХ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕реЗ I2C_HID_QUIRK_BAD_INPUT_SIZE рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдХрд╣реЗрдВред рдереАрдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рдореЛрдбрд╝

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХреНрд╡рд░реНрдХ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рд╣рдордиреЗ рдЕрдм рддрдХ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ:

1. рдПрдХ рдЦреЛрдЬ рдЗрдВрдЬрди рдореЗрдВ "i2c hid linux kernel" рдХреЛ рджреЗрдЦрд╛ред DuckDuckGo рдореЗрдВ 4th рдкрд░рд┐рдгрд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ред

2. рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рддреАрди (!) рд╢рдмреНрдж рд▓рд┐рдЦреЗ - BAD_INPUT_SIZE

3. рдмреАрдЖрдИрдЯреА (4) рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдкрд░рд┐рдгрд╛рдо - BIT (5)ред

4. рдЫрд┐рдкрд╛рдП-рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рдирдВрдмрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ - рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЖрдИрдбреА (рд╕рдЪрд┐рддреНрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдард┐рдирд╛рдИ рдореЗрдВ рд╕рдорд╛рди рд╣реИ)

рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рдЕрдм рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд▓рд╛рдЗрди рджреЗрдЦреЗрдВ:
ret_size = ihid->inbuf[0] | ihid->inbuf[1] << 8;

рдФрд░ рдлрд┐рд░ рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ ret_size рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдпрд╣ рд╣реИред

рдЬрдм рднреА рд╣рдорд╛рд░рд╛ рдХреНрд╡рд┐рдХ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдкреАрдЫреЗ рдХреА рдУрд░ред

рдпрджрд┐ рд╢рд░реНрдд

рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдкреИрдЪ рднреЗрдЬреЗрдВ ... (рдкрд╣рд▓реЗ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ!)ред рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреИрдЪ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред

рд▓рд╛рдЧреВ

рдпрд╣ рдмрд╛рдд рд╣реИ!

рдЪрд░рдг 3 - рдбреНрд░рд╛рдЗрд╡рд░!


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ - рдореИрдВ рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЕрднреА рддрдХ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рд╕рд╡рд╛рд▓ рдЙрдардиреЗ рд▓рдЧреЗ, рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рдпрд╣ рдкрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдореБрдЭрд╕реЗ рд╕рд▓рд╛рд╣ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрд╛рдд рдХрд░рдХреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдЖрдЗрдП рдЕрдЬрдЧрд░ рдХреЛ рдЦреЛрд▓реЗрдВред (рдмреИрд╢ рд╣реБрдЖ рдХрд░рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрд╕ рддрд░рд╣ рдХреА рднрд╛рд╖рд╛ рд╕реЗ рдЕрдкрдирд╛ рджрд┐рдорд╛рдЧ рдмрд╣реБрдд рдЬрд▓реНрджреА рдмрджрд▓ рд▓реЗрддреЗ рд╣реИрдВ)ред рдЖрдЗрдП рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдХрд░рдг / рджреЗрд╡ / рд╣рд┐рджреНрд░рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

/ dev / hidraw0, / dev / hidraw1 - рд╡реЗ рдлрд╛рдЗрд▓реЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд╡реИрд╕реЗ рднреА? рд╕рд░рд▓ I / O рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдФрд░ GetFeature рдФрд░ SetFeature - рдареАрдХ рд╣реИ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред

StackOverflow (рдпрд╛ рдХрд┐рд╕реА рдФрд░, рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ) рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ ioctl рдирд╛рдордХ рдЪреАрдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ HID рдЙрдкрдХрд░рдгреЛрдВ, рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдШреГрдгрд┐рдд рдЪреАрдЬреЛрдВ рдЬреИрд╕реА рдЕрд╕рд╛рдорд╛рдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХрд╛ рд╣реИред

рдпрд╣ рд╕рддрд╣ рдкрд░ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ - рдЖрдк рдЗрд╕реЗ рдПрдХ рдЦреБрд▓реА рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓ рджреЗрддреЗ рд╣реИрдВ (рдкрд╛рдпрдерди-рд╕реНрддрд░ рдирд╣реАрдВ, рдУрдПрд╕-рд╕реНрддрд░! рдпрджрд┐ рдЖрдк рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдВ рдУрдПрд╕ рд╣реИрдВрдбрд▓ рдкрд░ рдФрд░ рдкрдврд╝реЗрдВред), рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдПрдХ рдмрдлрд░ - рдФрд░ рдлрд┐рд░ рдпрд╣ рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рдмрдлрд╝рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдЖрдк рдЗрд╕реЗ рд╡рд╛рдкрд╕ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдпрд╣рд╛рдБ рдордЬрд╛рдХрд┐рдпрд╛ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдирд┐рд░реНрднрд░ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: 0xC0114806ред рд╡рд╣ рдХреНрдпрд╛ рд╣реИ? рд╡рд╣ рд╕реЗрдЯрдлрд┐рдЯреНрдпреЛрд░ рд╣реИред рд╡рд╣ рднреА рд╣реИ

(6 << 29) | (ord('H') << 8) | (0x06 << 0) | (0x11 << 16).

рдкрд╣рд▓реЗ 6 рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдЦреБрд▓реА рд╣реЛрдЧреАред рд╣рдо рдХреЗрд╡рд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЙрдХреНрд╕ рдиреЗ рдХрд╣рд╛ рдХрд┐ 6 рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ 6. рдСрд░реНрдб ('рдПрдЪ') рдХреЛ рдЫрд┐рдкрд╛рдпрд╛ред рдХрднреА-рдХрднреА рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЫреБрдкрд╛ рд╣реБрдЖ рд╣реИред

0x06 рдХрдорд╛рдВрдб рдЦреБрдж рд╣реИред рдЫрд┐рдкрд╛рдИ рдХреА рдЫрдареА рдХрдорд╛рди рд╕реЗрдЯрдлрд╝рд┐рдПрдЯ рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред рдФрд░ рдЖрдЦрд┐рд░реА рд╣рд┐рд╕реНрд╕рд╛? рдмрдлрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ред

рдЬреЛ рдХреБрдЫ рднреА рдмрдЪрддрд╛ рд╣реИ, рдЙрд╕реЗ рдПрдХ ioctl рдХреЙрд▓ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред ред

рд▓реЗрдЦрдХ рд╕реЗ рдмрд╛рдж рдореЗрдВ


рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧреА рдкрдврд╝рд╛, рд╕рдВрднрд╡рддрдГред рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдПрдХ рдЕрдзрд┐рдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдХреАрдмреЛрд░реНрдб рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕реЗрдЯ_рд╕реНрдЯреИрдЯрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рджреВрд╕рд░рд╛ ioctl рдХреЙрд▓ рд╣реИ рдЬреЛ рдкрд╛рда рдореЗрдВ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдмрдбрд╝реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдФрд░ рдПрдХ рдХрд╣рд╛рдиреА рдпрд╣ рд╕рдм рдХрд╡рд░ рдирд╣реАрдВ рдХрд░реЗрдЧреАред рдФрд░ рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╢рд╛рдпрдж рд▓реЗрдЦ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЦреБрд▓реЗ-рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдпрд╛ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЫреЛрдЯрд╛ рдФрд░ рдЕрдЪреНрдЫрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреА рдореБрдлреНрдд рд╢рд╛рдореЗрдВ, рдХреБрдЫ рдЪрд╛рдп рдФрд░ рдХреЛрдб рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi484752/


All Articles