Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Qof walba raalli.

Anaga, Viktor Antipov iyo Ilya Aleshin, maanta waxaan ka hadli doonaa waayo-aragnimadayada la shaqaynta aaladaha USB anagoo adeegsanayna Python PyUSB iyo in yar oo ku saabsan injineernimada.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

prehistory

2019, Digreeto ka soo baxday Xukuumadda Federaalka Ruushka No. 224 "Onsixinta Shuruucda lagu calaamadiyo alaabta tubaakada oo leh hab aqoonsi iyo qaababka hirgelinta nidaamka macluumaadka gobolka ee kormeerka wareegga alaabta ee ku xiran calaamadaynta qasabka ah ee aqoonsiga ee la xiriirta wax soo saarka tubaakada” ayaa dhaqan galay.
Dukumeentigu wuxuu sharxayaa in laga bilaabo Luulyo 1, 2019, soosaarayaasha looga baahan yahay inay calaamadeeyaan baako kasta oo tubaako ah. Qaybiyeyaasha tooska ah waa inay helaan alaabtan iyadoo la fulinayo dukumeenti wareejinta caalamiga ah (UDD). Bakhaarradu, iyaguna, waxay u baahan yihiin inay iska diiwaan geliyaan iibinta alaabada calaamadaysan iyada oo loo marayo diiwaanka lacagta caddaanka ah.

Sidoo kale, laga bilaabo Luulyo 1, 2020, wareegga badeecadaha tubaakada ee aan calaamadda lahayn waa mamnuuc. Tani waxay ka dhigan tahay in dhammaan xirmooyinka sigaarka waa in lagu calaamadiyaa barcode Datamatrix gaar ah. Waxaa intaa dheer - dhibic muhiim ah - waxay soo baxday in Datamatrix-ku aanu noqon doonin mid caadi ah, laakiin liddi ku ah. Taasi waa, ma code madow on cad, laakiin lid ku ah.

Waanu tijaabinay iskaankayada, waxaana soo baxday in intooda badan ay u baahan yihiin in dib loo iftiimiyo/dib u tababaro, haddii kale si fudud uma awoodaan inay si caadi ah ugu shaqeeyaan barcode-kan. Isku soo wada duuboo dhacdooyinkan ayaa noo dammaanad qaaday madax xanuun daran, sababtoo ah shirkadeena waxay leedahay dukaamo badan oo ku kala firirsan dhul baaxad leh. Dhowr tobanaan kun oo diiwaanka lacagta caddaanka ah - iyo waqti aad u yar.

Maxaa la samayn lahaa? Waxaa jira laba ikhtiyaar. Marka hore: Injineerada goobta jooga ayaa gacanta dib u iftiimiya oo hagaajiya iskaanka. Midda labaad: waxaan ka shaqeynaa meel fog, waxaana la doorbidaa, inaan daboolno sawir-qaadayaal badan hal mar hal mar.

Doorashada ugu horreysa, sida cad, kuma habboonayn annaga: waa inaan lacag ku bixinaa injineerada booqashada, kiiskan way adkaan doontaa in la xakameeyo oo la isku duwo habka. Laakiin waxa ugu muhiimsan ayaa ah in dadku ay shaqayn lahaayeen, taas oo ah, waxa suurtogal ah in aanu helno khaladaad badan oo, ay u badan tahay, in aan la kulmin wakhtiga kama dambaysta ah.

Doorashada labaad waxay u fiican tahay qof walba, haddii aysan ahayn hal shay. Iibiyeyaasha qaarkood ma haysan qalabkii biliglashada fog ee aan ugu baahanahay dhammaan nidaamyada hawlgalka ee loo baahan yahay. Oo mar haddii wakhtigu dhammaaday, waxaan ku qasbanaaday inaan maskaxdayda ka fikiro.

Marka xigta, waxaan kuu sheegi doonaa sida aan u soo saarnay qalabka sawir-qaadayaasha gacanta lagu hayo ee Debian 9.x OS (dhammaan diiwaannadayada lacagta caddaanka ah waxay ku yaalliin Debian).

Xalli halxiraalaha: sida loo shiiqiyo iskaanka

Victor Antipov ayaa ka warbixiyay.

Adeegga rasmiga ah ee uu bixiyo iibiyuhu waxa uu ka hoos shaqeeyaa Windows, oo keliya IE. Utility-gu wuu iftiimin karaa oo habayn karaa iskaanka.

Maadaama nadaamka bartilmaameedkaagu yahay Debian, waxaan ku rakibnay server-ka dib-u-hagahaynta ee Debian iyo macmiilka dib u habaynta usb-ga ee Windows. Anagoo adeegsanayna usb-redirector utilities, waxaan ka soo gudbinay iskaanka mishiinka Linux una gudbinay mashiinka Windows.

Adeeg ka yimid iibiyaha Windows ayaa arkay iskaanka oo xitaa si caadi ah u iftiimiyay. Markaa, waxaan sameynay gabagabada koowaad: waxba kuma xirna OS, waa arrin ku saabsan borotokoolka biligleynaya.

OK Waxaan ku orodnay biliglihi mashiinka Windows-ka, oo ka saarnay qashinka mashiinka Linux.

Waxaan ku shubnay qashinka WireShark oo ... waan murugooday (waxaan ka tagi doonaa qaar ka mid ah faahfaahinta qashinka, ma jiraan wax dan ah).

Maxaa daadku na tusay:

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Cinwaanada 0000-0030, ku xukuma Wireshark, waa macluumaadka adeega USB.

Waxaan xiisaynnay qaybta 0040-0070.

Waxba kama cadda hal qaab gudbin marka laga reebo jilayaasha MOCFT. Jilayaashani waxay noqdeen jilayaal ka soo jeeda faylka firmware-ka, iyo sidoo kale jilayaasha hadhay ilaa dhamaadka qaab-dhismeedka (faylka firmware-ka ayaa la iftiimiyay):

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Waa maxay calaamadaha fd 3e 02 01 fe, anigu shakhsi ahaan, sida Ilya, wax fikrad ah kama haysan.

Waxaan eegay qaabkan soo socda (macluumaadka adeegga waa laga saaray halkan, faylka firmware-ka waa la iftiimiyay):

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Maxaa cadaaday? In labada bytes hore yihiin nooc ka mid ah joogtada ah. Dhammaan baloogyada xiga ayaa xaqiijiyay tan, laakiin ka hor dhammaadka xannibaadda gudbinta:

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Qaab-dhismeedkani waxa kale oo uu ahaa mid naxdin leh, maadaama uu joogtada isbeddelay (la iftiimiyay) iyo, si yaab leh, waxaa jirtay qayb ka mid ah faylka. Baaxadda baytka la wareejiyay ee faylka ayaa muujisay in 1024 bytes la wareejiyay. Mar kale maan garanayn waxa ay ka dhigan tahay baytayada soo hadhay.

Ugu horreyntii, sidii naanays hore oo BBS ah, waxaan dib u eegay borotokoolka gudbinta caadiga ah. Ma jiro borotokool la gudbiyay 1024 bytes. Waxaan bilaabay barashada qalabka waxaana la kulmay borotokoolka 1K Xmodem. Waxay ogolaatay gudbinta 1024, laakiin leh digniin: marka hore kaliya 128, oo kaliya haddii aysan jirin khaladaad, borotokoolku wuxuu kordhiyey tirada bytes ee la kala qaado. Isla markiiba waxa la igu wareejiyay 1024 bytes. Waxaan go'aansaday inaan barto borotokoolka gudbinta, gaar ahaan X-modem-ka.

Waxaa jiray laba nooc oo modem ah.

Marka hore, qaabka xirmada XMODEM oo leh taageerada CRC8 (XMODEM asalka ah):

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Marka labaad, qaabka xirmada XMODEM oo leh taageerada CRC16 (XmodemCRC):

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Waxay u egtahay mid la mid ah, marka laga reebo SOH, lambarka xirmada iyo CRC iyo dhererka xirmada.

Waxaan eegay bilawgii qaybta labaad ee gudbinta (oo haddana waxaan arkay feylka firmware-ka, laakiin mar horeba 1024 bytes):

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Waxaan arkay madaxii la yaqaanay fd 3e 02, laakiin labada bytes ee xiga ayaa mar hore isbeddelay: waxay ahayd 01 fe, waxayna noqotay 02 fd. Dabadeed waxaan ogaaday in block-ka labaad uu hadda lambarkiisu yahay 02 oo sidaas loo fahmay: hortayda waxaa yaal nambarka xannibaadda gudbinta. Qalabka 1024 ee ugu horreeya waa 01, kan labaadna waa 02, kan saddexaadna waa 03 iyo wixii la mid ah (laakin hex, dabcan). Laakiin maxay ka dhigan tahay isbeddelka fe ilaa fd? Indhuhu waxay arkeen hoos u dhac 1 ah, maskaxdu waxay xasuusisay in barnaamij-bixiyeyaashu ay ka tirsaan 0, ma aha 1. Laakiin markaa maxaa block-ka koowaad u yahay 1, oo uusan ahayn 0? Su'aashan jawaabteeda wali maan helin. Laakiin waxaan fahmay sida loo tiriyo baloogga labaad. Baloogga labaad waxba kama badna FF – (laga jaray) tirada baloogga koowaad. Sidaa darteed, baloogga labaad waxaa loo qoondeeyay sida = 02 (FF-02) = 02 FD. Akhriska xiga ee qashinka ayaa xaqiijiyay malahayga.

Ka dib waxaa bilaabmay sawirka soo socda ee gudbinta:

Bilawga gudbinta
fd 3e 02 – Bilow
01 FE - miiska gudbinta
Wareejinta (34 baloog, 1024 bytes waa la wareejiyay)
fd 3e 1024 bytes oo xog ah (oo loo qaybiyay 30 byte blocks).
Dhamaadka gudbinta
fd 25

Xogta hadhaaga ah ee lagu toosinayo 1024 bytes.

Muxuu u eg yahay qaabka ugu dambeeya ee gudbinta xannibaadda:

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

fd 25 - calaamad muujinaysa joojinta gudbinta. Xiga 2f 52 - inta soo hartay faylka ilaa 1024 bytes cabbir ahaan. 2f 52, marka loo eego hab-maamuuska, waa 16-bit CRC hubinta.

Waqtiyadii hore, waxaan ku sameeyay barnaamijka C kaasoo ka soo saaray 1024 bytes oo ka xisaabiyay 16-bit CRC. Daah-furka barnaamijka ayaa muujisay in kani aanu ahayn 16-bit CRC. Stuper mar kale - ilaa saddex maalmood. Waqtigaan oo dhan waxaan isku dayay inaan fahmo waxa ay noqon karto, haddii aysan ahayn hubin. Markii aan baranayey goobaha luqadda Ingiriisiga, waxaan ogaaday in X-modem-ku uu isticmaalo xisaabinta jeegagga - CRC-CCITT (XModem). Ma helin wax C ah oo la hirgeliyay xisaabintan, laakiin waxaan helay goob xisaabisay xisaabintan online-ka ah. Ka dib markii 1024 bytes ee faylkayga ku wareejiyay bogga shabakadda, goobtu waxay i tustay jeegag dhammaystiran oo u dhigma jeegaga faylka.

Hooray! Halxiraalihii ugu dambeeyay waa la xaliyay, hadda waxaan u baahday in aan sameeyo firmware ii gaar ah. Marka xigta, waxaan u gudbiyay aqoontayda (oo waxay ku hadhay oo kaliya madaxayga) Ilya, oo yaqaana qalabka awoodda badan ee Python.

Abuuritaanka barnaamij

Ilya Aleshin ayaa ka waramaya.

Markii aan helay tilmaamaha ku habboon, aad ayaan u "faraxsanahay."

Halkee laga bilaabayaa? Taasi waa sax, laga bilaabo bilowgii.  Inaad qashin ka qaaddo dekedda USB-ga.

Fur USB-pcap https://desowin.org/usbpcap/tour.html

Dooro dekedda uu qalabku ku xiran yahay iyo faylka aan ku badbaadin doono qashinka.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Waxaan ku xidhnay iskaanka mishiinka meesha lagu rakibay software-ka EZConfigScanning ee asalka u ah Windows.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Dhexdeeda waxaan ka heleynaa shayga loogu diro amarrada qalabka. Laakiin ka waran kooxaha? Xagee ka heli karaa?
Marka barnaamijku bilowdo, qalabka si toos ah ayaa loo codeeyaa (wax yar ka dib ayaan arki doonaa). Oo waxaa jiray barcodes tababarka dukumentiyada qalabka rasmiga ah. DEFALT Tani waa kooxdayada.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Xogtii loo baahnaa waa la helay Ku fur qashin-qubka.pcap adigoo isticmaalaya wireshark.

Jooji markaad bilaabayso EZConfigScanning. Meelaha aad u baahan tahay inaad fiiro gaar ah u yeelato waxaa lagu calaamadeeyay casaan.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Waxaas oo dhan markaan arkay markii ugu horreysay, ayaan qalbi jabay. Ma cadda meesha xigta ee la qodayo.

In yar oo maskaxiyan iyo-iyo-iyo... Aha! Qashin qubka baxay - waa iniyo in waxaa baxay.

Waxaan google galiyay waxa URB_INTERRUPT yahay. Waxaan ogaaday in tani ay tahay habka wareejinta xogta. Oo waxaa jira 4 hababka sida: xakamaynta, joojinta, isochronous, bulk. Si gooni gooni ah ayaad wax uga akhrin kartaa.

Iyo ciwaanada dhamaadka ah ee interface-ka aaladda USB waxaa laga heli karaa iyada oo loo marayo amarka "lsusb -v" ama iyadoo la adeegsanayo pyusb.

Hadda waxaan u baahanahay inaan helno dhammaan aaladaha leh VID-kan. Waxaad si gaar ah uga raadin kartaa VID:PID.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Waxay u egtahay sidan:

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Markaa, waxaanu haynaa macluumaadka lagama maarmaanka ah: amarada P_INFO. ama DEFALT, cinwaanada meesha laga qoro amarrada dhamaadka=03 iyo halka laga helo jawaabta dhamaadka=86. Waxa hadhay oo dhan waa in amarrada loo rogo hex.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Maadaama aan horay u helnay aaladda, aan ka jarno kernel-ka...

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

... oo ku qor barta dhamaadka ciwaanka 0x03,

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

... ka dibna akhri jawaabta barta ugu dambeysa ee ciwaanka 0x86.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Jawaab qaabaysan:

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

Waxaan ku aragnaa xogtan dump.pcap.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Wayn! U beddel code-yada nidaamka hex. Taasi waa, shaqada tababarku waa diyaar.

Maxaa ku saabsan firmware-ka? Wax walba waxay u muuqdaan inay isku mid yihiin, laakiin waxaa jira nuance.

Ka dib markii aan si buuxda u tuurnay habka biligleynaya, waxaan si aad ah u fahannay waxa aan la macaamilaynay. Waa kan maqaal ku saabsan XMODEM, oo aad u caawinayey fahamka sida isgaadhsiintani u dhacdo, in kasta oo si guud: http://microsin.net/adminstuff/others/xmodem-protocol-overview.html Waxaan ku talinayaa in la akhriyo.

Markaad eegto qashinka, waxaad arki kartaa in cabbirka jirku yahay 1024, cabbirka URB-na uu yahay 64.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Sidaa darteed - 1024/64 - Waxaan helnaa 16 sadar oo block ah, akhri feylka firmware 1 xaraf markiiba oo samee block. Dhamaystirka 1 xariiq oo ku jira baloog leh xarfo gaar ah fd3e02 + lambarka xannibaadda.
14-ka xariiq ee soo socda waxaa lagu kabi karaa fd25 +, iyadoo la adeegsanayo XMODEM.calc_crc () waxaan xisaabineynaa jeegagga dhammaan qaybaha (waxay qaadatay waqti badan si loo fahmo in "FF - 1" ay tahay CSUM) iyo kan ugu dambeeya, xariiqda 16aad ayaa lagu daray leh fd3e.

Waxay u egtahay inay taasi tahay, akhri feylka firmware-ka, ku dhufo blocks, ka saar scanner kernel oo u dir qalabka. Laakiin sidaas uma fududa. Sawir-qaaduhu wuxuu u baahan yahay in loo beddelo qaabka firmware,
ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ² Π΅ΠΌΡƒ NEWAPP = β€˜\xfd\x0a\x16\x4e\x2c\x4e\x45\x57\x41\x50\x50\x0d’.
Aaway kooxdaan?? Laga soo bilaabo qashinka.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Laakin uma diri karno baloog dhan iskaanka sababtoo ah xadka 64:

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Hagaag, iskaanka ku jira qaabka NEWAPP ee biligleynaya ma aqbalo hex. Sidaa darteed, waa inaad tarjumtaa sadar kasta 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]

Ka dibna xogtan u dir scanner-ka.

Waxaan helnaa jawaabta:

[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]

Haddii aad hubiso maqaalka ku saabsan XMODEM, way caddaan doontaa: xogta waa la aqbalay.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Kaddib marka dhammaan baloogyada la wareejiyo, waxaan dhammaystirnaa wareejinta END_TRANSFER = 'xfdx01x04'.

Hagaag, maadaama baloogyadani aysan u sidin wax macluumaad ah dadka caadiga ah, waxaan ku rakibi doonaa firmware-ka qaab qarsoon qaab ahaan. Oo haddii ay dhacdo, waxaanu ku habayn doonaa bar horumarka iyada oo loo marayo tqdm.

Hawsha horumariyaha, ama sida aanu u shidnay sawir-qaadayaasha gacanta lagu hayo oo aan iibiye lahayn

Dhab ahaantii, ka dibna waa arrin wax yar. Waxa hadhay oo dhan waa in lagu duubo xalka qoraallo loogu talagalay soo saarista tirada badan waqti si cad loo qeexay, si aan loo gaabin hawsha ka shaqaynta hubinta, oo lagu daro jarista.

Natiijada

Inaga oo waqti badan iyo dadaal badan ku bixinay iyo timaha madaxeena, waxaan awoodnay inaan horumarino xalalka aan u baahanahay, sidoo kale waxaan la kulanay waqtigii kama dambaysta ahaa. Isla mar ahaantaana, iskaanka ayaa hadda dib u iftiimay oo dib loo tababaray si dhexe, waxaan si cad u xakameynaa habka oo dhan. Shirkaddu waxay badbaadisay waqti iyo lacag, waxaanan ka helnay khibrad aad u qiimo badan oo ku saabsan qalabka injineernimada ee noocaan ah.

Source: www.habr.com

Add a comment