VĂ€liste isekodeerivate seadmete tagasipööramine ja hĂ€kkimine on minu pikaajaline hobi. Varem olen katsetanud selliste mudelitega nagu Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Hiljuti tĂ”i kolleeg mulle veel ĂŒhe nĂ€idise: Patriot (Aigo) SK8671, mis on loodud tĂŒĂŒpilises disainis â LCD-indikaator ja klaviatuur PIN-koodi sisestamiseks. Siit saate teada, mis vĂ€lja tuliâŠ

1. Sissejuhatus

Korpus

Pakend
Juhtimine salvestatud kettal olevate andmete juurde, mis vĂ€idetavalt on krĂŒpteeritud, toimub pĂ€rast PIN-koodi sisestamist. Siin on mĂ”ned sisendkommentaarid selle seadme kohta:
- PIN-koodi muutmiseks tuleb enne avamist vajutada F1;
- PIN-koodis peab olema 6 kuni 9 numbrit;
- PĂ€rast 15 vale katset kustutatakse ketas.
2. Riistvaraarhitektuur
Esmaltame seadme tĂŒkkideks, et mĂ”ista, millistest komponentidest see koosneb. KĂ”ige igavam tegevus on korpuse avamine: palju mikroskoopilisi kruvi ja plastikut. Korpuse avamisel nĂ€eme jĂ€rgmist (pöörake tĂ€helepanu minu jootetud viie kontaktiga pistikule):

2.1. Peamine plaat
Peamine plaat on ĂŒsna lihtne:

Selle kĂ”ige tĂ€helepanuvÀÀrsemad osad (vt ĂŒlevalt alla):
- LCD-indikaatori pistik (CN1);
- kÔlar (SP1);
- Pm25LD010 () SPI-mÀChip (U2);
- Jmicron JMS539 kontroller () USB-SATA jaoks (U1);
- USB 3 pistik (J1).
SPI-mÀChip hoiab JMS539 jaoks vajaliku tarkvara ja teatud seadeid.
2.2. LCD-indikaatori plaat
LCD-plaadil pole midagi tÀhelepanuvÀÀrset.


Lihtsalt:
- Tundmatu pÀritoluga LCD-indikaator (tÔenÀoliselt Hiina fondikomplektiga); jÀrjestikuse juhtimisega;
- lint-ĂŒhendus klaviatuuriplaadile.
2.3. Klaviatuuriplaat
Klaviatuuriplaati uurides muutuvad asjad huvitavamaks.

Siin, plaadi tagakĂŒljel, nĂ€eme lint-ĂŒhendust, samuti Cypress CY8C21434 â PSoC 1 mikrokontrollerit (edaspidi nimetame seda lihtsalt PSoC-iks).

CY8C21434 kasutab M8C kĂ€skude komplekti (vt. ). [toote lehel](() on sĂ€testatud, et see toetab tehnoloogiat (lahendus Cypress'i poolt, mĂ”eldud puutetundlike klaviatuuride jaoks). Siin on nĂ€ha, et olen keevitanud viie kontaktiga pistiku â see on tavaline lĂ€henemine vĂ€lise programmeerija ĂŒhendamiseks ISSP-liidese kaudu.
2.4. Vaatame kaableid
Selgitame vÀlja, mis millega seondub. Selleks piisab, kui mÔÔta kaableid multimeetriga:

Selgitused selle joonistatud skeemi kohta:
- PSoC on kirjas tehnilises spetsifikatsioonis;
- jĂ€rgmine pistik, see, mis on paremal â ISSP-liides, mis juhuslikult vastab sellele, mis selle kohta Internetis kirjutatud on;
- ÀÀrmine paremal olev pistik â on klaviatuuriplati lintĂŒhenduse terminal;
- must ristkĂŒlik â joonis pistikust CN1, mis on ette nĂ€htud pĂ”hiplati ĂŒhenduseks LCD-plaatidega. P11, P13 ja P4 â on ĂŒhendatud PSoC jalgadega 11, 13 ja 4, LCD-plaatidel.
3. RĂŒnnakute jĂ€rjestus
NĂŒĂŒd, kui teame, millistest komponentidest see mĂ€lu koosneb, peame: 1) veenduma, et krĂŒpteerimise pĂ”hifunktsionaalsus on tĂ”eliselt olemas; 2) teada saama, kuidas krĂŒpteerimise vĂ”tmed genereeritakse/salvestatakse; 3) leidma, kus tĂ€pselt kontrollitakse PIN-koodi.
Selleks lÀbisin jÀrgmised sammud:
- vÔttis SPI-puhversette andmed;
- ĂŒritas vĂ”tta PSoC-puhversette andmeid;
- veendus, et andmevahetus Cypress PSoC ja JMS539 vahel sisaldab tegelikult vajutatud klahve;
- veendus, et parooli muutmisel SPI-puhversette midagi ĂŒmber ei kirjutata;
- olles liiga laisk, et JMS539 8051-firmware'it tagasi pöörata.
3.1. VÔtame SPI-puhversette andmed
See protseduur on vÀga lihtne:
- ĂŒhenda sondid mĂ€lukiibi jalgadele: CLK, MOSI, MISO ja (valikuline) EN;
- "nuusuta" suhtlust nuhikulogiga, kasutades loogikaanalĂŒsaatorit (kasutasin );
- SPI-protokolli dekodeerimiseks ja tulemuste eksportimiseks CSV-formaadis;
- kasutada , et tulemusi parseerida ja dump saada.
Pange tÀhele, et selline lÀhenemine töötab JMS539 kontrolleri puhul eriti hÀsti, kuna see kontroller laadib alglaadimise faasis kogu firmware'i mÀlukiibilt.
$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dumpSPI-mĂ€lust pildistades jĂ”udsin jĂ€reldusele, et selle ainus ĂŒlesanne on salvestada JMicroni juhtimisseadme join. See on integreeritud 8051-mikrokontrollerisse. Kahjuks osutus SPI-mĂ€lu dumpi tegemine kasutuks:
- PIN-koodi muutes jÀÀb mÀlu dump samaks;
- pÀrast initsialiseerimise etappi ei pöördu seade SPI-mÀlu poole.
3.2. Uurime side teid
See on ĂŒks viis teada saada, milline chip vastutab side kontrollimise eest, huvitavate ajakava/konkreetse sisu jaoks. Nagu me juba teame, on USB-SATA kontroller ĂŒhendatud Cypress PSoC LCD-ga, lĂ€bi CN1 pesani ja kahe ribaga. Seega ĂŒhendame sondid kolme vastava jala kĂŒlge:
- P4, ĂŒldine I/O;
- P11, I2C SCL;
- P13, I2C SDA.

SeejĂ€rel kĂ€ivitame Saleae loogikanalĂŒsaatori ja sisestame klaviatuurile: "123456~". Tulemuseks nĂ€eme jĂ€rgmist diagrammi.

Sellest diagrammist saame nÀha kolme andmevahetuse kanalit:
- kanalis P4 on mitu lĂŒhikest plahvatust;
- kanalitel P11 ja P13 on peaaegu katkematu andmevahetus.
Suurendades kanali P4 (eelmise joonise sinine ristkĂŒlik) esimest plahvatust, nĂ€eme jĂ€rgmist:

Siit on nĂ€ha, et P4-l on peaaegu 70 ms ĂŒhtlast signaali, mis esialgu nĂ€is olevat sĂŒnkroonsignaal. Kuid veetes veidi aega oma oletuse kontrollimisel, avastasin, et see ei ole sĂŒnkroonsignaal, vaid helivoog, millel on klahvide tĂ”stmisel hÀÀl klakiga. Seega ei sisalda see signaali osa iseenesest meie jaoks kasulikku teavet. Siiski saab seda kasutada indikaatorina â et teada, millal PSoC registreerib klahvi vajutamise.
Kuid P4 kanali viimane helivoog erineb teiste omast veidi: see on heli âvale PIN-koodiâ jaoks!
Tagasi klahvivajutuste diagrammi juurde, suurendades viimase helivoog diagrammi (vaata jĂ€lle sinist ristkĂŒlikut), saame:

Siit nĂ€eme P11-l ĂŒhtlasi signaale. Nii et tundub, et see on sĂŒnkroonsignaal. Ja P13 â andmed. Pange tĂ€hele, kuidas muster muutub pĂ€rast helisignaali lĂ”ppu. Oleks huvitav nĂ€ha, mis siin toimub.
Kaksijuhtmelised protokollid on tavaliselt SPI vĂ”i I2C, ning Cypressi tehnilises spetsifikatsioonis ĂŒteldakse, et need kontaktid vastavad I2C-le, mis, nagu nĂ€eme, kehtib ka meie puhul:

USB-SATA kiibistik kĂŒsib pidevalt PSoC-i, et lugeda nupu seisundit, mis vaikimisi on "0". Siis, kui nuppu vajutada, muutub see "1"-ks. LĂ”plik edastus, kohe pĂ€rast klahvi "~" vajutamist, erineb, kui sisestatud on vale PIN-kood. Siiski pole ma hetkel kontrollinud, mis seal tegelikult edastatakse. Kuid kahtlen, et see on krĂŒpteerimisvĂ”ti. Sellegipoolest, vaata jĂ€rgmist lĂ”iku, et mĂ”ista, kuidas ma sain PSoC-i sisemise pĂŒsivara.
Allikas: habr.com
