Rivendosja dhe hackimi i disqeve tĂ« jashtme qĂ« vetĂ«-kriptohen Ă«shtĂ« njĂ« hobi im i vjetĂ«r. NĂ« tĂ« kaluarĂ«n, kam punuar me modele si Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Kohe mĂ« parĂ«, njĂ« koleg mĂ« solli njĂ« shtesĂ« tĂ« re: Patriot (Aigo) SK8671, e cila Ă«shtĂ« ndĂ«rtuar me njĂ« dizajn tipik â njĂ« tregues LCD dhe njĂ« tastierĂ« pĂ«r futjen e PIN-it. KĂ«tu Ă«shtĂ« ajo qĂ« arritĂ«mâŠ

1. Hyrje

Kasa

Paketa
Qasja në të dhënat e ruajtura në disk, të cilat supozohet se janë të kriptuara, bëhet pas futjes së PIN-it. Disa shënime paraprake për këtë pajisje:
- Për të ndryshuar PIN-in, duhet të shtypni F1 para se të çliroheni;
- PIN-i duhet të ketë nga 6 deri në 9 numra;
- Pas 15 përpjekjeve të gabuara, disku fshihet.
2. Arkitektura harduerike
Fillojmë duke e ndarë pajisjen në pjesë për të kuptuar se nga cilat komponentë përbëhet. Aktiviteti më i lodhshëm është hapja e boksit: shumë vida mikroskopike dhe plastikë. Pasi të hapim boksin, shohim të mëposhtme (kini vëmendje për lidhësin me pesë kontakte që kam përdorur):

2.1. Tabela kryesore
Tabela kryesore është mjaft e thjeshtë:

Pjesët më të spikatura të saj (shihni nga lart poshtë):
- lidhësi për ekranin LCD (CN1);
- tinguj i vogël (SP1);
- Pm25LD010 () flash SPI (U2);
- kontrolleri Jmicron JMS539 () për USB-SATA (U1);
- lidhësi USB 3 (J1).
Flash SPI ruan firmware për JMS539 dhe disa parametrat.
2.2. Tabela e ekranit LCD
Në tabelën e ekranit LCD nuk ka asgjë të veçantë.


Thjesht:
- ekrani LCD i panjohur (ndoshta me setin e shkronjave kineze); me menaxhim serial;
- lidhësi i bandas për tabelën e tastierës.
2.3. Tabela e tastierës
Gjatë inspektimit të tabelës së tastierës, gjërat marrin një kthesë më interesante.

KĂ«tu, nĂ« anĂ«n e prapme, shohim lidhĂ«sin e bandas dhe gjithashtu Cypress CY8C21434 â mikro-kontrolleri PSoC 1 (nga tani e tutje do ta quajmĂ« thjesht PSoC)

CY8C21434 pĂ«rdor setin e instruksioneve M8C (shihni. ). NĂ« [faqen e produktit](() Ă«shtĂ« caktuar se mbĂ«shtet teknologjinĂ« (zgjidhje nga Cypress, pĂ«r tastierat kapacitive). KĂ«tu shihet njĂ« prizĂ« pesĂ« kontakte qĂ« e kam solderuar â kjo Ă«shtĂ« qasja standarde pĂ«r lidhjen e programuesit tĂ« jashtĂ«m pĂ«rmes ISSP.
2.4. Shikojmë kabllot
Të kuptojmë se çfarë lidhet këtu. Mjafton të kontrollojmë kabllot me multimetër:

Shpjegime për këtë skemë të vizatuar me dorë:
- PSoC është përshkruar në specifikimin teknik;
- priza tjetĂ«r, ajo qĂ« Ă«shtĂ« djathtas â Ă«shtĂ« ISSP, e cila pĂ«r fat tĂ« keq pĂ«rputhet me atĂ« qĂ« Ă«shtĂ« shkruar pĂ«r tĂ« nĂ« internet;
- priza mĂ« e djathtĂ« â Ă«shtĂ« terminali pĂ«r lidhĂ«sin me shirita me bordin e tastierĂ«s;
- rektanguli i zi â Ă«shtĂ« skema e prizĂ«s CN1, e cila Ă«shtĂ« e destinuar pĂ«r lidhjen e bordit tĂ« qendrĂ«s me bordin LCD. P11, P13 dhe P4 janĂ« lidhur me pins PSoC 11, 13 dhe 4, nĂ« bordin LCD.
3. Rendi i hapat të sulmit
Tani që e dimë nga cilat komponentë përbëhet ky ruajtës, na nevojitet: 1) të sigurohemi se funksionaliteti bazë i enkriptimit është vërtet i pranishëm; 2) të kuptojmë se si gjenerohen/ruhen çelësat e enkriptimit; 3) të gjejmë se ku kontrollohet PIN-i.
Për këtë kam ndjekur hapat e mëposhtëm:
- kam për të marrë një dump të të dhënave nga SPI-flash;
- përpiqem të marrë një dump të të dhënave nga PSoC-flash;
- u sigurua se shkëmbimi i të dhënave midis Cypress PSoC dhe JMS539 përfshin në të vërtetë butonat e shtypur;
- u sigurua që kur ndryshova fjalëkalimin, në SPI-flash nuk shkruhet asgjë;
- ishte tepër lenë për të rivendosur firmware-n 8051 nga JMS539.
3.1. Marrim dump të të dhënave nga SPI-flash
Kjo procedurë është shumë e thjeshtë:
- lidheni sondat me pinët e flash-it: CLK, MOSI, MISO dhe (opsional) EN;
- të "kapërceni" komunikimet me një sniffing tool, duke përdorur një analizator logjik (unë përdora );
- decode SPI protokollin dhe eksportoni rezultatet në CSV;
- përdorni , për të nxjerrë rezultatet dhe marrë dump-in.
Vini re se ky qasje në rastin e kontroluesit JMS539 funksionon veçanërisht mirë, pasi ky kontrollues në fazën e inicializimit shkarkon të gjithë firmware-n nga flash-i.
$ 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 dumpPas një dump nga SPI-flash, arrita në përfundimin se detyra e vetme e saj është të ruajë firmware për pajisjen e kontrollit JMicron, e cila është e inkorporuar në mikro-kontrollerin 8051. Fatkeqësisht, marrja e dump-it nga SPI-flash doli të ishte e pavlerë:
- kur ndryshohet PIN-i, dump-i i flash-it mbetet i njëjtë;
- pas fazës së inicializimit pajisja nuk i qaset SPI-flash-it.
3.2. Analizojmë komunikimet
Kjo është një nga mënyrat për të gjetur se cili çip është përgjegjës për verifikimin e komunikimeve, për kohët/përmbajtjen që na interesojnë. Siç e dimë, kontrolluesi USB-SATA është i lidhur me Cypress PSoC LCD, përmes connectorit CN1 dhe dy shiritave. Prandaj, lidhim sondat në tre pinat përkatëse:
- P4, hyrje/ dalje e përbashkët;
- P11, I2C SCL;
- P13, I2C SDA.

Pastaj, aktivizojmĂ« analizuesin logjik Saleae dhe shkruajmĂ« nĂ« tastaturĂ«: â123456~â. Si rezultat, shohim diagramin e mĂ«poshtĂ«m.

Në të, mund të shohim tre kanale të shkëmbimit të të dhënave:
- në kanalin P4 disa shpërthime të shkurtra;
- nĂ« P11 dhe P13 â shkĂ«mbim tĂ« dhĂ«nash pothuajse tĂ« vazhdueshĂ«m.
Duke rritur shpërthimin e parë në kanal P4 (drejtkëndëshi blu i figurës paraprake), shohim të mëposhtmen:

Këtu shihet se në P4 ka pothuajse 70ms sinjal të njëtrajtshëm, i cili për disa kohë më dukej se luante rolin e sinjalit të sinkronizimit. Megjithatë, pasi kalova disa kohë për të verifikuar supozimin tim, kuptova se ky nuk është sinjal sinkronizimi, por një rrjedhë audio që dërgohet në buzëzë gjatë shtypjes së çelësave. Prandaj, ky segment sinjali vetë nuk ka informacion të dobishëm për ne. Megjithatë, mund të përdoret si një indikator për të ditur momentin kur PSoC regjistron shtypjen e çelësit.
Megjithatë, rrjedha audio e fundit e kanalit P4 është paksa ndryshe nga të tjerat: është tingulli për «pinin e gabuar»!
Duke u kthyer në diagramin e shtypjes së çelësave, kur zmadhojmë diagramin e rrjedhës audio të fundit (shihni përsëri drejtkëndëshin blu), marrim:

KĂ«tu shohim sinjale tĂ« njĂ«trajtshme nĂ« P11. kĂ«shtu qĂ« duket se ky Ă«shtĂ« sinjali i sinkronizimit. NdĂ«rsa P13 â tĂ« dhĂ«na. Vini re se si ndryshon modeli pas pĂ«rfundimit tĂ« tingullit. Do tĂ« ishte interesante tĂ« shikojmĂ« se çfarĂ« ndodh kĂ«tu.
Protokollat që punojnë me dy tela zakonisht janë SPI ose I2C, dhe në spesifikimin teknik për Cypress thuhet se këto kontakte i përkasin I2C, që është e vërtetë edhe për rastin tonë:

Ăipseti USB-SATA vazhdimisht pyet PSoC - pĂ«r tĂ« lexuar gjendjen e dĂŒngjĂ«s, e cila fillimisht Ă«shtĂ« '0'. Pastaj, me shtypjen e dĂŒngjĂ«s '1', ajo ndryshon nĂ« '1'. Transferimi pĂ«rfundimtar, menjĂ«herĂ« pas shtypjes sĂ« â~â ndryshon, nĂ«se pin kodi Ă«shtĂ« i gabuar. MegjithatĂ«, deri mĂ« tani nuk e kam kontrolluar se çfarĂ« transmetohet aty. Por dyshoj se Ă«shtĂ« ndonjĂ« çelĂ«s enkripcioni. NĂ« çdo rast, shiko seksionin e ardhshĂ«m pĂ«r tĂ« kuptuar se si e kam nxjerrĂ« dump-in e firmware-it tĂ« brendshĂ«m PSoC.
Burimi: habr.com
