ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ.
ΠΡ, ΠΠΈΠΊΡΠΎΡ ΠΠ½ΡΠΈΠΏΠΎΠ² ΠΈ ΠΠ»ΡΡ ΠΠ»Π΅ΡΠΈΠ½, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΠΎΠΏΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ USB-Π΄Π΅Π²Π°ΠΉΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Python PyUSB ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΡΠ΅Π²Π΅ΡΡ-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Π΅.
ΠΡΠ΅Π΄ΡΡΡΠΎΡΠΈΡ
Π 2019 Π³ΠΎΠ΄Ρ Π²ΡΡΡΠΏΠΈΠ»ΠΎ Π² ΡΠΈΠ»Ρ ΠΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΡΠ°Π²ΠΈΡΠ΅Π»ΡΡΡΠ²Π° Π Π€ β 224 Β«ΠΠ± ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΡΠ°Π²ΠΈΠ» ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°Π±Π°ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ
Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π·Π° ΠΎΠ±ΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ²Π°ΡΠΎΠ², ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠΈΡ
ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±Π°ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈΒ».
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΡΡΠΎ Ρ 1 ΠΈΡΠ»Ρ 2019 Π³ΠΎΠ΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΎΠ±ΡΠ·Π°Π½Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠ°ΡΠΊΡ ΡΠ°Π±Π°ΠΊΠ°. Π ΠΏΡΡΠΌΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (Π£ΠΠ). ΠΠ°Π³Π°Π·ΠΈΠ½Π°ΠΌ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΄Π°ΠΆΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΡΡΡ.
Π’Π°ΠΊΠΆΠ΅ Ρ 1 ΠΈΡΠ»Ρ 2020 Π³ΠΎΠ΄Π° ΠΎΠ±ΠΎΡΠΎΡ Π½Π΅ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π°ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠ°ΡΠΊΠΈ ΡΠΈΠ³Π°ΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠΌ Datamatrix. ΠΡΠΈΡΠ΅ΠΌ β Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ β Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Datamatrix Π±ΡΠ΄Π΅Ρ Π½Π΅ ΠΎΠ±ΡΡΠ½ΡΠΉ, Π° ΠΈΠ½Π²Π΅ΡΡΠ½ΡΠΉ. Π’ΠΎ Π΅ΡΡΡ Π½Π΅ ΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Π±Π΅Π»ΠΎΠΌ, Π° Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
ΠΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π°ΡΠΈ ΡΠΊΠ°Π½Π΅ΡΡ, ΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΡΡ ΠΈΡ ΡΠ°ΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²Π°ΡΡ/ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ°ΡΡ, ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ ΡΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΡΠΎΠ±ΡΡΠΈΠΉ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π» Π½Π°ΠΌ ΡΠΈΠ»ΡΠ½ΡΡ Π³ΠΎΠ»ΠΎΠ²Π½ΡΡ Π±ΠΎΠ»Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·Π±ΡΠΎΡΠ°Π½Ρ ΠΏΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΎΡΠΈΠΈ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ ΠΊΠ°ΡΡ β ΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π§ΡΠΎ Π±ΡΠ»ΠΎ Π΄Π΅Π»Π°ΡΡ? ΠΠ°ΡΠΈΠ°Π½ΡΠ° Π΄Π²Π°. ΠΠ΅ΡΠ²ΡΠΉ: ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π²ΡΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²Π°ΡΡ ΠΈ Π΄ΠΎΠ½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΊΠ°Π½Π΅ΡΡ. ΠΡΠΎΡΠΎΠΉ: ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ ΠΈ, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅ΠΌ ΡΡΠ°Π·Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π½Π΅ΡΠΎΠ² Π·Π° ΠΎΠ΄Π½Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ.
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π°ΠΌ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠ»: ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΠΏΠΎΡΡΠ°ΡΠΈΡΡΡΡ Π½Π° Π²ΡΠ΅Π·Π΄Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², Π΄Π° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠΎ ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π±Ρ Π»ΡΠ΄ΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π»ΠΈΡΡ Π² ΡΡΠΎΠΊ.
ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΡΠ΅ΠΌ Ρ ΠΎΡΠΎΡ, Π΅ΡΠ»ΠΈ Π±Ρ Π½Π΅ ΠΎΠ΄Π½ΠΎ Π½ΠΎ. Π£ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²Π΅Π½Π΄ΠΎΡΠΎΠ² Π½Π΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π½Π°ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΠΠ‘. Π ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎΠΊΠΈ ΠΏΠΎΠ΄ΠΆΠΈΠΌΠ°Π»ΠΈ, ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΡΠΌΠ°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ.
ΠΠ°Π»ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΡΡΠ½ΡΡ ΡΠΊΠ°Π½Π΅ΡΠΎΠ² ΠΏΠΎΠ΄ ΠΠ‘ Debian 9.x (Ρ Π½Π°Ρ Π²ΡΠ΅ ΠΊΠ°ΡΡΡ Π½Π° Debian).
Π Π°Π·Π³Π°Π΄Π°ΡΡ Π·Π°Π³Π°Π΄ΠΊΡ: ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠΈΡΡ ΡΠΊΠ°Π½Π΅Ρ
Π Π°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΠΈΠΊΡΠΎΡ ΠΠ½ΡΠΈΠΏΠΎΠ².
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ» Π²Π΅Π½Π΄ΠΎΡ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ΄ Windows, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Ρ IE. Π£ΡΠΈΠ»ΠΈΡΠ° ΡΠΌΠ΅Π΅Ρ ΠΏΡΠΎΡΠΈΠ²Π°ΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΊΠ°Π½Π΅Ρ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π»Π΅Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Ρ Π½Π°Ρ Debian, ΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π½Π° Debian usb-redirector server, Π½Π° Windows usb-redirector client. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ»ΠΈΡ usb-redirector ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠΎΠ±ΡΠΎΡ ΡΠΊΠ°Π½Π΅ΡΠ° Ρ Linux ΠΌΠ°ΡΠΈΠ½Ρ, Π½Π° Windows ΠΌΠ°ΡΠΈΠ½Ρ.
Π£ΡΠΈΠ»ΠΈΡΠ° ΠΎΡ Π²Π΅Π½Π΄ΠΎΡΠ° ΠΏΠΎΠ΄ Windows ΡΠ²ΠΈΠ΄Π΅Π»Π° ΡΠΊΠ°Π½Π΅Ρ ΠΈ Π΄Π°ΠΆΠ΅ Π΅Π³ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΠ²ΠΎΠ΄: ΠΎΡ ΠΠ‘ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ, Π΄Π΅Π»ΠΎ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ.
ΠΠΊ. ΠΠ° Windows-ΠΌΠ°ΡΠΈΠ½Π΅ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΊΡ, Π½Π° Linux-ΠΌΠ°ΡΠΈΠ½Π΅ ΡΠ½ΡΠ»ΠΈ dump.
ΠΠ°ΠΏΠΈΡ Π½ΡΠ»ΠΈ dump Π² WireShark ΠΈβ¦ Π²Π·Π³ΡΡΡΡΠ½ΡΠ»ΠΈ (ΡΠ°ΡΡΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ dump Ρ ΠΎΠΏΡΡΡ, ΠΎΠ½ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ).
Π§ΡΠΎ Π½Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π» dump:
ΠΠ΄ΡΠ΅ΡΠ° 0000-0030, ΡΡΠ΄Ρ ΠΏΠΎ Wireshark, β ΡΠ»ΡΠΆΠ΅Π±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ USB.
ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π»Π° ΡΠ°ΡΡΡ 0040-0070.
ΠΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² MOCFT. ΠΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ, Π²ΠΏΡΠΎΡΠ΅ΠΌ, ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΊΠ°Π΄ΡΠ° (Π²ΡΠ΄Π΅Π»Π΅Π½ ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ):
Π§ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ fd 3e 02 01 fe, Π»ΠΈΡΠ½ΠΎ Ρ, ΠΊΠ°ΠΊ ΠΈ ΠΠ»ΡΡ, ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π».
ΠΠΎΡΠΌΠΎΡΡΠ΅Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ (ΡΠ»ΡΠΆΠ΅Π±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π΄Π΅ΡΡ ΡΠ΄Π°Π»Π΅Π½Π°, Π²ΡΠ΄Π΅Π»Π΅Π½ ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ):
Π§ΡΠΎ ΡΡΠ°Π»ΠΎ ΡΡΠ½ΠΎ? Π§ΡΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° Π±Π°ΠΉΡΠ° β Π½Π΅ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°. ΠΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ, Π½ΠΎ Π΄ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ:
ΠΡΠΎΡ ΠΊΠ°Π΄Ρ ΡΠΎΠΆΠ΅ Π²Π²Π΅Π» Π² ΡΡΡΠΏΠΎΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° (Π²ΡΠ΄Π΅Π»ΠΈΠ») ΠΈ, ΠΊΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, ΠΈΠΌΠ΅Π»Π°ΡΡ ΡΠ°ΡΡΡ ΡΠ°ΠΉΠ»Π°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ
Π±Π°ΠΉΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π», ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ 1024 Π±Π°ΠΉΡΠ°. Π§ΡΠΎ Π·Π½Π°ΡΠΈΠ»ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±Π°ΠΉΡΡ β Ρ ΡΠ½ΠΎΠ²Π° Π½Π΅ Π·Π½Π°Π».
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΠΉ BBS-Π½ΠΈΠΊ, Ρ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π» ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ. 1024 Π±Π°ΠΉΡΠ° Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π». ΠΠ°ΡΠ°Π» ΠΈΠ·ΡΡΠ°ΡΡ ΠΌΠ°ΡΡΠ°ΡΡΡ ΠΈ Π½Π°ΡΠΊΠ½ΡΠ»ΡΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ» 1Π Xmodem. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ» ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ 1024, Π½ΠΎ c Π½ΡΠ°Π½ΡΠΎΠΌ: ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ Π»ΠΈΡΡ 128, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π» ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π±Π°ΠΉΡ. Π£ ΠΌΠ΅Π½Ρ ΠΆΠ΅ ΡΡΠ°Π·Ρ Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° 1024 Π±Π°ΠΉΡΠ°. Π Π΅ΡΠΈΠ» ΠΈΠ·ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π₯-ΠΌΠΎΠ΄Π΅ΠΌ.
ΠΠ°ΡΠΈΠ°ΡΠΈΠΉ ΠΌΠΎΠ΄Π΅ΠΌΠ° Π±ΡΠ»ΠΎ Π΄Π²Π΅.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΠΎΡΠΌΠ°Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° XMODEM Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ CRC8 (ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ XMODEM):
ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΡΠΎΡΠΌΠ°Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° XMODEM Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ CRC16 (XmodemCRC):
Π‘ Π²ΠΈΠ΄Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ SOH, Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ CRC ΠΈ Π΄Π»ΠΈΠ½Ρ ΠΏΠΎΡΡΠ»ΠΊΠΈ.
ΠΠΎΡΠΌΠΎΡΡΠ΅Π» Π½Π°ΡΠ°Π»ΠΎ Π²ΡΠΎΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ (ΠΈ ΡΠ½ΠΎΠ²Π° ΡΠ²ΠΈΠ΄Π΅Π» ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ, Π½ΠΎ ΡΠΆΠ΅ Ρ ΠΎΡΡΡΡΠΏΠΎΠΌ Π² 1024 Π±Π°ΠΉΡΠ°):
Π£Π²ΠΈΠ΄Π΅Π» Π·Π½Π°ΠΊΠΎΠΌΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ fd 3e 02, Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° Π±Π°ΠΉΡΠ° ΡΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ: Π±ΡΠ»ΠΎ 01 fe, Π° ΡΡΠ°Π»ΠΎ 02 fd. Π’ΡΡ Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Π²ΡΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊ ΡΠ΅ΠΏΠ΅ΡΡ Π½ΡΠΌΠ΅ΡΡΠ΅ΡΡΡ 02 ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ½ΡΠ»: ΠΏΠ΅ΡΠ΅Π΄ΠΎ ΠΌΠ½ΠΎΠΉ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ. ΠΠ΅ΡΠ²Π°Ρ 1024 ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° β 01, Π²ΡΠΎΡΠ°Ρ β 02, ΡΡΠ΅ΡΡΡ β 03 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ (Π½ΠΎ Π² hex, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ). ΠΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ fe Π½Π° fd? ΠΠ»Π°Π·Π° Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° 1, ΠΌΠΎΠ·Π³ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π», ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΡΠΈΡΠ°ΡΡ Ρ 0, Π° Π½Π΅ Ρ 1. ΠΠΎ ΡΠΎΠ³Π΄Π° ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π»ΠΎΠΊ 1, Π° Π½Π΅ 0? ΠΡΠ²Π΅ΡΠ° Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Ρ ΡΠ°ΠΊ ΠΈ Π½Π΅ Π½Π°ΡΠ΅Π». ΠΠ°ΡΠΎ ΠΏΠΎΠ½ΡΠ», ΠΊΠ°ΠΊ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π²ΡΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊ. ΠΡΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊ β ΡΡΠΎ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ FF β(ΠΌΠΈΠ½ΡΡ) Π½ΠΎΠΌΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π»ΡΡ ΠΊΠ°ΠΊ = 02 (FF-02) = 02 FD. ΠΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°ΠΌΠΏΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΎ ΠΌΠΎΡ Π΄ΠΎΠ³Π°Π΄ΠΊΡ.
Π’ΠΎΠ³Π΄Π° ΡΡΠ°Π»Π° Π²ΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠ°ΡΡΠΈΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ:
ΠΠ°ΡΠ°Π»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ
fd 3e 02 β Start
01 FE β ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° (34 Π±Π»ΠΎΠΊΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ 1024 Π±Π°ΠΉΡΠ°)
fd 3e 1024 Π±Π°ΠΉΡΠ° Π΄Π°Π½Π½ΡΡ
(ΡΠ°Π·Π±ΠΈΡΡΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ 30 Π±Π°ΠΉΡ).
ΠΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ
fd 25
ΠΡΡΠ°ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π΄ΠΎ 1024 Π±Π°ΠΉΡΠ°.
ΠΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°Π΄Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π±Π»ΠΎΠΊΠ°:
fd 25 β ΡΠΈΠ³Π½Π°Π» ΠΊ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π±Π»ΠΎΠΊΠ°. ΠΠ°Π»Π΅Π΅ 2f 52 β ΠΎΡΡΠ°ΡΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π΄ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° 1024 Π±Π°ΠΉΡΠ°. 2f 52, ΡΡΠ΄Ρ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, β ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° 16-bit CRC.
ΠΠΎ ΡΡΠ°ΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΄Π΅Π»Π°Π» Π½Π° Π‘ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅ΡΠ³Π°Π»Π° ΠΈΠ· ΡΠ°ΠΉΠ»Π° 1024 Π±Π°ΠΉΡΠ° ΠΈ ΡΡΠΈΡΠ°Π»Π° 16-bit CRC. ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ ΡΡΠΎ Π½Π΅ 16-bit CRC. Π‘Π½ΠΎΠ²Π° ΡΡΡΠΏΠΎΡ β ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° ΡΡΠΈ Π΄Π½Ρ. ΠΡΠ΅ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Ρ ΠΏΡΡΠ°Π»ΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΎΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ°. ΠΠ·ΡΡΠ°Ρ Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½ΡΠ΅ ΡΠ°ΠΉΡΡ, Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π΄Π»Ρ X-ΠΌΠΎΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ β CRC-CCITT (XModem). Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π½Π° C Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Ρ Π½Π΅ Π½Π°ΡΠ΅Π», Π½ΠΎ Π½Π°ΡΠ΅Π» ΡΠ°ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π² online ΡΡΠΈΡΠ°Π» Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ. ΠΠ΅ΡΠ΅ΠΊΠΈΠ½ΡΠ² Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠΊΡ 1024 Π±Π°ΠΉΡΠ° ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠ°ΠΉΡ ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΌΠ½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π»Π° Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
Π£ΡΠ°! ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ Π·Π°Π³Π°Π΄ΠΊΠ° ΡΠ΅ΡΠ΅Π½Π°, ΡΠ΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΡ ΠΏΡΠΎΡΠΈΠ²Π°Π»ΠΊΡ. ΠΠ°Π»Π΅Π΅ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π» ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ (Π° ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠ΅Π½Ρ Π² Π³ΠΎΠ»ΠΎΠ²Π΅) ΠΠ»ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΠΌΠΎΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ β Python.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π Π°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΠ»ΡΡ ΠΠ»Π΅ΡΠΈΠ½.
ΠΠΎΠ»ΡΡΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Ρ ΠΎΡΠ΅Π½Ρ Β«ΠΎΠ±ΡΠ°Π΄ΠΎΠ²Π°Π»ΡΡΒ».
Π‘ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ? ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Ρ Π½Π°ΡΠ°Π»Π°. ο Π‘ΠΎ ΡΠ½ΡΡΠΈΡ Π΄Π°ΠΌΠΏΠ° Ρ USB ΠΏΠΎΡΡΠ°.
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ USB-pcap
ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΈ ΡΠ°ΠΉΠ», ΠΊΡΠ΄Π° ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ dump.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠΊΠ°Π½Π΅Ρ ΠΊ ΠΌΠ°ΡΠΈΠ½Π΅, Π³Π΄Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎΠ΄Π½ΠΎΠ΅ ΠΠ EZConfigScanning Π΄Π»Ρ Windows.
Π Π½Π΅ΠΌ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ ΠΏΡΠ½ΠΊΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. ΠΠΎ ΠΊΠ°ΠΊ Π±ΡΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ? ΠΠ΄Π΅ ΠΈΡ
Π²Π·ΡΡΡ?
ΠΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ (ΡΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅). Π Π΅ΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ ΡΡΡΠΈΡ
ΠΊΠΎΠ΄Ρ ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ. DEFALT. ΠΡΠΎ ΠΈ Π΅ΡΡΡ Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°.
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ. ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ dump.pcap ΡΠ΅ΡΠ΅Π· wireshark.
ΠΠ»ΠΎΠΊ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ EZConfigScanning. ΠΡΠ°ΡΠ½ΡΠΌ ΠΎΡΠΌΠ΅ΡΠ΅Π½Ρ ΠΌΠ΅ΡΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π΄ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.
Π£Π²ΠΈΠ΄Π΅Π² Π²ΡΠ΅ ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, Ρ ΡΠΏΠ°Π» Π΄ΡΡ
ΠΎΠΌ. ΠΡΠ΄Π° ΠΊΠΎΠΏΠ°ΡΡ Π΄Π°Π»ΡΡΠ΅ β Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ·Π³ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΡΡΠΌΠ° ΠΈ-ΠΈ-ΠΈβ¦ ΠΠ³Π°! Π Π΄Π°ΠΌΠΏΠ΅ out β ΡΡΠΎ in, Π° in ΡΡΠΎ out.
ΠΠΎΠ³ΡΠ³Π»ΠΈΠ», ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ URB_INTERRUPT. ΠΡΡΡΠ½ΠΈΠ», ΡΡΠΎ ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ . Π ΡΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² 4: control, interrupt, isochronous, bulk. Π Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
Π endpoint Π°Π΄ΡΠ΅ΡΠ° Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ USB-Π΄Π΅Π²Π°ΠΉΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«lsusb βvΒ», Π»ΠΈΠ±ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ pyusb.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Π΄ΠΎ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΡΠ°ΠΊΠΈΠΌ VID. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΏΠΎ VID:PID.
ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΠΎ ΡΠ°ΠΊ:
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π½ΡΠΆΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ: ΠΊΠΎΠΌΠ°Π½Π΄Ρ P_INFO. ΠΈΠ»ΠΈ DEFALT, Π°Π΄ΡΠ΅ΡΠ°, ΠΊΡΠ΄Π° Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ endpoint=03 ΠΈ ΠΎΡΠΊΡΠ΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ²Π΅Ρ endpoint=86. ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² hex.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ Π½Π°Ρ ΡΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΠΎΡΠΊΠ»ΡΡΠΈΠΌ Π΅Π³ΠΎ ΠΎΡ ΡΠ΄ΡΠ°β¦
β¦ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π·Π°ΠΏΠΈΡΡ Π² endpoint c Π°Π΄ΡΠ΅ΡΠΎΠΌ 0x03,
β¦ Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΡΠ°Π΅ΠΌ ΠΎΡΠ²Π΅Ρ ΠΈΠ· endpoint Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ 0x86.
Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ:
P_INFOfmt: 1
mode: app
app-present: 1
boot-present: 1
hw-sn: 18072B44CA
hw-rev: 0x20
cbl: 4
app-sw-rev: CP000116BBA
boot-sw-rev: CP000014BAD
flash: 3
app-m_name: Voyager 1450g
boot-m_name: Voyager 1450g
app-p_name: 1450g
boot-p_name: 1450g
boot-time: 16:56:02
boot-date: Oct 16 2014
app-time: 08:49:30
app-date: Mar 25 2019
app-compat: 289
boot-compat: 288
csum: 0x6986
ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π² dump.pcap.
ΠΡΠ»ΠΈΡΠ½ΠΎ! ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΡΠΈΡ
ΠΊΠΎΠ΄Ρ Π² hex. ΠΡΠ΅, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π³ΠΎΡΠΎΠ².
ΠΠ°ΠΊ Π±ΡΡΡ Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΎΠΉ? ΠΡΠΎΠ΄Π΅, Π²ΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π½ΠΎ Π΅ΡΡΡ Π½ΡΠ°Π½Ρ.
Π‘Π½ΡΠ² ΠΏΠΎΠ»Π½ΡΠΉ Π΄Π°ΠΌΠΏ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ, ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΠ»ΠΈ, Ρ ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ. ΠΠΎΡ ΡΡΠ°ΡΡΡ ΠΏΡΠΎ XMODEM, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΏΡΡΡΡ ΠΈ Π² ΠΎΠ±ΡΠΈΡ
ΡΠ΅ΡΡΠ°Ρ
:
ΠΠΎΡΠΌΠΎΡΡΠ΅Π² Π² Π΄Π°ΠΌΠΏ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°Π΄ΡΠ° β 1024, Π° ΡΠ°Π·ΠΌΠ΅Ρ URB-data β 64.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ β 1024/64 β ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 16 ΡΡΡΠΎΠΊ Π² Π±Π»ΠΎΠΊΠ΅, ΡΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΠΏΠΎ 1 ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊ. ΠΠΎΠΏΠΎΠ»Π½ΡΡ 1 ΡΡΡΠΎΠΊΡ Π² Π±Π»ΠΎΠΊΠ΅ ΡΠΏΠ΅ΡΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ fd3e02 + Π½ΠΎΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ°.
14 ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΡΡΠΎΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΠΌ fd25 +, Ρ ΠΏΠΎΠΌΠΎΡΡΡ XMODEM.calc_crc() Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ Π²ΡΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° (ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π½Π΅ΠΌΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ βFF β 1β β ΡΡΠΎ CSUM) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ, 16-Ρ, ΡΡΡΠΎΠΊΡ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΠΌ fd3e.
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π²ΡΠ΅, ΡΠΈΡΠ°ΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ, Π±Π΅ΠΉ Π½Π° Π±Π»ΠΎΠΊΠΈ, ΠΎΡΠΊΠ»ΡΡΠ°ΠΉ ΡΠΊΠ°Π½Π΅Ρ ΠΎΡ ΡΠ΄ΡΠ° ΠΈ Π·Π°ΡΡΠ»Π°ΠΉ Π² Π΄Π΅Π²Π°ΠΉΡ. ΠΠΎ Π½Π΅ Π²ΡΠ΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ. Π‘ΠΊΠ°Π½Π΅Ρ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ,
ΠΎΡΠΏΡΠ°Π²ΠΈΠ² Π΅ΠΌΡ NEWAPP = ‘\xfd\x0a\x16\x4e\x2c\x4e\x45\x57\x41\x50\x50\x0d’.
ΠΡΠΊΡΠ΄Π° ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°?? ΠΠ· Π΄Π°ΠΌΠΏΠ°.
ΠΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π² ΡΠΊΠ°Π½Π΅Ρ ΡΠ΅Π»ΡΠΉ Π±Π»ΠΎΠΊ ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² 64:
ΠΡ ΠΈ ΡΠΊΠ°Π½Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ NEWAPP Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ hex. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ bytes_array
[253, 10, 22, 78, 44, 78, 69, 87, 65, 80, 80, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Π ΡΠΆΠ΅ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π² ΡΠΊΠ°Π½Π΅Ρ.
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠ²Π΅Ρ:
[2, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
ΠΡΠ»ΠΈ ΡΠ²Π΅ΡΠΈΡΡΡΡ ΡΠΎ ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎ XMODEM, ΡΡΠ°Π½Π΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ: Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΡΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ, Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ END_TRANSFER = ‘xfdx01x04’.
ΠΡ Π° ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈ Π±Π»ΠΎΠΊΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΡΡ Π»ΡΠ΄Π΅ΠΉ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅ Π½Π΅ΡΡΡ, ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΡ Π² ΡΠΊΡΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ΡΠ΅Π· tqdm ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ΅ΡΠ±Π°Ρ.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π°Π»ΡΡΠ΅ Π΄Π΅Π»ΠΎ Π·Π° ΠΌΠ°Π»ΡΠΌ. ΠΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΡΠ°ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΡΠΊΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΡΠΌΠΎΠ·ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΊΠ°ΡΡΠ°Ρ
, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠΎΠ³
ΠΠΎΡΡΠ°ΡΠΈΠ² ΠΊΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ» ΠΈ Π²ΠΎΠ»ΠΎΡ Π½Π° Π³ΠΎΠ»ΠΎΠ²Π΅, ΠΌΡ ΡΡΠΌΠ΅Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ»ΠΎΠΆΠΈΠ»ΠΈΡΡ Π² ΡΡΠΎΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΊΠ°Π½Π΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²Π°ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ°ΡΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ, ΠΌΡ ΡΠ΅ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»Π° Π²ΡΠ΅ΠΌΡ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°, Π° ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π±Π΅ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΠΏΡΡ ΡΠ΅Π²Π΅ΡΡ-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Π° ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com