Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Lumela.

Rōna, Viktor Antipov le Ilya Aleshin, kajeno re tla bua ka phihlelo ea rona ea ho sebetsa le lisebelisoa tsa USB ka Python PyUSB le ho se hokae ka boenjiniere ba morao.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

prehistory

Ka 2019, Taelo ea 'Muso oa Russia Federation No. 224 "Ka tumello ea Melao ea ho ngola lihlahisoa tsa koae ka mekhoa ea boitsebahatso le likarolo tsa ts'ebetsong ea sistimi ea tlhahisoleseling ea mmuso bakeng sa ho lekola phallo ea thepa e tlamang ho ngolisoa ka mokhoa oa boitsebahatso. mabapi le lihlahisoa tsa koae” e ile ea qala ho sebetsa.
Tokomane e hlalosa hore ho tloha ka la 1 Phupu 2019, bahlahisi ba tlameha ho ngola pakete ka 'ngoe ea koae. Mme barekisi ba ka kotloloho ba tlameha ho amohela lihlahisoa tsena ka ho etsa tokomane ea phetisetso ea bokahohleng (UDD). Mabenkele, ka lehlakoreng le leng, a hloka ho ngolisa thekiso ea lihlahisoa tse ngolisitsoeng ka lebokose la chelete.

Hape, ho tloha ka la 1 Phupu 2020, ho phatlalatsoa ha lihlahisoa tsa koae tse sa ngolisoang ho thibetsoe. Sena se bolela hore liphutheloana tsohle tsa lisakerete li tlameha ho tšoauoa ka barcode e khethehileng ea Datamatrix. Ho feta moo - ntlha ea bohlokoa - ho ile ha fumaneha hore Datamatrix e ke ke ea e-ba e tloaelehileng, empa e fapane. Ke hore, eseng khoutu e ntšo ho tšoeu, empa ka tsela e fapaneng.

Re ile ra leka li-scanner tsa rona, 'me ho ile ha fumaneha hore boholo ba tsona li hloka ho nchafatsoa / ho koetlisoa hape, ho seng joalo ha li khone ho sebetsa ka mokhoa o tloaelehileng ka barcode ena. Phetoho ena ea liketsahalo e ile ea re tiisetsa hlooho e bohloko haholo, hobane k'hamphani ea rona e na le mabenkele a mangata a hasaneng sebakeng se seholo. Mashome a likete a lirekoto tsa chelete - le nako e nyane haholo.

Ho ne ho tla etsoa eng? Ho na le likhetho tse peli. Taba ea pele: lienjineri tse sebakeng sa marang-rang li nchafatsa ka letsoho ebe li fetola li-scanner. Ea bobeli: re sebetsa re le hole mme, ka ho khetheha, re koahela li-scanner tse ngata ka nako e le 'ngoe.

Khetho ea pele, ka ho hlakileng, e ne e sa tšoanelehe bakeng sa rona: re ne re tla tlameha ho sebelisa chelete ho baenjiniere ba etileng, 'me tabeng ena ho tla ba thata ho laola le ho hokahanya mokhoa ona. Empa ntho ea bohlokoa ka ho fetisisa ke hore batho ba tla sebetsa, ke hore, re ka fumana liphoso tse ngata, 'me, mohlomong, re se ke ra fihlela nako e behiloeng.

Khetho ea bobeli e ntle ho bohle, haeba e se ntho e le 'ngoe. Barekisi ba bang ba ne ba se na lisebelisoa tse bonesang tse hole tseo re li hlokang bakeng sa lits'ebetso tsohle tse hlokahalang tsa ts'ebetso. Mme kaha matsatsi a ne a fela, ke ile ka tlameha ho inahana ka hlooho ea ka.

Ka mor'a moo, re tla u bolella hore na re ntlafalitse lisebelisoa joang bakeng sa li-scanner tse tšoaroang ka letsoho bakeng sa Debian 9.x OS (libuka tsohle tsa rona tsa chelete li ho Debian).

Rarolla selotho: mokhoa oa ho khantša seskena

Victor Antipov oa tlaleha.

Ts'ebeliso ea semmuso e fanoeng ke morekisi e sebetsa tlasa Windows, mme e sebetsa feela ka IE. Sesebelisoa se ka khantša le ho hlophisa sehatisi.

Kaha sistimi eo re e shebileng ke Debian, re kentse seva sa usb-redirector ho Debian le moreki oa usb-redirector ho Windows. Re sebelisa lisebelisoa tsa usb-redirector, re ile ra fetisetsa sehatisi ho tloha mochining oa Linux ho ea mochining oa Windows.

Sesebelisoa se tsoang ho morekisi oa Windows se bone sekena mme se bile se se bonesa ka mokhoa o tloaelehileng. Kahoo, re entse qeto ea pele: ha ho letho le itšetlehileng ka OS, ke taba ea protocol e khanyang.

HO LOKILE. Re tsamaisitse ho benya mochining oa Windows, mme ra tlosa thotobolo mochining oa Linux.

Re kentse thotobolo ho WireShark mme ... ra hlonama (ke tla siea lintlha tse ling tsa thotobolo, ha li na thahasello ea letho).

Seo thotobolo e re bontšitseng sona:

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Liaterese 0000-0030, ho ahlola ka Wireshark, ke tlhahisoleseding ea tšebeletso ea USB.

Re ne re thahasella karolo ea 0040-0070.

Ha ho letho le neng le hlakile ho tsoa ho foreimi e le 'ngoe ea phetisetso ntle le litlhaku tsa MOCFT. Litlhaku tsena li ile tsa fetoha litlhaku tse tsoang faeleng ea firmware, hammoho le litlhaku tse setseng ho fihlela qetellong ea foreimi (faele ea firmware e totobalitsoe):

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Seo matšoao a fd 3e 02 01 fe a neng a se bolela, 'na ka boeena, joaloka Ilya, ke ne ke sa tsebe.

Ke shebile foreimi e latelang (lintlha tsa ts'ebeletso li tlositsoe mona, faele ea firmware e totobalitsoe):

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Ke eng e ileng ea hlaka? Hore li-byte tse peli tsa pele ke mofuta o mong oa kamehla. Li-blocks tsohle tse latelang li netefalitse sena, empa pele ho pheletso ea block ea phetisetso:

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Foreimi ena e ne e boetse e makatsa, kaha kamehla e ne e fetohile (e totobalitsoe) 'me, ka mokhoa o makatsang, ho ne ho e-na le karolo ea faele. Boholo ba li-byte tse fetisitsoeng tsa faele li bontšitse hore li-byte tse 1024 li fetisitsoe. Ke ne ke boetse ke sa tsebe hore na li-byte tse setseng li bolelang.

Pele ho tsohle, joalo ka lebitso la bosoasoi la khale la BBS, ke ile ka hlahloba mekhoa e tloaelehileng ea phetisetso. Ha ho protocol e fetisoang ka li-byte tse 1024. Ke ile ka qala ho ithuta hardware mme ka kopana le protocol ea 1K Xmodem. E ile ea lumella ho fetisetsa 1024, empa ka caveat: qalong feela 128, 'me feela haeba ho ne ho se na liphoso, protocol e ile ea eketsa palo ea li-byte tse fetisitsoeng. Hang-hang ke ile ka ba le phetisetso ea li-byte tse 1024. Ke nkile qeto ea ho ithuta liprothokholo tsa phetiso, haholo-holo X-modem.

Ho ne ho e-na le mefuta e 'meli ea modem.

Taba ea pele, sebopeho sa sephutheloana sa XMODEM se nang le tšehetso ea CRC8 (XMODEM ea mantlha):

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Taba ea bobeli, sebopeho sa pakete ea XMODEM e nang le tšehetso ea CRC16 (XmodemCRC):

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

E shebahala e tšoana, ntle le SOH, nomoro ea sephutheloana le CRC le bolelele ba sephutheloana.

Ke ile ka sheba qalong ea sebaka sa bobeli sa phetisetso (mme hape ka bona faele ea firmware, empa e se e kentsoe ka li-byte tse 1024):

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Ke bone hlooho e tloaelehileng fd 3e 02, empa li-byte tse peli tse latelang li ne li se li fetohile: e ne e le 01 fe, 'me ea fetoha 02 fd. Eaba ke hlokomela hore boloko ba bobeli bo ne bo se bo le 02 'me kahoo bo utloisisoa: ka pel'a ka ho ne ho e-na le palo ea sebaka sa phetiso. Lisebelisoa tsa pele tsa 1024 ke 01, tsa bobeli ke 02, tsa boraro ke 03 joalo-joalo (empa ka hex, ho hlakile). Empa ho fetoha ho tloha ho fe ho ea ho fd ho bolela eng? Mahlo a bone ho fokotseha ka 1, boko bo ile ba hopotsa hore baetsi ba mananeo ba bala ho tloha ho 0, eseng 1. Empa joale ke hobane'ng ha thibelo ea pele e le 1, eseng 0? Ke ntse ke e-s'o fumane karabo ea potso ena. Empa ke ile ka utloisisa hore na boloko ba bobeli bo baloa joang. Sebaka sa bobeli ha se letho ho feta FF - (minus) palo ea boloko ba pele. Ka hona, thibela ea bobeli e ne e khethiloe e le = 02 (FF-02) = 02 FD. Palo e latelang ea thotobolo e netefalitse khakanyo ea ka.

Joale setšoantšo se latelang sa phetiso se ile sa qala ho hlaha:

Ho qala phetiso
fd 3e 02 - Qala
01 FE – khaontara ea phetiso
Phetisetso (li-blocks tse 34, li-byte tse 1024 li fetisitsoe)
fd 3e 1024 bytes ea data (e arotsoe ka 30 byte blocks).
Qetello ea phetiso
fd 25

Lintlha tse setseng li lokela ho amahanngoa le li-byte tse 1024.

Foreimi ea pheletso ea phetiso ea block e shebahala joang:

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

fd 25 - lets'oao la ho emisa phetiso ea block. E latelang 2f 52 - faele e setseng e fihla ho li-byte tse 1024 ka boholo. 2f 52, ho latela protocol, ke 16-bit CRC checksum.

Molemong oa linako tsa khale, ke entse lenaneo ho C le hulang li-byte tse 1024 ho tsoa faeleng mme la bala 16-bit CRC. Ho qala lenaneo ho bontšitse hore sena ha se 16-bit CRC. Stupor hape - ka matsatsi a ka bang tharo. Nako ena kaofela ke ne ke leka ho utloisisa hore na e ka ba eng, haeba e se cheke. Ha ke ntse ke ithuta libaka tsa puo ea Senyesemane, ke ile ka fumana hore X-modem e sebelisa lipalo tsa eona tsa cheke - CRC-CCITT (XModem). Ha kea fumana ts'ebetsong ea C ea palo ena, empa ke fumane sebaka sa marang-rang se balang cheke ena inthaneteng. Ha ke se ke fetisitse li-byte tse 1024 tsa faele ea ka leqepheng la sebaka sa marang-rang, sebaka sena sa marang-rang se ile sa mpontša cheke e lumellanang ka botlalo le cheque ho tsoa faeleng.

Hooray! Selotho sa ho qetela se rarollotsoe, joale ke ne ke hloka ho iketsetsa firmware ea ka. Ka mor'a moo, ke ile ka fetisetsa tsebo ea ka ('me e ile ea sala feela hloohong ea ka) ho Ilya, ea tloaelaneng le sesebelisoa se matla sa Python.

Ho theha lenaneo

Ilya Aleshin oa tlaleha.

Kaha ke ne ke fumane litaelo tse loketseng, ke ile ka “thaba” haholo.

Ho qala hokae? Ke hantle, ho tloha qalong.  Ho tsoa ho lahla ho tsoa boema-kepeng ba USB.

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

Khetha koung eo sesebelisoa se hokahaneng ho eona le faele eo re tla boloka ho lahla.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Re hokela sekena mochining oo software ea lehae ea EZConfigScanning bakeng sa Windows e kentsoeng.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Ho eona re fumana ntho ea ho romela litaelo ho sesebelisoa. Empa ho thoe’ng ka lihlopha? Nka li fumana hokae?
Ha lenaneo le qala, thepa e hlahlojoa ka bo eona (re tla bona sena hamorao). 'Me ho ne ho e-na le li-barcode tsa koetliso tse tsoang litokomaneng tsa thepa ea molao. TLHOKOMELO. Sena ke sehlopha sa rona.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Lintlha tse hlokahalang li amohetsoe. Bula dump.pcap ka wireshark.

Thibela ha u qala EZConfigScanning. Libaka tseo u lokelang ho li ela hloko li ngotsoe ka bofubelu.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Ha ke bona tsena tsohle ka lekhetlo la pele, ke ile ka nyahama. Ha ho hlake hore na ho cheka hokae ka mor'a moo.

Ho ferekana kelellong le-le-le... Aha! Thotobolong tsoa - sena inle in e tsoa.

Ke google hore na URB_INTERRUPT ke eng. Ke fumane hore ena ke mokhoa oa ho fetisa data. 'Me ho na le mekhoa e 4 e joalo: ho laola, ho sitisa, isochronous, bongata. U ka bala ka tsona ka thoko.

'Me liaterese tsa ho qetela ho sebopeho sa sesebelisoa sa USB li ka fumanoa ka taelo ea "lsusb -v" kapa ka ho sebelisa pyusb.

Hona joale re hloka ho fumana lisebelisoa tsohle tse nang le VID ena. U ka batla ka ho khetheha ka VID:PID.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

E shebahala tjena:

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Kahoo, re na le lintlha tse hlokahalang: litaelo tsa P_INFO. kapa DEFALT, liaterese moo u lokelang ho ngola litaelo endpoint=03 le moo u ka fumanang karabo endpoint=86. Se setseng ke ho fetolela litaelo ho hex.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Kaha re se re fumane sesebelisoa, ha re se tlose ho kernel ...

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

...'me u ngolle ho fihla qetellong ka aterese 0x03,

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

... ebe o bala karabo ho tloha qetellong ka aterese 0x86.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Karabo e hlophisitsoeng:

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

Re bona lintlha tsena ho dump.pcap.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

E kholo! Fetolela libarcode tsa sistimi ho hex. Ke eona, ts'ebetso ea koetliso e se e loketse.

Ho thoe'ng ka firmware? Ntho e 'ngoe le e' ngoe e bonahala e tšoana, empa ho na le nuance.

Ha re se re lahlile ts'ebetso ea ho benya, re ne re utloisisa hantle hore na re sebetsana le eng. Mona ke sengoloa se mabapi le XMODEM, se thusitseng haholo ho utloisisa hore na puisano ena e etsahala joang, leha e le ka kakaretso: http://microsin.net/adminstuff/others/xmodem-protocol-overview.html Ke khothaletsa ho e bala.

Ha u sheba thotobolo, u ka bona hore boholo ba foreimi ke 1024, 'me boholo ba data ea URB ke 64.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Ka hona - 1024/64 - re fumana mela e 16 ka block, bala faele ea firmware 1 tlhaku ka nako 'me u thehe block. Ho tlatselletsa mola o le mong ka bolokong ka litlhaku tse khethehileng fd1e3 + nomoro ea boloko.
Mela e latelang ea 14 e tlatsitsoe ka fd25 +, ho sebelisa XMODEM.calc_crc () re bala checksum ea block eohle (ho ile ha nka nako e ngata ho utloisisa hore "FF - 1" ke CSUM) 'me ea ho qetela, mohala oa 16 o tlatsetsoa. ka fd3e.

Ho ka bonahala eka ho joalo, bala faele ea firmware, otla li-blocks, tlosa scanner ho tloha kernel ebe u e romela ho sesebelisoa. Empa ha ho bonolo hakaalo. Scanner e hloka ho fetisetsoa ho firmware mode,
отправив ему NEWAPP = ‘\xfd\x0a\x16\x4e\x2c\x4e\x45\x57\x41\x50\x50\x0d’.
Sehlopha see se tsoa kae?? Ho tloha thotobolong.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Empa ha re khone ho romella block eohle ho sekena ka lebaka la moeli oa 64:

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Che, sehatisi se ka har'a mokhoa oa ho benya oa NEWAPP ha se amohele hex. Ka hona, o tla tlameha ho fetolela mola o mong le o mong 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]

Ebe u romella data ena ho scanner.

Re fumana karabo:

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

Haeba u sheba sengoloa se mabapi le XMODEM, ho tla hlaka: data e amohetsoe.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Ka mor'a hore li-blocks li fetisoe, re phethela phetiso END_TRANSFER = 'xfdx01x04'.

Kaha li-blocks ha li na tlhahisoleseling bakeng sa batho ba tloaelehileng, re tla kenya firmware ka mokhoa o patiloeng ka boiketsetso. 'Me haeba ho ka etsahala, re tla hlophisa sebaka sa tsoelo-pele ka tqdm.

Mosebetsi bakeng sa moqapi, kapa kamoo re ileng ra bonesa li-scanner tse tšoaroang ka letsoho ntle le morekisi

Ha e le hantle, ke taba ea lintho tse nyenyane. Ho setseng ke ho phuthela tharollo ka mangolo bakeng sa ho pheta-pheta ka bongata ka nako e hlalositsoeng ka ho hlaka, e le hore u se ke ua liehisa ts'ebetso ea ho sebetsa litsing tsa lichelete, le ho eketsa ho rema lifate.

Phello

Ka mor'a ho qeta nako e ngata le boiteko le moriri lihloohong tsa rona, re ile ra khona ho hlahisa litharollo tseo re li hlokang, 'me ra kopana le nako ea ho qetela. Ka nako e ts'oanang, li-scanner li se li nchafalitsoe hape li koetlisitsoe bohareng, re laola ka ho hlaka tshebetso eohle. Khampani e ile ea boloka nako le chelete, 'me re ile ra fumana phihlelo ea bohlokoa ka ho fetisisa lisebelisoa tsa boenjiniere tsa mofuta ona.

Source: www.habr.com

Eketsa ka tlhaloso