áááşáááŻá
ááťá˝ááşáŻááşáááŻáˇá Viktor Antipov áážááˇáş Ilya Aleshin áááŻáˇáááş Python PyUSB áážáá áşáááˇáş USB á ááşáá ášá ááşá¸ááťáŹá¸áážááˇáş ááŻááşááąáŹááşáááˇáş áĄáá˝áąáˇáĄááźáŻáśáážááˇáş reverse engineering áĄááźáąáŹááşá¸ áĄáááşá¸áááşááᯠáááąáˇ áá˝áąá¸áá˝áąá¸ááŤáááşá
á áąáŹáááŻááťá¸ááŹá
2019 ááŻáážá
áşáá˝ááşá ááŻáážáŹá¸áááşáááąá¸áážááşá¸áĄá
ááŻá¸áááĄááááˇáşáĄáážááş 224 áá˝ááş âáááşáážááşááźááşá¸áááşá¸áááşá¸ááťáŹá¸áážááˇáş ááŻááşáá
ášá
ááşá¸ááťáŹá¸ áááşáááşáážáŻá
áąáŹááˇáşááźááˇáşááźááşá¸áááŻááşáᏠáááŻááşááśááąáŹáşááááşá¸áĄááťááşáĄáááşá
áá
áş áĄááąáŹááşáĄáááşááąáŹáşáážáŻá ááášáááŹáááşááťáŹá¸ááźááˇáş ááśááááşáááşááźááşá¸áááŻááşáᏠá
ááşá¸ááťááşá¸ááťáŹá¸ áĄáááşááźáŻááťááşáĄáá âááąá¸áá˝ááşááźáŽá¸áá˝ááşááŻááşááťáŹá¸áážááˇáş á
ááşááťááşá¸á áĄáááşáááşáááşá
1 ááŻáážá
áş áá°áááŻááşá 2019 áááşááąáˇáážá
áááşá ááŻááşááŻááşáá°áááş ááąá¸áá˝ááşááźáŽá¸áá
áşááŻááşá
áŽááᯠááśááááşáááşáááş áááŻáĄááşááźáąáŹááşá¸ á
áŹáááşá¸áá˝ááş áážááşá¸ááźááŹá¸áááşá áážááˇáş áááŻááşáááŻááşááźááˇáşááźá°á¸áá°ááťáŹá¸áááş universal transfer document (UDD) ááᯠáĄááąáŹááşáĄáááşááąáŹáşááźááşá¸ááźááˇáş á¤ááŻááşááŻááşááťáŹá¸ááᯠáááşááśááááşááźá
áşáááşá á
áááŻá¸áááŻááşááťáŹá¸áááş áá˝áąááŹá¸á
áŹáááşá¸áážáá
áşáááˇáş ááśááááşáááşááŹá¸ááąáŹ ááŻááşáá
ášá
ááşá¸ááťáŹá¸ááąáŹááşá¸ááťááźááşá¸ááᯠáážááşááŻáśáááşáááş áááŻáĄááşááŤáááşá
áááŻáˇáĄááźááşá 1 ááŻáážá áş áá°áááŻááşá 2020 áááşááąáˇáážá áááşá ááśááááşááááşááŹá¸ááąáŹ ááąá¸áá˝ááşááźáŽá¸áá˝ááşááŻááşááťáŹá¸ ááźááˇáşááąááźááşá¸ááᯠááŹá¸ááźá áşááŹá¸áááşá áááŻáááŻáááşáážáŹ á áŽá¸ááááşáá°á¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáĄáá°á¸ Datamatrix ááŹá¸ááŻááşááźááˇáş áĄáážááşáĄááŹá¸ááźáŻáááŤáááşá áááŻáˇáĄááźááş - áĄááąá¸ááźáŽá¸ááąáŹáĄááťááşáážáŹ Datamatrix áááş ááŹáááşáááŻááşááąáŹáşáááşá¸ ááźáąáŹááşá¸ááźááşááźá áşáá˝áŹá¸ááźáąáŹááşá¸ áá˝áąáˇáážááááŤáááşá áááŻáááŻáááşáážáŹ áĄááźá°ááąáŤáşáá˝ááş áĄáááşááąáŹááşááŻááşáááŻááşááąáŹáşáááşá¸ áĄááźááşáĄáážááşááźá áşáááşá
ááťá˝ááşáŻááşáááŻáˇáááş ááťá˝ááşáŻááşáááŻáˇáá áááşááŹááťáŹá¸ááᯠá ááşá¸áááşáá˛áˇááźáŽá¸ áĄááťáŹá¸á áŻáážáŹ ááźááşáááşááźááşáááşááźááşá¸/ááźááşáááşááąáˇááťááˇáşáááş áááŻáĄááşááźáąáŹááşá¸á áááŻáˇáááŻááşááŤá áááşá¸áááŻáˇáááş á¤ááŹá¸ááŻááşááźááˇáş ááŻáśáážááşáĄááŻááşáááŻááşáááŻááşááąáŹáˇááźáąáŹááşá¸ áá˝áąáˇáážááááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááŻáášáááŽáááş ááťááşááźáąáŹáážááąáŹáááşááźáąáá˝ááş ááźááˇáşááťá˛ááąááąáŹ á áááŻá¸áááŻááşááťáŹá¸á á˝áŹáážáááąáŹááźáąáŹááˇáş á¤áĄááźá áşáĄááťááşááťáŹá¸áááş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ ááźááşá¸áááşá á˝áŹ ááąáŤááşá¸áááŻááşá áąáááşáᯠáĄáŹáááśááŤáááşá ááąáŹááşá¸áážááˇáşááťáŽááąáŹ áá˝áąááŹá¸á áŹáááşá¸ááťáŹá¸ - áážááˇáş áĄááťáááşáĄáááşá¸áááşááŹá
ááŹáááşááŻááşáááá˛á áá˝áąá¸ááťááşá ááŹáážá áşááŻáážááááşá ááááĄááťááş- áááŻááşáá˝ááşá¸áážá áĄááşááťááşááŽááŹááťáŹá¸áááş á áááşááŹááťáŹá¸ááᯠáááşááźááˇáş ááźááşáááşá áááşááźáŽá¸ ááťáááşáážáááąá¸áááşá ááŻááá- ááťá˝ááşáŻááşáááŻáˇáááş áĄááąá¸ááž áĄááŻááşááŻááşááźáŽá¸ áááŻááąáŹááşá¸áááşáážáŹ áá áşááźáááşáááşá¸áá˝ááş á áááşááŹááťáŹá¸á á˝áŹááᯠáá áşááźáááşáááşá¸ ááŹááááŤáááşá
ááááá˝áąá¸ááťááşáážáŻáážáŹ ááťá˝ááşáŻááşáááŻáˇáĄáá˝ááş ááááˇáşááťáąáŹáşáááşáážáŹ áááşáážáŹá¸áááş- ááťá˝ááşáŻááşáááŻáˇáááş ááŹááąáŹááşáááşáááşááąáŹ áĄááşááťááşááŽááŹááťáŹá¸áĄáá˝ááş áá˝áąááŻáśá¸á á˝á˛ááááşááźá áşááźáŽá¸ á¤áĄááźáąáĄááąáá˝ááş ááŻááşáááşá¸á ááşááᯠááááşá¸ááťáŻááşáááşáážááˇáş áážááážááŻááşá¸áááş áááşáá˛áááşááźá áşáááşá ááŤááąáááˇáş áĄááąá¸ááźáŽá¸ááŻáśá¸áááąáŹáˇ áá°áá˝áąá áĄááŻááşááźá áşáážáŹá áááŻáááŻáááşáážáŹ ááťá˝ááşáŻááşáááŻáˇáááş áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸á á˝áŹ ááśááááŻááşááťáąáážáááźáŽá¸ ááąáŹááşááŻáśá¸áááşáážááşáááşááᯠáááźááˇáşááŽáááŻááşááŤá
ááŻááááá˝áąá¸ááťááşáážáŻáááş áá áşááŻáááşá¸áĄáá˝ááşáááŻááşááŤá áá°áááŻááşá¸áĄáá˝ááşááąáŹááşá¸áááşá áĄááťááŻáˇááąáŹááąáŹááşá¸ááťáá°ááťáŹá¸áááş áááŻáĄááşááąáŹáááşáááşáážáŻá áá áşáĄáŹá¸ááŻáśá¸áĄáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááŻáĄááşááąáŹ áĄááąá¸ááž áĄáááşá¸ááźááşááááááŹááťáŹá¸ ááážáááŤá ááźáŽá¸ááąáŹáˇ áááşáážááşáááşáá˝áą ááŻááşááŻáśá¸áá˝áŹá¸ááąáŹáˇ áááŻááˇáşááąáŤááşá¸áá˛áˇáááŻááş áá˝áąá¸ááąááááşá
áááŻáˇááąáŹááşá ááťá˝ááşáŻááşáááŻáˇáááş Debian 9.x OS áĄáá˝ááş áááşáááŻááşá áááşááŹááťáŹá¸áĄáá˝ááş ááááááŹááťáŹá¸ááᯠáááşáááŻáˇááŽáá˝ááşáá˛áˇáááş (ááťá˝ááşáŻááşáááŻáˇá áá˝áąááŹá¸á áŹáááşá¸áĄáŹá¸ááŻáśá¸ááᯠDebian áá˝ááşáážááááş) áááˇáşáĄáŹá¸ ááźáąáŹááźááŤáááşá
áááąá ááááŻááźáąáážááşá¸ááŤ- á áááşááŹááᯠááááşáážáşááŻááşáááşá¸
Victor Antipov á áááşááźááŹá¸ááŤáááşá
ááąáŹááşá¸ááťáá°áážááąá¸ááąáŹáááŹá¸áááşáĄááŻáśá¸áĄááąáŹááşáááş Windows áĄáąáŹááşáá˝ááşáážáááźáŽá¸ IE áážááˇáşááŹáĄááŻááşááŻááşáááşá utility áááş á áááşááŹááᯠflash ááźáŽá¸ configure ááŻááşáááŻááşáááşá
ááťá˝ááşáŻááşáááŻáˇááá áşáážááşá áá áşáááş Debian ááźá áşááąáŹááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş Debian áá˝ááş usb-redirector ááŹááŹáá áşááŻáážááˇáş Windows áá˝ááş usb-redirector client ááᯠáááˇáşáá˝ááşá¸ááŹá¸áááşá usb-redirector utilities ááᯠáĄááŻáśá¸ááźáŻá scanner ááᯠLinux á ááşááž Windows á ááşáááŻáˇ ááąá¸áááŻáˇáá˛áˇáááşá
Windows ááąáŹááşá¸ááťáá°ááž áĄááŻáśá¸áááşáážáŻáá áşááŻáááş á áááşááŹááᯠááźááşááźáŽá¸ ááŻáśáážááşáĄáááŻááşá¸áááş ááŽá¸ááąáŹááşááąááŤáááşá áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇ áááááąáŹááşááťááşááťáá˛áˇáááş- OS ááąáŤáşáá˝ááş ááŹáážááá°áááşááŤá áááşá¸áááş flashing protocol áááá ášá ááźá áşáááşá
áĄááŻááąáááşááąáŹáşá ááťá˝ááşáŻááşáááŻáˇáááş Windows á ááşááąáŤáşáá˝ááş áážáááşááŻááşáážáááşááŻááşáážáááşááŻááşááźááźááşá¸ááᯠááŻááşááąáŹááşáá˛áˇááźáŽá¸ Linux á ááşáážá áĄáážááŻááşááŻáśá¸ááᯠáááşáážáŹá¸áá˛áˇáááşá
áĄáážááŻááşááŻáśááźáŽá¸ááᯠWireShark áá˛áááŻáˇáááˇáşáááŻááşáááş... á áááşáááąáŹááşá¸ááźá áşáááááş (áĄáážááŻááşááŻáśááĄááąá¸á áááşáĄááťááşáĄááťááŻáˇááᯠááťá˝ááşáŻááşááťááşáážááşááŹá¸áááŻááşáááşá áááşá¸áááŻáˇáááş á áááşáááşá áŹá¸á ááŹáááŻááşááŤ)á
áĄáážááŻááşááŻáśááźáŽá¸á ááťá˝ááşáŻááşáááŻáˇááᯠááźááŹá¸áááş-
Wireshark ááž ááŻáśá¸ááźááşááąáŹ ááááşá
áŹááťáŹá¸áááş 0000-0030 áááş USB áááşááąáŹááşáážáŻ áĄááťááşáĄáááşááźá
áşáááşá
áĄáááŻááşá¸ 0040-0070 ááᯠá áááşáááşá áŹá¸áá˛áˇááźáááşá
MOCFT ááŹááşááąáŹááşááťáŹá¸áážáá˝á˛á ááŻááşáá˝ážááˇáşáážáŻááąáŹááşáá áşááŻááž ááŹáážááážááşá¸áááşá¸ááŤá á¤áĄáášáááŹááťáŹá¸áááş áááşá¸áá˛ááşáááŻááşááž ááŹááşááąáŹááşááťáŹá¸áĄááźááş áááááşáĄááŻáśá¸áĄáá ááťááşáážáááąáŹ ááŹááşááąáŹááşááťáŹá¸áĄááźá áş ááźáąáŹááşá¸áá˛áá˝áŹá¸áááş (áááŻááşá¸áá˛áááŻááşááᯠááŽá¸ááąáŹááşá¸áááŻá¸ááźááŹá¸áááş)
fd 3e 02 01 fe áááşášááąááá˝áąá ááŹáááŻáááŻáááŻáá˛á Ilya áááŻááťááŻá¸ ááŻáášáááŻááşááąá¸áĄáááąáŹáˇ ááááá˛áˇááŤáá°á¸á
áĄáąáŹááşááŤááąáŹááşááᯠááźááˇáşáááŻááşáááş (áááşááąáŹááşáážáŻáĄááťááşáĄáááşááᯠá¤ááąááŹáá˝ááş áááşáážáŹá¸áááŻááşáááşá áááŻááşá¸áá˛áááŻááşááᯠááŽá¸ááąáŹááşá¸áááŻá¸ááźááŹá¸áááş)
ááŹáá˝áą áážááşá¸áá˝áŹá¸ááŹáá˛á ááááážá
áşáááŻááşáááş ááááşá¸ááąáá
áşááťááŻá¸ááźá
áşáááşá ááąáŹááşáááşáá˝á˛ááŻááşáá˝ááşááťáŹá¸áĄáŹá¸ááŻáśá¸á áááşá¸áááŻáĄáááşááźáŻááąáŹáşáááşá¸ ááŻááşáá˝ážááˇáşáážáŻááááşáááŻáˇááźááşá¸áááźáŽá¸ááŻáśá¸ááŽ-
áĄáááşáááźááşááźáąáŹááşá¸áá˛áá˝áŹá¸áááş (ááŽá¸ááąáŹááşá¸áááŻá¸ááźááŹá¸áááş) áážááˇáş áá°á¸áááşá¸ááąáŹááşáĄáąáŹááşáááşá áááŻááşááá
áşá
áááşáá
áşáááŻááşá¸áážáááąáŹááźáąáŹááˇáş á¤ááąáŹááşáááş áĄáśáˇááźá
ááŹááźá
áşáá˛áˇáááşá áááŻááşá áá˝ážá˛ááźáąáŹááşá¸ááŹá¸ááąáŹ áááŻááşááťáŹá¸á áĄáá˝ááşáĄá
áŹá¸áááş 1024 bytes ááťáŹá¸ááᯠáá˝ážá˛ááźáąáŹááşá¸ááŹá¸ááźáąáŹááşá¸ ááźááá˛áˇáááşá ááťááşáážáááąáŹ áááŻááşááťáŹá¸ ááŹáááŻáááŻáááŻáááşááᯠááťá˝ááşááąáŹáş ááááá˛áˇááźááşáááşá
áááááŻáśá¸áĄááąáá˛áˇá BBS ááŹáááşááąáŹááşá¸áá áşááŻáĄááąáá˛áˇá á áśááŽááŹááááŻáááŻááąáŹáá˝áąááᯠááźááşááŻáśá¸áááşáá˛áˇáááşá ááááŻáááŻááąáŹ 1024 bytes ááŻááşáá˝ážááˇáşááźááşá¸ááážáááŤá ááŹáˇááşáá˛ááᯠá áááşááąáˇááŹáá˛áˇááźáŽá¸ 1K Xmodem ááááŻáááŻááąáŹááᯠáá˝áąáˇáá˛áˇááŤáááşá áááşá¸áááş 1024 áááŻááŻááşáá˝ážááˇáşáá˝ááˇáşááźáŻááąáŹáşáááşá¸áááááąá¸ááťááşáá áşááŻáĄááąááźááˇáş- ááááá˝ááş 128 ááŹáážáááźáŽá¸ áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ááážáááŤáá ááááŻáááŻááąáŹáááş áááŻáˇáá˝ážááşááąáŹáááŻááşáĄááąáĄáá˝ááşááᯠáááŻá¸á áąááŤáááşá ááŤááťááşááťááşá¸ 1024 bytes áá˝ážá˛ááźáąáŹááşá¸áážáŻááá˛áˇáááşá ááŽááŹááááŻáááŻááąáŹááťáŹá¸áážááˇáş áĄáá°á¸áááźááˇáş X-modem áááŻááąáˇááŹáááş ááŻáśá¸ááźááşáá˛áˇáááşá
áááŻáááşá áĄááťááŻá¸áĄá áŹá¸áážá áşááťááŻá¸áážááááşá
áááá CRC8 ááśáˇáááŻá¸áážáŻááźááˇáş XMODEM áááşááąáˇááťáşááąáŹáşáááş (áá°áááşá¸ XMODEM)á
ááŻááááĄááąááźááˇáşá CRC16 ááśáˇáááŻá¸áážáŻ (XmodemCRC) ááŤááąáŹ XMODEM áááşáááşááąáŹáşáááşá
SOHá áááşááąáˇááťáşááśááŤááşáážááˇáş CRC áážááˇáş áááşááąáˇááşáťáĄáážááşáážáá˝á˛á áááşá¸áááş áááşáá°áááşá
ááŻááá ááŻááşáá˝ážááˇáşáážáŻ ááááşáááŻáˇááźááşá¸ááĄá ááᯠááŤááźááˇáşáá˛áˇáááş (áááşá¸áá˛áááŻááşááᯠáááşááśáá˝áąáˇáááŻááşááááşá áááŻáˇááąáŹáş 1024 bytes ááźááˇáş áááˇáşááąááźáŽ)á
áááşá¸áážáŽá¸ááźáŽá¸ááŹá¸ header fd 3e 02 áááŻáá˝áąáˇáá˛áˇáááşá ááŤááąáááˇáş ááąáŹááşáážá
áş bytes á ááźáąáŹááşá¸áá˝áŹá¸ááŤááźáŽ- 01 fe ááźá
áşááźáŽá¸ 02 fd ááźá
áşáá˝áŹá¸ááŤáááşá ááąáŹááşááąáŹáˇ ááŻááááááąáŹááşááᯠáĄáᯠááśááŤááş 02 áááŻáˇ áááááŹá¸ááááąáŹáˇ ááŹá¸áááşáá˝áŹá¸áááşá ááŤáˇáážáąáˇáážáŹ ááŽááŹáááąáŹááşááśááŤááşááᯠááśááŤááşáááşááŹá¸áááşá ááá 1024 ááŽáᏠ01 á ááŻáááá 02 á ááááá 03 ááźá
áşáá˝áŹá¸ááźáŽ (ááŤááąáááˇáş hex áážáŹááąáŹáˇ ááŻááşááŤáááş)á áááŻáˇááąáŹáş fe ááž fd áááŻáˇááźáąáŹááşá¸áá˛ááźááşá¸áááŻáááşáážáŹ áĄáááşáááşá¸á ááťááşááŻáśá¸ááťáŹá¸á 1 ááźááˇáş ááťáąáŹáˇááťáá˝áŹá¸áááşááᯠáŚá¸áážáąáŹááşá áááááźáŻáááááşá ááááŻááááşááŹááťáŹá¸á 0 ááž 1 ááᯠáááŻááşáᲠ1 ááž ááąáá˝ááşááźáąáŹááşá¸ áááááąá¸áááşá áááŻáˇááąáŹáş ááá block 0 áááş áĄáááşááźáąáŹááˇáş 02 áááŻááşááááşá¸á ááŽááąá¸áá˝ááşá¸áá˛áˇ áĄááźáąááᯠááťá˝ááşááąáŹáş áĄááŻáá ááá˝áąáˇááąá¸áá°á¸á ááŤááąáááˇáş ááŻááááááąáŹááşááᯠáááşáááŻááąáá˝ááşáááşáááŻáᏠááťá˝ááşááąáŹáşááŹá¸áááşááŤáááşá ááŻááááááąáŹááşáááş ááááááąáŹááşáááśááŤááş (áĄááŻááş) FF áááşááááŻááŤá áááŻáˇááźáąáŹááˇáş ááŻááááááąáŹááşááᯠ= 02 (FF-02) = XNUMX FD áĄááźá
áş áááşáážááşáá˛áˇáááşá áĄáážááŻááşááŻáśááźáŽá¸á ááąáŹááşáááşáá˝á˛ááᯠáááşáááşá¸ ááťá˝ááşáŻááşá áááˇáşáážááşá¸ááťááşááᯠáĄáááşááźáŻáá˛áˇáááşá
áááŻáˇááąáŹááş ááŻááşáá˝ážááˇáşáážáŻá áĄáąáŹááşááąáŹáşááźááŤááŻáś áá˝ááşááąáŤáşááŹáááş á
ááŽááŹá
áááş
fd 3e 02 â á
áááşááŤá
01 FE - ááŽááŹááąáŹááşááŹ
áá˝ážá˛ááźáąáŹááşá¸ááźááşá¸ (34 ááŻáśá¸á 1024 bytes áá˝ážá˛ááźáąáŹááşá¸)
fd 3e ááąáᏠ1024 bytes (30 byte blocks ááťáŹá¸)á
áá°á¸á
ááşáážáŻáĄááŻáśá¸áááş
fd áá
ááťááşááąááŹááᯠ1024 bytes áááŻáˇ ááťáááşáážááááşá
áááąáŹááşááŽááŹáĄááŻáśá¸ááąáŹááşá áááşáááŻááŻáśá áśáá˛-
fd 25 â ááááşáááŻáˇááŻááşáá˝ážááˇáşáážáŻááᯠáĄááŻáśá¸áááşáááş áĄááťááşááźááźááşá¸á ááąáŹááşáá
áşáᯠ2f 52 - ááťááşáááŻááşááĄáá˝ááşáĄá
áŹá¸áážáŹ 1024 bytes áĄáááážááááşá 2f 52 áááş ááááŻáááŻááąáŹááᯠáĄááŻáśá¸áĄááźááşááąá¸ááąáŹ 16-bit CRC checksum ááźá
áşáááşá
áážáąá¸ááááşááĄáá˝ááşá áááŻááşáá áşááŻááž 1024 bytes áááŻáá˝á˛ááŻááşááźáŽá¸ 16-bit CRC ááᯠáá˝ááşááťááşáááˇáş C áá˝ááş ááťá˝ááşááąáŹáşááŻááşááąáŹááşáá˛áˇáááşá ááááŻááááşááᯠá áááşáááŻááşááąáŹáĄá፠áááşá¸áááş 16-bit CRC áááŻááşááŤá áá°á¸ááąáŹááşááźááşáááş - ááŻáśá¸áááşáááˇáşá ááťááşáááşáááŻááşáááş ááŹááźá áşáááŻááşááá˛áááŻáᏠááŹá¸áááşáááŻáˇ ááŽáĄááťáááşáááŻááşá¸ ááźááŻá¸á áŹá¸ááąáá˛áˇáááşá áĄááşášáááááşááŹáᏠáááŻááşááťáŹá¸ááᯠááąáˇááŹááąá ááş X-modem áááş áááşá¸ááááŻááşáááŻááş checksum áá˝ááşááťááşáážáŻ - CRC-CCITT (XModem) ááᯠáĄááŻáśá¸ááźáŻááźáąáŹááşá¸ áá˝áąáˇáážááá˛áˇáááşá á¤áá˝ááşááťááşáážáŻá C áĄááąáŹááşáĄáááşááąáŹáşáážáŻááťáŹá¸ááᯠááťá˝ááşáŻááşááá˝áąáˇáá˛áˇááŤá áááŻáˇááąáŹáş ᤠchecksum ááᯠáĄá˝ááşáááŻááşá¸áá˝ááş áá˝ááşááťááşáááˇáşáááŻááşáá áşááŻááᯠááťá˝ááşáŻááşáá˝áąáˇáážááá˛áˇáááşá ááťá˝ááşáŻááşááááŻááşá 1024 bytes ááᯠáááşá áŹááťááşáážáŹáááŻáˇ áá˝ážá˛ááźáąáŹááşá¸ááźáŽá¸ááąáŹááşá áááŻááşáááş ááťá˝ááşáŻááşáĄáŹá¸ áááŻááşááž checksum áážááˇáş ááŻáśá¸ááááŻááşááŽáááˇáş checksum áá áşááŻááᯠááźááá˛áˇáááşá
áá°á¸! ááąáŹááşááŻáśá¸ áááąá áááᯠááźáąáážááşá¸ááźáŽá¸ááŤááźáŽá ááᯠááťá˝ááşáŻááşáááş ááťá˝ááşáŻááşááááŻááşáááŻááş firmware ááźáŻááŻááşáááş áááŻáĄááşááąááźáŽááźá áşáááşá áááŻáˇááąáŹááşáá˝ááşá áĄá á˝ááşá¸áááşááąáŹááááááŹáááááᏠPython áážááˇáşáááşá¸áážáŽá¸ááąáŹ Ilya áĄáŹá¸ ááťá˝ááşáŻááşááĄáááááŹááᯠ(áááşá¸áááş ááťá˝ááşáŻááşáááąáŤááşá¸áá˛áá˝ááşááŹááťááşáážáááąáŹáˇáááş) áááŻáˇ ááąá¸áááŻáˇáá˛áˇáááşá
ááááŻááááşáá áşááŻáááşááŽá¸ááźááşá¸á
Ilya Aleshin ááááşá¸ááąá¸áááŻáˇááŹá¸ááŤáááşá
áááˇáşááťáąáŹáşááąáŹ áá˝ážááşááźáŹá¸ááťááşááťáŹá¸ááᯠáááşááśááážáááźáŽá¸ááąáŹááş ááťá˝ááşáŻááşáááş áĄáá˝ááş âááťáąáŹáşááŤáááşáâ
áááşáážáŹá áááá˛á áĄá ááááşá¸á áážááşáááşá ď USB áĄááąáŤááşááž áĄáážááŻááşááŻáśá¸ááᯠáá°ááźááşá¸áážá
USB-pcap áááŻáá˝ááˇáşááŤá
á ááşáážááˇáşááťáááşáááşááŹá¸áááˇáş ááááşáááşá¸áážááˇáş áĄáážááŻááşááŻáśá¸ááᯠááááşá¸áááşá¸áááˇáş áááŻááşááᯠáá˝áąá¸ááŤá
Windows áĄáá˝ááş áá°áááşá¸ EZConfigScanning ááąáŹáˇááşáá˛ááᯠáááˇáşáá˝ááşá¸ááŹá¸áááˇáş á
áááşááŹááᯠááťá˝ááşáŻááşáááŻáˇ ááťáááşáááşááŹá¸áááşá
áááşá¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş á
ááşáááŻáˇ áá˝ážááşááźáŹá¸ááťááşááťáŹá¸ ááąá¸áááŻáˇáááş áĄááŹááᯠáá˝áąáˇáážáááááşá ááŤááąáááˇáş áĄáááşá¸áá˝áąááąáŹá áá°áááŻáˇááᯠáááşáážáŹááááŻááşááá˛á
ááááŻááááş á
áááşááąáŹáĄááŤá á
ááşáá
ášá
ááşá¸ááťáŹá¸ááᯠáĄáááŻáĄááťáąáŹááş ááąáŹááşáá°áááş (áááşá¸ááᯠááťá˝ááşáŻááşáááŻáˇ áĄáááşá¸áááşááźáŹááąáŹáĄá፠áá˝áąáˇáááŤáááş)á áááŹá¸áááş á
ááşáááááᏠá
áŹáá˝ááşá
áŹáááşá¸ááťáŹá¸ááž ááąáˇááťááˇáşááąá¸ ááŹá¸ááŻááşááťáŹá¸ ááŤáážááá˛áˇáááşá DeFALTá ááŤá ááťá˝ááşááąáŹáşáááŻáˇáĄáá˝á˛áˇááŤá
áááŻáĄááşááąáŹ áĄááťááşáĄáááşááťáŹá¸ááᯠáááşááśááážáááźáŽá¸ááźá
áşáááşá wireshark áážááááˇáş dump.pcap áááŻáá˝ááˇáşááŤá
EZConfigScanning á áááşááąáŹáĄááŤáá˝ááş ááááşááŤá áááááŹá¸ááááˇáşááąááŹááťáŹá¸ááᯠáĄááŽááąáŹááşááźááˇáş áážááşááŹá¸ááŹá¸áááşá
ááŤáá˝áąáĄáŹá¸ááŻáśá¸ ááááŚá¸ááŻáśá¸ááźááşáááŻááşáááąáŹáˇ ááŤá
áááşááťááşáá˝áŹá¸áááşá ááąáŹááşáááşáážáŹáá°á¸ááážááşá¸ ááážááşá¸áá°á¸á
áááşá¸áááşá¸ááąáŹáˇ ááąáŹááşáá˝ááşááźáŽá¸... Aha! áĄáážááŻááşááŻáśááźáŽá¸áá˛áážáŹ áá˝ááş - áᎠináážááˇáş in á áá˝ááş.
á፠URB_INTERRUPT áááŻááŹááᯠgoogle áááŻááşááźááˇáşáááşá ááŤá ááąááŹáá˝ážá˛ááźáąáŹááşá¸áá˛áˇ áááşá¸áááşá¸áá áşááŻáááŻáˇ ááťá˝ááşááąáŹáş áááááŻááşááááşá ááááşá¸ááťáŻááşáážáŻá áážáąáŹááˇáşáážááşáážáŻá isochronousá áĄá áŻáááŻááş á áááşáááŻáˇááźá áşáááşá áááşá¸áááŻáˇáĄááźáąáŹááşá¸ ááŽá¸ááźáŹá¸áááşáááŻááşáááşá
USB ááááááŹá ááťááşáážáŹááźááşáážá áĄááŻáśá¸áážááşááááşá áŹááťáŹá¸ááᯠâlsusb âvâ áĄááááˇáşááźááˇáş áááŻáˇáááŻááş pyusb ááᯠáĄááŻáśá¸ááźáŻá ááááŻááşáááşá
ááᯠááťá˝ááşáŻááşáááŻáˇááẠᤠVID ááŤáááˇáş á ááşáá ášá ááşá¸áĄáŹá¸ááŻáśá¸ááᯠáážáŹáá˝áąáááş áááŻáĄááşááŤáááşá VID:PID ááźááˇáş áĄáá°á¸áážáŹáá˝áąáááŻááşááŤáááşá
ááŤááŹáá°:
áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáá˝ááş áááŻáĄááşááąáŹ áĄááťááşáĄáááş áážááááş- P_INFO áá˝ážááşááźáŹá¸ááťááşááťáŹá¸á áááŻáˇáááŻááş DEFALTá commands endpoint=03 ááąá¸ááááˇáşááąááŹáá˝ááş ááááşá
áŹáážááˇáş ááŻáśáˇááźááşáážáŻ endpoint=86 ááážááááˇáşááąááŹá ááťááşáááşáážáŹ command ááťáŹá¸ááᯠhex áááŻáˇááźáąáŹááşá¸áááşááźá
áşáááşá
á
ááşáá
ášá
ááşá¸áááŻááťá˝ááşáŻááşáááŻáˇáá˝áąáˇáážáááźáŽá¸ááźá
áşááąáŹááźáąáŹááˇáşá áááşá¸ááᯠkernel áážáĄáááşááźááşááźááŤá
ááŻáˇá
...ááááşá
Ꮰ0x03 ááźááˇáş áĄááŻáśá¸áážááşáááŻáˇ ááąá¸ááŤá
... áááŻáˇááąáŹááş ááááşá
Ꮰ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 áááŻáˇááźáąáŹááşá¸ááŤá ááŤáá˛á ááąáˇááťááˇáşááąá¸ááŻááşááąáŹááşááťááşá áĄáááşáááˇáşááźá
áşááąááŤááźáŽá
Firmware áááąáŹ? áĄáŹá¸ááŻáśá¸á áĄáá°áá°áá˛áááŻáˇ áááşáááąáááˇáş áá˝á˛áá˝á˛ááťááşááąáŹáˇ áážáááŤáááşá
ááŽá¸áážáááşááŻááşáážáááşááŻááşááźá
áşá
ááşááᯠááźáŽá¸ááźááˇáşá
áŻáśááąáŹ áĄáážááŻááşááŻáśá¸ááᯠáá°ááźáŽá¸ááąáŹááşá ááťá˝ááşáŻááşáááŻáˇ áááŻááşáá˝ááşááźáąáážááşá¸ááąáááşááťáŹá¸ááᯠáĄááźááşá¸ááťááşá¸ áááąáŹááąáŤááşááŤáááşá á¤áááşáážáŹ ááąáá°ááťáĄááŻáśá¸áĄáážáŻááşá¸ááťáŹá¸ááźááˇáşááąáŹáşáááşá¸ááąáŹááşá¸ á¤áááşáá˝ááşáážáŻááźá
áşááąáŤáşááŹááŻáśááᯠááŹá¸áááşááŹáá˝ááş áĄáá˝ááşáĄááąáŹááşáĄáá°ááźá
áşá
áąááąáŹ XMODEM áĄááźáąáŹááşá¸ ááąáŹááşá¸ááŤá¸áá
áşááŻááşááźá
áşááŤáááşá
áĄáážááŻááşááŻáśááźáŽá¸ááᯠááźááˇáşáááŻááşáááş áááááşáĄáá˝ááşáĄá áŹá¸á 1024 ááźá áşááźáŽá¸ URB-ááąááŹáĄáá˝ááşáĄá áŹá¸á 64 ááźá áşááŹááᯠáá˝áąáˇáááŻááşááŤáááşá
áááŻáˇááźáąáŹááˇáş - áááá/64 - ááťá˝ááşáŻááşáááŻáˇáááş áááąáŹááşáá
áşááŻáá˝ááş á
áŹááźáąáŹááşá¸ 16 ááźáąáŹááşá¸ááááşá firmware áááŻááşááᯠáá
áşááźáááşááťážááş 1 á
áŹááŻáśá¸áááŻáááşááźáŽá¸ block áá
áşááŻáá˝á˛áˇá
ááşá¸ááŤá áĄáá°á¸áĄáášááᏠfd1e3 + áááąáŹááşááśááŤááşááŤááąáŹ áááąáŹááşáá
áşááŻáá˝ááş á
áŹááźáąáŹááşá¸ 02 ááźáąáŹááşá¸ááᯠááźááˇáşá
á˝ááşááźááşá¸á
ááťá˝ááşáŻááşáááŻáˇáááş XMODEM.calc_crc() ááᯠáĄááŻáśá¸ááźáŻá ááąáŹááş 14 ááźáąáŹááşá¸ááᯠfd25 + ááźááˇáş ááźááˇáşá
á˝ááşááŹá¸ááźáŽá¸á ááťá˝ááşáŻááşáááŻáˇáááş block áá
áşááŻááŻáśá¸á checksum ááᯠáá˝ááşááťááşáááş (âFF â 1â áááş CSUM ááźá
áşáááşááᯠááŹá¸áááşáááş áĄááťáááşááťáŹá¸á
á˝áŹáá°áá˛áˇááááş) áážááˇáş ááąáŹááşááŻáśá¸á 16 ááŻááźáąáŹááş á
áŹááźáąáŹááşá¸ááᯠááźááˇáşá
á˝ááşááŹá¸áááşá fd3e áá˛áˇ
ááŤáá˛á firmware áááŻááşáááŻáááşááŤá áááąáŹááşááťáŹá¸áááŻáážáááşááŤá á
áááşááŹááᯠkernel áážáĄáááşááźááşááźáŽá¸ á
ááşáááŻáˇáááŻáˇááŤá ááŤááąáááˇáş ááŽááąáŹááşááááŻá¸áážááşá¸ááŤáá°á¸á á
áááşááŹááᯠfirmware ááŻááşáááŻáˇááźáąáŹááşá¸áááş áááŻáĄááşáááşá
ĐžŃĐżŃавив ĐľĐźŃ NEWAPP = â\xfd\x0a\x16\x4e\x2c\x4e\x45\x57\x41\x50\x50\x0dâ.
ááŽáĄáá˝á˛áˇ áááşáááŹááŹáá˛?? áĄáážááŻááşááŻáśááźáŽá¸áá˛áá
áááŻáˇááąáŹáş 64 áááˇáşáááşááťááşááźáąáŹááˇáş á
áááşááŹáááŻáˇ áááąáŹááşáá
áşááŻááŻáśá¸ ááááŻáˇáááŻááşááŤá
ááąáŹááşá¸ááźáŽá NEWAPP áážáááşááŻááşáážáááşááŻááşááŻááşáážá scanner áááş 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'á
ááąáŹááşá¸ááźáŽá á¤áááąáŹááşááťáŹá¸áááş ááŹáááşáá°ááťáŹá¸áĄáá˝ááş áááşáááˇáşáĄááťááşáĄáááşááťáž ááááşááąáŹááşááąáŹááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş áá°áááşá¸áĄáááŻááşá¸ áážááşááŹá¸ááąáŹááŻááşáá˝ááş firmware ááᯠáááˇáşáá˝ááşá¸ááŤáááşá áĄááźáąáĄááąáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş tqdm áážááááˇáş áááŻá¸áááşáážáŻááŹá¸áá áşááŻááᯠá áŻá ááşá¸ááŤáááşá
ááááşááąáŹáˇ ááŤá áĄááąá¸áĄáá˝á˛ ááá
ášá
ááŤá ááťááşáážáááąááąá¸áááşáážáŹ áá˝áąáážááşá¸ááźááşá¸ááŻááşáááşá¸á
áĽáşááᯠáážáąá¸áá˝áąá¸á
áąáááşáážááˇáş á
áŹáááşá¸áá˝ááşá¸ááźááşá¸áááŻáˇááᯠáááˇáşáá˝ááşá¸ááźááşá¸áááźáŻáááş áážááşá¸áážááşá¸áááşá¸áááşá¸áááşáážááşááŹá¸ááąáŹ áĄááťáááşáá
áşááŻáá˝ááş áĄá
áŻáááŻááşáĄááźáŻáśáááŻááşááŻáśáá°áá˝áŹá¸ááźááşá¸áĄáá˝ááş ááźáąáážááşá¸ááťááşááᯠscripts ááťáŹá¸áá˝ááş ááŻááşáááŻá¸áááşááźá
áşáááşá
ááááş
ááťá˝ááşáŻááşáááŻáˇá áŚá¸ááąáŤááşá¸ááąáŤáşáá˝ááş áĄááťáááşáážááˇáş áĄáŹá¸á
ááŻááşááŻááşáážáŻááťáŹá¸á
á˝áŹááᯠááŻáśá¸á
á˝á˛ááźááşá¸ááźááˇáş ááťá˝ááşáŻááşáááŻáˇáááŻáĄááşááąáŹ ááźáąáážááşá¸ááťááşááťáŹá¸ááᯠááŽáá˝ááşáááŻááşáá˛áˇááźáŽá¸ ááąáŹááşááŻáśá¸áááşáážááşáááşáááŻáááşá¸ ááźááˇáşááŽáááŻááşáá˛áˇáááşá áá
áşááťáááşáááşá¸áážáŹáááşá áááŻáĄá፠á
áááşááŹááťáŹá¸ááᯠááźááşáááşáááşá¸áá
áşááŹá¸ááźáŽá¸ ááááŻáá˝ááş ááźááşáááşááąáˇááťááˇáşááŹá¸ááźáŽá¸á ááŻááşáááşá¸á
ááşáá
áşááŻááŻáśá¸ááᯠááťá˝ááşáŻááşáááŻáˇ áážááşá¸áááşá¸á
á˝áŹ ááááşá¸ááťáŻááşááŹá¸áááşá ááŻáášáááŽáááş áĄááťáááşáážááˇáşáá˝áąááᯠáááşááŹá
áąááźáŽá¸ á¤áĄááťááŻá¸áĄá
áŹá¸ááźáąáŹááşá¸ááźááş áĄááşááťááşááŽááŹá
ááşáá
ášá
ááşá¸ááťáŹá¸áá˝ááş áááşáááŻá¸áááźááşáááŻááşááąáŹ áĄáá˝áąáˇáĄááźáŻáśááᯠááážááá˛áˇááŤáááşá
source: www.habr.com