ããã«ã¡ã¯ã
ç§ãã¡ãViktor Antipov ãš Ilya Aleshin ã¯ãä»æ¥ã¯ Python PyUSB ãä»ã㊠USB ããã€ã¹ãæäœããçµéšãšããªããŒã¹ ãšã³ãžãã¢ãªã³ã°ã«ã€ããŠå°ãã話ããŸãã
èæ¯
2019幎ããã·ã¢é£éŠæ¿åºä»€ç¬¬224å·ãèå¥æ段ã«ããã¿ãã³è£œåã®ã©ãã«è¡šç€ºã«é¢ããèŠåãšãèå¥æ段ã«ããã©ãã«è¡šç€ºçŸ©åã®å¯Ÿè±¡ãšãªãååã®æµéãç£èŠããããã®åœå®¶æ
å ±ã·ã¹ãã ã®å°å
¥æ©èœã®æ¿èªã«ã€ããŠãã¿ãã³è£œåã«é¢ããŠããæœè¡ãããŸããã
ãã®ææžã§ã¯ã1幎2019æXNUMXæ¥ãã補é æ¥è
ã¯ã¿ãã³ã®åããã¯ã«ã©ãã«ãä»ããããšã矩åä»ããããŠãããšèª¬æãããŠããŸãã ãŸããçŽæ¥è²©å£²ä»£çåºã¯ãUniversal Transfer Document (UDD) ãå®è¡ããŠãããã®è£œåãåãåãå¿
èŠããããŸãã äžæ¹ãåºèã¯ãã¬ãžãéããŠã©ãã«ä»ã補åã®è²©å£²ãç»é²ããå¿
èŠããããŸãã
ãŸãã1幎2020æXNUMXæ¥ããã©ãã«ã®ãªãã¿ãã³è£œåã®æµéãçŠæ¢ãããŸãã ããã¯ããã¹ãŠã®ã¿ãã³ã®ããã¯ã«ç¹å¥ãª Datamatrix ããŒã³ãŒããä»ããå¿ èŠãããããšãæå³ããŸãã ããã«ãéèŠãªç¹ã§ãããããŒã¿ãããªãã¯ã¹ã¯éåžžã§ã¯ãªããéã§ããããšãå€æããŸããã ã€ãŸããçœå°ã«é»ã³ãŒãã§ã¯ãªãããã®éã§ãã
ã¹ãã£ããŒããã¹ããããšãããã»ãšãã©ã®ã¹ãã£ããŒã¯åãã©ãã·ã¥/åãã¬ãŒãã³ã°ããå¿ èŠãããããšãå€æããŸãããããããªããšããã®ããŒã³ãŒããæ£åžžã«åäœãããããšãã§ããŸããã ç§ãã¡ã®äŒç€Ÿã¯åºå€§ãªé åã«ç¹åšããå€ãã®åºèãæã£ãŠããããããã®åºæ¥äºã®å±éã§ç§ãã¡ã¯ã²ã©ãé çã«èŠèãããããšã¯ç¢ºå®ã§ããã æ°äžã®ã¬ãžããããæéã¯ã»ãšãã©ãããŸããã
äœããã¹ãã ã£ãã®ã§ããããïŒ éžæè¢ã¯ XNUMX ã€ãããŸãã ãŸãããªã³ãµã€ãã®ãšã³ãžãã¢ãæåã§ã¹ãã£ããåãã©ãã·ã¥ããŠèª¿æŽããŸãã XNUMX çªç®: ç§ãã¡ã¯ãªã¢ãŒãã§äœæ¥ããã§ããã° XNUMX åã®å埩ã§äžåºŠã«å€ãã®ã¹ãã£ããŒãã«ããŒããŸãã
æåã®ãªãã·ã§ã³ã¯ãæããã«ç§ãã¡ã«ã¯é©ããŠããŸããã§ããããšã³ãžãã¢ã蚪åããã®ã«ãéãè²»ããå¿ èŠãããããã®å Žåãããã»ã¹ã®å¶åŸ¡ãšèª¿æŽãå°é£ã«ãªããŸãã ããããæãéèŠãªããšã¯ã人ã ãä»äºããããšããããšã§ããã€ãŸããå€ãã®ãšã©ãŒãçºçããå¯èœæ§ããããããããæéã«éã«åããªãå¯èœæ§ããããŸãã
XNUMX çªç®ã®ãªãã·ã§ã³ã¯ãXNUMX ã€ã®ç¹ã§ã¯ãªãã«ããã誰ã«ãšã£ãŠãè¯ãããšã§ãã äžéšã®ãã³ããŒã¯ãå¿ èŠãªãã¹ãŠã®ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«å¿ èŠãªãªã¢ãŒã ãã©ãã·ã¥ ããŒã«ãæã£ãŠããŸããã§ããã ãããŠç· ãåããè¿«ã£ãŠããã®ã§ãèªåã®é ã§èããªããã°ãªããŸããã§ããã
次ã«ãDebian 9.x OS çšã®ãã³ããã«ã ã¹ãã£ãçšããŒã«ãã©ã®ããã«éçºãããã«ã€ããŠèª¬æããŸã (ãã¹ãŠã®ã¬ãžã¯ Debian äžã«ãããŸã)ã
è¬ã解ã: ã¹ãã£ããŒããã©ãã·ã¥ããæ¹æ³
ãŽã£ã¯ãã«ã»ã¢ã³ãã£ããæ°ãå ±ããã
ãã³ããŒãæäŸããå ¬åŒãŠãŒãã£ãªãã£ã¯ Windows äžã§åäœããIE ã§ã®ã¿åäœããŸãã ãŠãŒãã£ãªãã£ã¯ã¹ãã£ããŒããã©ãã·ã¥ããŠæ§æã§ããŸãã
ã¿ãŒã²ãã ã·ã¹ãã 㯠Debian ã§ãããããUSB ãªãã€ã¬ã¯ã¿ ãµãŒããŒã Debian ã«ã€ã³ã¹ããŒã«ããUSB ãªãã€ã¬ã¯ã¿ ã¯ã©ã€ã¢ã³ãã Windows ã«ã€ã³ã¹ããŒã«ããŸããã USB ãªãã€ã¬ã¯ã¿ ãŠãŒãã£ãªãã£ã䜿çšããŠãã¹ãã£ãã Linux ãã·ã³ãã Windows ãã·ã³ã«è»¢éããŸããã
Windows ãã³ããŒã®ãŠãŒãã£ãªãã£ã¯ã¹ãã£ããŒãèªèããéåžžã©ãããã©ãã·ã¥ããããŸããã ãããã£ãŠãç§ãã¡ã¯æåã®çµè«ãåºããŸãããOS ã«ã¯äœãäŸåããããã©ãã·ã¥ ãããã³ã«ã®åé¡ã§ãã
ããããŸããã Windows ãã·ã³ã§ãã©ãã·ã¥ãå®è¡ããLinux ãã·ã³ã§ãã³ããåé€ããŸããã
ç§ãã¡ã¯ãã³ãã WireShark ã«è©°ã蟌ã¿ãŸãããã...æ²ãããªããŸãã (ãã³ãã®è©³çŽ°ã®äžéšã¯ãèå³ããªãã®ã§çç¥ããŸã)ã
ãã³ãããããã£ãããš:
Wireshark ã«ãããšãã¢ãã¬ã¹ 0000 ïœ 0030 㯠USB ãµãŒãã¹æ
å ±ã§ãã
ç§ãã¡ã¯éšå 0040 ïœ 0070 ã«èå³ããããŸããã
XNUMX ã€ã®éä¿¡ãã¬ãŒã ããã¯ãMOCFT æåãé€ããŠäœãæããã§ã¯ãããŸããã§ããã ãããã®æåã¯ããã¬ãŒã ã®çµãããŸã§ã®æ®ãã®æåãšåæ§ã«ããã¡ãŒã ãŠã§ã¢ ãã¡ã€ã«ã®æåã§ããããšãå€æããŸãã (ãã¡ãŒã ãŠã§ã¢ ãã¡ã€ã«ã匷調衚瀺ãããŠããŸã)ã
fd 3e 02 01 fe ãšããèšå·ãäœãæå³ããã®ããã€ãªã€ãšåæ§ã«ç§ãå人çã«ã¯å
šãåãããŸããã§ããã
次ã®ãã¬ãŒã ã確èªããŸãã (ããã§ã¯ãµãŒãã¹æ å ±ãåé€ããããã¡ãŒã ãŠã§ã¢ ãã¡ã€ã«ã匷調衚瀺ãããŠããŸã)ã
äœãæããã«ãªã£ãã®ã§ããããïŒ æåã® XNUMX ãã€ããäœããã®å®æ°ã§ããããšã åŸç¶ã®ãã¹ãŠã®ãããã¯ã§ããã確èªãããŸããããéä¿¡ãããã¯ãçµäºããåã«æ¬¡ã®ããã«ãªããŸãã
ãã®ãã¬ãŒã ããŸããå®æ°ãå€æŽãã (匷調衚瀺ãã)ãå¥åŠãªããšã«ãã¡ã€ã«ã®äžéšããã£ããããé©ç°çã§ããã ãã¡ã€ã«ã®è»¢éãã€ãã®ãµã€ãºã¯ã1024 ãã€ãã転éãããããšã瀺ããŸããã ãŸãããŠãæ®ãã®ãã€ããäœãæå³ããã®ãåãããŸããã§ããã
ãŸããå€ãBBSã®ããã¯ããŒã ãšããŠãæšæºçãªäŒéãããã³ã«ãèŠçŽããŸããã ãããã³ã«ãªã㧠1024 ãã€ããéä¿¡ãããŸããã ç§ã¯ããŒããŠã§ã¢ã®ç 究ãéå§ãã1K Xmodem ãããã³ã«ã«åºäŒããŸããã 1024 ãã€ãã®éä¿¡ãå¯èœã§ãããã泚æç¹ããããŸãããæå㯠128 ãã€ãã®ã¿ã§ããšã©ãŒããªãã£ãå Žåã«éãããããã³ã«ã¯éä¿¡ãã€ãæ°ãå¢ãããŸããã ããã« 1024 ãã€ãã®è»¢éãè¡ãããŸããã ç§ã¯äŒéãããã³ã«ãç¹ã« X ã¢ãã ã«ã€ããŠç 究ããããšã«ããŸããã
ã¢ãã ã«ã¯ XNUMX ã€ã®ããªãšãŒã·ã§ã³ããããŸããã
ãŸããCRC8 ãµããŒããåãã XMODEM ããã±ãŒãžåœ¢åŒ (ãªãªãžãã«ã® XMODEM):
16 çªç®ã«ãCRCXNUMX ããµããŒããã XMODEM ãã±ãã ãã©ãŒããã (XmodemCRC):
SOHãããã±ãŒãžçªå·ãCRCãããã±ãŒãžé·ãé€ããŠãèŠãç®ã¯äŒŒãŠããŸãã
1024 çªç®ã®éä¿¡ãããã¯ã®å é ã確èªããŸãã (ããäžåºŠãã¡ãŒã ãŠã§ã¢ ãã¡ã€ã«ã確èªããŸãããããã§ã« XNUMX ãã€ãã§ã€ã³ãã³ããããŠããŸãã)ã
ããªãã¿ã®ããã㌠fd 3e 02 ã衚瀺ãããŸãããã次㮠01 ãã€ãã¯ãã§ã«å€æŽãããŠããã02 fe ã§ãã£ããã®ã 02 fd ã«ãªããŸããã 次ã«ã1024 çªç®ã®ãããã¯ã« 01 ãšããçªå·ãä»ããããŠããããšã«æ°ã¥ããç®ã®åã«éä¿¡ãããã¯ã®çªå·ãä»ããããŠããããšãããããŸããã 02 ã®æåã®ã®ã¢ã¯ 03ã1 çªç®ã¯ 0ã1 çªç®ã¯ 1 ãšããããã«ãªããŸã (ãã ãããã¡ãã 0 é²æ°ã§ã)ã ããããfeããfdãžã®å€æŽã¯äœãæå³ããã®ã§ãããã? ç®ã¯ 02 ãã€æžã£ãŠããã®ãèŠãŠãè³ã¯ããã°ã©ã㯠02 ããæ°ããã®ã§ã¯ãªã 02 ããæ°ããããšãæãåºãããŸãããã§ã¯ããªãæåã®ãããã¯ã¯ XNUMX ã§ã¯ãªã XNUMX ãªã®ã§ãããã? ãã®è³ªåã«å¯Ÿããçãã¯ãŸã èŠã€ãããŸããã ããããXNUMXçªç®ã®ãããã¯ãã©ã®ããã«ã«ãŠã³ãããããã¯ç解ã§ããŸããã XNUMX çªç®ã®ãããã¯ã¯ãFF â (ãã€ãã¹) ã®æåã®ãããã¯ã®çªå·ã«ãããŸããã ãããã£ãŠãXNUMX çªç®ã®ãããã¯ã¯ = XNUMX (FF-XNUMX) = XNUMX FD ãšæå®ãããŸããã ãã®åŸãã³ããèªãã ããšã§ãç§ã®æšæž¬ãè£ä»ããããŸããã
ãããšã次ã®ãããªäŒéã®æ§åãæµ®ãã³äžãã£ãŠããŸããã
éä¿¡éå§
fd 3e 02 â éå§
01 FE â éä¿¡ã«ãŠã³ã¿
転é (34 ãããã¯ã1024 ãã€ã転é)
fd 3e 1024 ãã€ãã®ããŒã¿ (30 ãã€ãã®ãããã¯ã«åå²)ã
éä¿¡çµäº
fd25
æ®ãã®ããŒã¿ã¯ 1024 ãã€ãã«èª¿æŽãããŸãã
ãããã¯éä¿¡çµäºãã¬ãŒã ã¯æ¬¡ã®ããã«ãªããŸãã
fd 25 â ãããã¯éä¿¡ãçµäºããä¿¡å·ã 次㮠2f 52 â ãµã€ãºãæ倧 1024 ãã€ããŸã§ã®ãã¡ã€ã«ã®æ®ãã®éšåã ãããã³ã«ããå€æãããšã2f 52 㯠16 ããã CRC ãã§ãã¯ãµã ã§ãã
æã®ããšãæãåºããŠããã¡ã€ã«ãã 1024 ãã€ããåãåºã㊠16 ããã CRC ãèšç®ããããã°ã©ã ã C ã§äœæããŸããã ããã°ã©ã ãèµ·åãããšãããã 16 ããã CRC ã§ã¯ãªãããšãããããŸããã åã³æè¿·ãèµ·ãããŸã - çŽ1024æ¥éã ãã®éãã£ãšããã§ãã¯ãµã ã§ã¯ãªãã«ããŠãããããäœã§ããããç解ããããšããŠããŸããã è±èªã®ãµã€ãã調ã¹ãŠãããšãã«ãX ã¢ãã ãç¬èªã®ãã§ãã¯ãµã èšç®ãCRC-CCITT (XModem) ã䜿çšããŠããããšãçºèŠããŸããã ãã®èšç®ã® C å®è£ ã¯èŠã€ãããŸããã§ãããããã®ãã§ãã¯ãµã ããªã³ã©ã€ã³ã§èšç®ãããµã€ããèŠã€ããŸããã ãã¡ã€ã«ã® XNUMX ãã€ãã Web ããŒãžã«è»¢éãããšããµã€ãã¯ãã¡ã€ã«ã®ãã§ãã¯ãµã ãšå®å šã«äžèŽãããã§ãã¯ãµã ã衚瀺ããŸããã
äžæ³ïŒ æåŸã®è¬ã¯è§£æ±ºããŸãããä»åºŠã¯ç¬èªã®ãã¡ãŒã ãŠã§ã¢ãäœæããå¿ èŠããããŸããã 次ã«ã匷åãªããŒã«ããã Python ã«ç²ŸéããŠãã Ilya ã«ç§ã®ç¥èãäŒããŸãã (ãããŠããã¯ç§ã®é ã®äžã«ã ãæ®ã£ãŠããŸãã)ã
ããã°ã©ã ã®äœæ
ã€ãªã€ã»ã¢ã¬ã·ã³ãå ±åããã
é©åãªæå°ãåããŠããšãŠããããããã£ããã§ãã
ã©ãããå§ããã°ããã§ãããã? ããã ããæåããã ï USB ããŒããããã³ããååŸããŸãã
USB-pcap ãèµ·åãã
ããã€ã¹ãæ¥ç¶ãããŠããããŒããšããã³ããä¿åãããã¡ã€ã«ãéžæããŸãã
Windows çšã®ãã€ãã£ã EZConfigScanning ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãããŠãããã·ã³ã«ã¹ãã£ããæ¥ç¶ããŸãã
ãã®äžã«ã¯ãããã€ã¹ã«ã³ãã³ããéä¿¡ããããã®é
ç®ããããŸãã ããããããŒã ã¯ã©ãã§ããããïŒ ã©ãã§å
¥æã§ããŸãã?
ããã°ã©ã ãéå§ããããšãæ©åšã¯èªåçã«ããŒãªã³ã°ãããŸã (ããã«ã€ããŠã¯åŸã§èª¬æããŸã)ã ãããŠãå
¬åŒã®è£
åææžããã®ãã¬ãŒãã³ã°çšããŒã³ãŒãããããŸããã ããã©ã«ãã ãããç§ãã¡ã®ããŒã ã§ãã
å¿
èŠãªããŒã¿ãåä¿¡ããŸããã Wireshark çµç±ã§ dump.pcap ãéããŸãã
EZConfigScanning ã®éå§æã«ãããã¯ããŸãã 泚æãå¿ èŠãªç®æã¯èµ€è²ã§ããŒã¯ããŠãããŸãã
åããŠãããèŠãŠãç§ã¯å¿ãæããŠããŸããŸããã 次ã«ã©ããæããã¯äžæã§ãã
ã¡ãã£ãšãã¬ã€ã³ã¹ããŒãã³ã°ããŠããããŠããããŠ... ããïŒ ãã³ãã®äž ã§ã - ãã inãš in ãã ã§ã.
URB_INTERRUPTãšã¯äœãªã®ããã°ãŒã°ã«ã§èª¿ã¹ãŠã¿ãŸããã ãããããŒã¿è»¢éæ¹æ³ã§ããããšãããããŸããã ãããŠããã®ãããªã¡ãœããã«ã¯ãã³ã³ãããŒã«ãå²ã蟌ã¿ãã¢ã€ãœã¯ããã¹ããã«ã¯ã® 4 ã€ããããŸãã ãããã«ã€ããŠã¯åå¥ã«èªãããšãã§ããŸãã
ãŸããUSB ããã€ã¹ ã€ã³ã¿ãŒãã§ã€ã¹ã®ãšã³ããã€ã³ã ã¢ãã¬ã¹ã¯ããlsusb âvãã³ãã³ããŸã㯠pyusb ã䜿çšããŠååŸã§ããŸãã
次ã«ããã® VID ãæã€ãã¹ãŠã®ããã€ã¹ãæ€çŽ¢ããå¿ èŠããããŸãã VID:PID ã§å ·äœçã«æ€çŽ¢ã§ããŸãã
ããã¯æ¬¡ã®ããã«ãªããŸãã
ããã§ãå¿
èŠãªæ
å ±ãã€ãŸã P_INFO ã³ãã³ããåŸãããŸããã ãŸã㯠DEFALTãã³ãã³ããæžã蟌ãã¢ãã¬ã¹ endpoint=03ãå¿çãååŸããã¢ãã¬ã¹ endpoint=86ã æ®ã£ãŠããã®ã¯ãã³ãã³ãã XNUMX é²æ°ã«å€æããããšã ãã§ãã
ããã€ã¹ã¯ãã§ã«èŠã€ãã£ãŠããã®ã§ãã«ãŒãã«ããåæããŸããã...
...ãããŠã¢ãã¬ã¹ 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 ã«ãããŸãã
çŽ æŽãããïŒ ã·ã¹ãã ããŒã³ãŒãã XNUMX é²æ°ã«å€æããŸãã 以äžã§ããã¬ãŒãã³ã°æ©èœã®æºåãæŽããŸããã
ãã¡ãŒã ãŠã§ã¢ã«ã€ããŠã¯ã©ãã§ãã? ãã¹ãŠåãã«èŠããŸããããã¥ã¢ã³ã¹ããããŸãã
ãã©ãã·ã¥ ããã»ã¹ã®å®å
šãªãã³ããååŸããã®ã§ãç§ãã¡ã¯äœãæ±ã£ãŠããã®ãã倧ãŸãã«ç解ããŸããã XMODEM ã«é¢ããèšäºã¯æ¬¡ã®ãšããã§ããäžè¬çãªçšèªã§ã¯ãããŸããããã®éä¿¡ãã©ã®ããã«è¡ãããããç解ããã®ã«éåžžã«åœ¹ç«ã¡ãŸããã
ãã³ããèŠããšããã¬ãŒã ãµã€ãºã 1024ãURB ããŒã¿ ãµã€ãºã 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 ãã©ãã·ã¥ ã¢ãŒãã®ã¹ãã£ã㯠XNUMX é²æ°ãåãå
¥ããŸããã ãããã£ãŠãåè¡ã 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