Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Dia duit gach duine.

Labhróidh muidne, Victor Antipov agus Ilya Aleshin, inniu faoinár dtaithí ag obair le feistí USB trí Python PyUSB agus beagán faoi innealtóireacht droim ar ais.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

réamhstair

In 2019, Foraithne Rialtas Chónaidhm na Rúise Uimh. 224 “Ar fhormheas na Rialacha maidir le lipéadú táirgí tobac le modhanna aitheantais agus gnéithe de chur i bhfeidhm córas faisnéise stáit chun faireachán a dhéanamh ar scaipeadh earraí atá faoi réir lipéadú éigeantach le modhanna aitheantais. maidir le táirgí tobac” i bhfeidhm.
Mínítear sa doiciméad, ó 1 Iúil, 2019, go gceanglaítear ar mhonaróirí gach pacáiste tobac a lipéadú. Agus ní mór do dháileoirí díreacha na táirgí seo a fháil le doiciméad aistrithe uilíoch (UDD) a fhorghníomhú. Ní mór do shiopaí, ina dhiaidh sin, díol táirgí lipéadaithe a chlárú tríd an gclár airgid.

Chomh maith leis sin, ón 1 Iúil, 2020, toirmisctear táirgí tobac neamhlipéadaithe a chur i gcúrsaíocht. Ciallaíonn sé seo go gcaithfear gach pacáiste toitíní a mharcáil le barrachód speisialta Datamatrix. Thairis sin - pointe tábhachtach - d'éirigh sé amach nach mbeidh an Datamatrix gnáth, ach inbhéartach. Is é sin, ní cód dubh ar bán, ach vice versa.

Thástáil muid ár scanóirí, agus tharla sé gur gá an chuid is mó acu a athphlasáil/athoiliúint, nó ní bhíonn siad in ann oibriú de ghnáth leis an mbarrachóid seo. Chinntigh an casadh imeachtaí seo dúinn tinneas cinn mór, toisc go bhfuil go leor siopaí ag ár gcuideachta atá scaipthe thar chríoch ollmhór. Na mílte scipéid airgid thirim – agus fíorbheagán ama.

Cad a bhí le déanamh? Tá dhá rogha ann. Ar an gcéad dul síos: déanann innealtóirí ar an láthair na scanóirí a athphleanáil agus a choigeartú de láimh. Ar an dara dul síos: oibrímid go cianda agus, b'fhearr, clúdaimid go leor scanóirí in aon atriall amháin.

Ní raibh an chéad rogha, ar ndóigh, oiriúnach dúinn: bheadh ​​orainn airgead a chaitheamh ar chuairteoirí innealtóirí, agus sa chás seo bheadh ​​​​sé deacair an próiseas a rialú agus a chomhordú. Ach is é an rud is tábhachtaí ná go n-oibreodh daoine, is é sin, d'fhéadfadh go mbeadh go leor earráidí againn agus, is dócha, nach gcomhlíonfaimis an spriocdháta.

Tá an dara rogha maith do gach duine, más rud é nach le haghaidh rud amháin. Ní raibh na huirlisí ciangheallta a theastaigh uainn do na córais oibriúcháin riachtanacha go léir ag roinnt díoltóirí. Agus ós rud é go raibh na spriocdhátaí ag rith amach, bhí orm smaoineamh le mo cheann féin.

Ansin, inseoimid duit conas a d'fhorbair muid uirlisí do scanóirí láimhe don Debian 9.x OS (tá ár gcuid scipéid airgid go léir ar Debian).

Réitigh an tomhas: conas scanóir a splancadh

Tuairiscíonn Victor Antipov.

Oibríonn an áirgiúlacht oifigiúil a sholáthraíonn an díoltóir faoi Windows, agus le IE amháin. Is féidir leis an bhfóntas an scanóir a splancadh agus a chumrú.

Ós rud é gurb é Debian an spriocchóras atá againn, chuireamar isteach freastalaí athsheoltóra usb ar Debian agus cliant athsheoltóra usb ar Windows. Ag baint úsáide as fóntais athsheoltóra usb, chuireamar an scanóir ar aghaidh ó mheaisín Linux go meaisín Windows.

Chonaic fóntais ó dhíoltóir Windows an scanóir agus fiú flashed de ghnáth é. Mar sin, rinneamar an chéad chonclúid: níl aon rud ag brath ar an OS, is ceist é den phrótacal gealánacha.

ceart go leor. Rith muid an flashing ar an meaisín Windows, agus bhain an dumpa ar an meaisín Linux.

Líonamar an dumpáil isteach i WireShark agus... bhí brón orm (fágfaidh mé cuid de shonraí an dumpa ar lár, ní díol spéise iad).

Cad a léirigh an dumpáil dúinn:

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Is faisnéis seirbhíse USB iad seoltaí 0000-0030, dar le Wireshark.

Bhí suim againn i gcuid 0040-0070.

Ní raibh aon rud soiléir ó fhráma tarchuir amháin ach amháin i gcás na gcarachtar MOCFT. D'iompaigh na carachtair seo amach mar charachtair ón gcomhad firmware, chomh maith leis na carachtair a bhí fágtha go dtí deireadh an fhráma (tá an comhad firmware aibhsithe):

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Cad a bhí i gceist leis na siombailí fd 3e 02 01 fe, ní raibh aon smaoineamh agamsa go pearsanta, ar nós Ilya.

D'fhéach mé ar an bhfráma seo a leanas (tá faisnéis seirbhíse bainte anseo, tá an comhad firmware aibhsithe):

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Cad a tháinig chun solais? Go bhfuil an chéad dá beart de chineál éigin tairiseach. Dheimhnigh gach bloc ina dhiaidh sin é seo, ach roimh dheireadh an bhloc tarchuir:

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Bhí an fráma seo stupefying freisin, ós rud é go raibh athrú (aibhsithe) an tairiseach agus, aisteach go leor, bhí cuid den chomhad. Léirigh méid na mbeart aistrithe den chomhad gur aistríodh 1024 beart. Ní raibh a fhios agam arís cad a bhí i gceist leis na bearta eile.

Ar an gcéad dul síos, mar sean-leasainm BBS, rinne mé athbhreithniú ar na prótacail tarchurtha caighdeánach. Níor tarchuireadh aon phrótacal 1024 beart. Thosaigh mé ag déanamh staidéir ar na crua-earraí agus tháinig mé trasna ar phrótacal 1K Xmodem. Cheadaigh sé 1024 a tharchur, ach le caveat: ar dtús ach 128, agus mura raibh aon earráidí ann, mhéadaigh an prótacal líon na mbeart a tharchuirtear. Bhí aistriú 1024 bytes agam láithreach. Chinn mé staidéar a dhéanamh ar phrótacail tarchuir, agus go sonrach ar an X-móideim.

Bhí dhá athrú ar an modem.

Ar dtús, formáid pacáiste XMODEM le tacaíocht CRC8 (an XMODEM bunaidh):

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Ar an dara dul síos, formáid paicéad XMODEM le tacaíocht CRC16 (XmodemCRC):

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Breathnaíonn sé den chineál céanna, ach amháin i gcás SOH, uimhir pacáiste agus CRC agus fad pacáiste.

D'fhéach mé ar thús an dara bloc tarchurtha (agus chonaic mé an comhad firmware arís, ach bhí sé eangaithe cheana féin ag 1024 bytes):

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Chonaic mé an ceanntásc eolach fd 3e 02, ach bhí an chéad dá bhearta eile athraithe cheana féin: bhí sé 01 fe, agus rinneadh 02 fd. Ansin thug mé faoi deara go raibh an dara bloc uimhrithe anois 02 agus mar sin tuigeadh: os mo chomhair bhí uimhriú an bhloc tarchuir. Is é 1024 an chéad ghiar 01, is é an dara ceann 02, is é an tríú 03 agus mar sin de (ach i heicsidheachúlach, ar ndóigh). Ach cad a chiallaíonn an t-athrú ó fe go fd? Chonaic na súile laghdú de 1, mheabhraigh an inchinn go bhfuil ríomhchláraitheoirí comhaireamh ó 0, ní 1. Ach ansin cén fáth go bhfuil an chéad bhloc 1, agus ní 0? Níl freagra na ceiste seo aimsithe agam fós. Ach thuig mé conas a dhéantar an dara bloc a chomhaireamh. Níl sa dara bloc níos mó ná FF – (lúide) uimhir an chéad bhloc. Mar sin, ainmníodh an dara bloc mar = 02 (FF-02) = 02 FD. Dheimhnigh léamh an dumpa ina dhiaidh sin mo bhuille faoi thuairim.

Ansin thosaigh an pictiúr seo a leanas den tarchur ag teacht chun cinn:

Tús an tarchuir
fd 3e 02 – Tosaigh
01 FE – cuntar tarchuir
Aistriú (34 bloic, 1024 beart aistrithe)
fd 3e 1024 beart sonraí (roinnte ina 30 bloic beart).
Deireadh an tarchuir
fd 25

Na sonraí atá fágtha a ailíniú le 1024 beart.

Cén chuma atá ar an bhfráma deiridh tarchuir bloc:

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

fd 25 – comhartha chun deireadh a chur le tarchur bloc. An chéad 2f 52 eile – an chuid eile den chomhad suas go dtí 1024 beart. Is seiceála CRC 2-giotán é 52f 16, de réir an phrótacail.

Ar mhaithe le sean-amanna, rinne mé clár in C a tharraing 1024 beart as comhad agus a ríomh CRC 16-giotán. Léirigh seoladh an chláir nach CRC 16-giotán é seo. Stupor arís - ar feadh thart ar thrí lá. An uair seo ar fad bhí mé ag iarraidh a thuiscint cad a d'fhéadfadh a bheith ann, más rud é nach seiceam é. Agus mé ag déanamh staidéir ar shuíomhanna Béarla, fuair mé amach go n-úsáideann an X-móideim a ríomh seiceála féin - CRC-CCITT (XModem). Ní bhfuair mé aon chur i bhfeidhm C den ríomh seo, ach fuair mé suíomh a ríomh an tseiceáil seo ar líne. Tar éis dom 1024 beart de mo chomhad a aistriú go dtí an leathanach gréasáin, thaispeáin an láithreán seic dom a mheaitseáil go hiomlán leis an tseic ón gcomhad.

Hooray! Réitíodh an riddle deireanach, anois is gá dom a dhéanamh ar mo firmware féin. Ansin, chuir mé mo chuid eolais ar aghaidh (agus níor fhan sé ach i mo cheann) chuig Ilya, atá eolach ar an bhfoireann uirlisí cumhachtach Python.

Clár a chruthú

Tuairiscíonn Ilya Aleshin.

Tar éis na treoracha cuí a fháil, bhí mé an-sásta.

Cá háit le tosú? Sin ceart, ón tús.  Ó dhumpáil a thógáil ón USB port.

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

Roghnaigh an calafort a bhfuil an gléas ceangailte leis agus an comhad a shábháilfimid an dumpáil.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Ceanglaíonn muid an scanóir le meaisín ina bhfuil na bogearraí dúchais EZConfigScanning do Windows suiteáilte.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

In sé aimsímid an mhír chun orduithe a sheoladh chuig an bhfeiste. Ach cad faoi fhoirne? Cá bhfaighidh mé iad?
Nuair a thosaíonn an clár, déantar an trealamh a polladh go huathoibríoch (feicfimid é seo beagán níos déanaí). Agus bhí barrachóid oiliúna ó dhoiciméid trealaimh oifigiúla. DEFALT. Seo ár bhfoireann.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tá na sonraí riachtanacha faighte. Oscail dump.pcap trí wireshark.

Cuir bac ar nuair a thosaíonn EZConfigScanning. Tá áiteanna ar gá duit aird a thabhairt orthu marcáilte i dearg.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Ag féachaint air seo go léir don chéad uair, chaill mé mo chroí. Níl sé soiléir cá háit le tochailt eile.

Roinnt tobsmaointeoireachta agus-agus-agus... Aha! Sa dumpa amach - An bhfuil inAgus in seo amach.

Googled mé cad is URB_INTERRUPT ann. Fuair ​​​​mé amach gur modh aistrithe sonraí é seo. Agus tá 4 mhodh den sórt sin: rialú, cur isteach, isochronous, mórchóir. Is féidir leat léamh mar gheall orthu ar leithligh.

Agus is féidir na seoltaí críochphointe sa chomhéadan gléas USB a fháil tríd an ordú “lsusb –v” nó trí úsáid a bhaint as pyusb.

Anois ní mór dúinn gach feiste a aimsiú leis an VID seo. Is féidir cuardach a dhéanamh go sonrach trí VID:PID.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tá an chuma air mar seo:

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Mar sin, tá an fhaisnéis riachtanach againn: na horduithe P_INFO. nó DEFALT, seoltaí leis an áit ar cheart orduithe a scríobh endpoint=03 agus cá háit a bhfaighidh tú an freagra críochphointe=86. Níl fágtha ach na horduithe a thiontú go heicsidheachúlach.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Ós rud é go bhfuil an gléas aimsithe againn cheana féin, déanaimis é a dhínascadh ón eithne ...

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

...agus scríobh chuig an gcríochphointe le seoladh 0x03,

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

... agus ansin léigh an freagra ón gcríochphointe leis an seoladh 0x86.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Freagra struchtúrtha:

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

Feicimid na sonraí seo i dump.pcap.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Go hiontach! Tiontaigh barrachóid chórais go heicsidheachúlach. Sin é, tá an fheidhmiúlacht oiliúna réidh.

Cad mar gheall ar an firmware? Is cosúil go bhfuil gach rud mar an gcéanna, ach tá nuance ann.

Tar éis dúinn dumpáil iomlán a dhéanamh ar an bpróiseas splanctha, thuig muid go garbh cad a bhí muid ag déileáil leis. Seo alt faoi XMODEM, a bhí an-chabhrach le tuiscint a fháil ar conas a tharlaíonn an chumarsáid seo, cé gur i dtéarmaí ginearálta é: http://microsin.net/adminstuff/others/xmodem-protocol-overview.html Molaim é a léamh.

Ag féachaint ar an dumpáil, is féidir leat a fheiceáil gurb é 1024 méid an fhráma, agus is é 64 méid sonraí URB.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Mar sin - 1024/64 – faighimid 16 líne i mbloc, léigh an comhad firmware 1 charachtar ag an am agus foirm bloc. Ag comhlánú 1 líne i mbloc le carachtair speisialta fd3e02 + blocuimhir.
Forlíontar na chéad 14 líne eile le fd25 +, ag baint úsáide as XMODEM.calc_crc() ríomhaimid seiceálacha an bhloc ar fad (thóg sé go leor ama a thuiscint gur CSUM é “FF – 1”) agus forlíontar an 16ú líne dheireanach. le fd3e.

Is cosúil gurb é sin é, léigh an comhad firmware, buail na bloic, dícheangail an scanóir ón eithne agus seol chuig an bhfeiste é. Ach nach bhfuil sé chomh simplí sin. Ní mór an scanóir a athrú go mód firmware,
отправив ему NEWAPP = ‘\xfd\x0a\x16\x4e\x2c\x4e\x45\x57\x41\x50\x50\x0d’.
Cá bhfuil an fhoireann seo?? Ón dumpa.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Ach ní féidir linn bloc iomlán a sheoladh chuig an scanóir mar gheall ar an teorainn 64:

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Bhuel, ní ghlacann an scanóir i mód flashing NEWAPP heicsidheachúlach. Mar sin, beidh ort gach líne bytes_array a aistriú

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

Agus ansin na sonraí seo a sheoladh chuig an scanóir.

Faighimid an freagra:

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

Má dhéanann tú seiceáil ar an alt faoi XMODEM, beidh sé soiléir: tá na sonraí glactha.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

Tar éis na bloic go léir a aistriú, cuirimid an t-aistriú i gcrích END_TRANSFER = 'xfdx01x04'.

Bhuel, ós rud é nach n-iompraíonn na bloic seo aon fhaisnéis do ghnáthdhaoine, cuirfimid an firmware i mód i bhfolach de réir réamhshocraithe. Agus ar eagla na heagla, eagróimid barra dul chun cinn trí tqdm.

Tasc d'fhorbróir, nó conas a chumhdaigh muid scanóirí láimhe gan díoltóir

I ndáiríre, ansin tá sé ina ábhar rudaí beaga. Níl fágtha ach an réiteach a fhilleadh i scripteanna le haghaidh macasamhlú mais ag am atá sainmhínithe go soiléir, ionas nach gcuirfear moill ar an bpróiseas oibre ag na seiceálacha, agus chun logáil a chur leis.

Iomlán na

Tar éis dúinn go leor ama agus iarracht agus gruaig a chaitheamh ar ár gcinn, bhíomar in ann na réitigh a theastaigh uainn a fhorbairt, agus chomh maith leis an spriocdháta. Ag an am céanna, déantar na scanóirí a athnuachan agus a athoiliúint go lárnach anois, déanaimid rialú soiléir ar an bpróiseas iomlán. Shábháil an chuideachta am agus airgead, agus fuaireamar taithí luachmhar ar threalamh innealtóireachta droim ar ais den chineál seo.

Foinse: will.com

Add a comment