Reversimi dhe hakerimi i disqeve tĂ« jashtĂ«m me vetĂ«shifrim ka qenĂ« njĂ« hob i vjetĂ«r pĂ«r mua. NĂ« tĂ« shkuarĂ«n kam pasur mundĂ«sinĂ« tĂ« punoj me modelet si Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. SĂ« fundmi, njĂ« koleg mĂ« solli njĂ« ekspozitĂ« tjetĂ«r: Patriot (Aigo) SK8671, i cili Ă«shtĂ« ndĂ«rtuar me njĂ« dizajn tipik â njĂ« ekran LCD dhe njĂ« tastierĂ« pĂ«r hyrjen e PIN-it. Ja se çfarĂ« ndodhi...

1. Hyrje

Kasa

Paketimi
Qasja në të dhënat që ruhen në disk, të cilat supozohet se janë të enkriptuara, bëhet pas hyrjes së PIN-it. Disa shënime hyrëse për këtë pajisje:
- Për të ndryshuar PIN-in, duhet të shtypni F1 para çeljes;
- PIN-i duhet të përmbajë midis 6 dhe 9 numrash;
- Pas 15 përpjekjeve të gabuara, disku fshihet.
2. Arkitektura harduerike
Fillimisht hapim pajisjen në copa për të kuptuar se nga cilat komponente përbëhet. Aktiviteti më i mërzitshëm është hapja e korpusit: shumë vida mikroskopike dhe plastike. Pas hapjes së korpusit, shohim këtë (vini re lidhësin pesëkontaktësh të cilin e kam përshkruar):

2.1. Fletorja e bazës
Fletorja e bazës është mjaft e thjeshtë:

Pjesët më të dukshme të saj (shih nga lart poshtë):
- lidhësi për ekranin LCD (CN1);
- buzzeri (SP1);
- Pm25LD010 () SPI-flash (U2);
- kontrolluesi Jmicron JMS539 () për USB-SATA (U1);
- lidhësi USB 3 (J1).
SPI-flashi ruan firmware për JMS539 dhe disa konfigurime.
2.2. Fletorja e ekranit LCD
Në fletoren e ekranit LCD nuk ka asgjë interesante.


Vetëm:
- Ekran LCD me origjinë të panjohur (në të vërtetë me setin e fontëve kinezë); me menaxhim rrjedhës;
- konektori i bandes për fletoren e tastierës.
2.3. Fletorja e tastierës
Gjatë shqyrtimit të fletorës së tastierës, gjërat marrin një kthesë më interesante.

KĂ«tu, nĂ« anĂ«n e pasme, shohim njĂ« konektor bande, si dhe Cypress CY8C21434 â mikro-kontrolleri PSoC 1 (nga tani e tutje do ta quajmĂ« thjesht PSoC)

CY8C21434 pĂ«rdor njĂ« grup instrukcionesh M8C (shih. ). NĂ« [faqen e produktit]( () thuhet se mbĂ«shtet teknologjinĂ« (zgjidhje nga Cypress pĂ«r tastiera kapacitive). KĂ«tu shihet porta pesĂ«kontakte e sprajtuar prej meje â ky Ă«shtĂ« njĂ« qasje standarde pĂ«r tĂ« lidhur njĂ« programator tĂ« jashtĂ«m pĂ«rmes interfejsit ISSP.
2.4. TĂ« shohim kabllot
Le të kuptojmë çfarë është e lidhur këtu. Për këtë, mjafton të testojmë kabllot me multimetër:

Shpjegime për këtë skemë të vizatuar në shenjë:
- PSoC përshkruhet në specifikimin teknik;
- porti tjetĂ«r, ai qĂ« Ă«shtĂ« nĂ« tĂ« djathtĂ« â interfejsi ISSP, i cili pĂ«r fat tĂ« keq korrespondon me atĂ« qĂ« Ă«shtĂ« shkruar pĂ«r tĂ« nĂ« internet;
- porti mĂ« i djathtĂ« â Ă«shtĂ« terminali pĂ«r lidhĂ«sin e bandes sĂ« tastierĂ«s;
- rektanguli i zi â skema e portĂ«s CN1, e destinuar pĂ«r tĂ« lidhur pllakĂ«n kryesore me pllakat LCD. P11, P13 dhe P4 janĂ« tĂ« lidhura me pins PSoC 11, 13 dhe 4, nĂ« pllakat LCD.
3. Renditja e hapave të sulmit
Tani që e dimë cilët komponentë përbëjnë këtë ruajtës, na nevojitet: 1) të sigurohemi që funksionaliteti bazë i enkriptimit është vërtet i pranishëm; 2) të dimë si gjenerohen/salohen çelësat e enkriptimit; 3) të gjejmë se ku kontrollohet PIN kodi.
Për këtë kam ndjekur hapat e mëposhtëm:
- kam marrë dump të të dhënave të SPI-flash;
- kam provuar të marr dump të të dhënave të PSoC-flash;
- kam konfirmuar se shkëmbimi i të dhënave midis Cypress PSoC dhe JMS539 në fakt përmban çelësat e shtypur;
- kam verifikuar se kur ndryshohet fjala kalim, nuk ka asgjë që rimarrë në SPI-flash;
- isha shumë lenient për të rënë në rrethin e rforcimi të 8051-firmware nga JMS539.
3.1. Merrni dump të të dhënave të SPI-flash
Kjo procedurë është shumë e thjeshtë:
- lidheni sondat me pins e flashit: CLK, MOSI, MISO dhe (opcionalisht) EN;
- "spiunoni" komunikimet me ndihmën e snifferit, duke përdorur një analizator logjik (kam përdorur );
- dekodoni protokollin SPI dhe eksportoni rezultatet në CSV;
- përdorni , për të analizuar rezultatet dhe marrë dump.
Vini re se ky qasje në rastin e kontrolluesit JMS539 funksionon veçanërisht mirë, pasi ky kontrollues në fazën e inicializimit ngarkon nga flashi të gjithë firmware.
$ 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 dumpDuke marre një dump nga SPI-flash, arrita në përfundimin se detyra e saj e vetme është të ruajë firmware për kontrolluesin JMicron, i cili është i integruar në mikrocontroller-in 8051. Fatkeqësisht, marrja e dump-it të SPI-flash ishte e kote:
- kur ndërron kodin PIN, dump-i i flash mbetet i njëjtë;
- pas fazës së inicializimit, pajisja nuk i qaset SPI-flash.
3.2. Analizojmë komunikimet
Ky është një nga mënyrat për të zbuluar se cili çip është përgjegjës për verifikimin e komunikimeve për të dhënat/kohet e interesit. Siç e dimë, kontrolluesi USB-SATA është i lidhur me Cypress PSoC, përmes përcjellësit CN1 dhe dy shiritave. Prandaj, lidhim sondat në tre këmbët përkatëse:
- P4, hyrje/nisje e përbashkët;
- P11, I2C SCL;
- P13, I2C SDA.

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

Në të mund të shohim tre kanale shkëmbimi të dhënash:
- 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ë kanalin P4 (drejtëkëndëshi blu i figurës së mëparshme), shohim:

Këtu duket se në P4 ka rreth 70ms sinjal të njëtrajtshëm, i cili për më parë më dukej si sinjal sinhronik. Megjithatë, pasi kalova ca kohë për të verifikuar supozimin tim, zbulova se ky nuk është një sinjal sinhronik, por një rrjedhë audio që gjenerohet në buzëkuq kur shtypen butonat. Prandaj, vetë ky segment sinjali nuk përmban informacione të dobishme për ne. Megjithatë, mund të përdoret si një indikator, - për të ditur momentin kur PSoC regjistron shtypjen e butonit.
Megjithatë, rrjedha e fundit audio e kanalit P4 dallohet pak nga të tjerat: ky është zëri për "kodin PIN të gabuar"!
Duke u kthyer në diagramin e shtypjes së butonave, kur rrisim diagramin e rrjedhës së fundit audio (shihni përsëri drejtëkëndëshin blu), marrim:

Këtu shohim sinjale të njëtrajtshme në P11. Prandaj duket se ky është sinjali sinhronik. Ndërsa P13 është të dhëna. Vëreni sesi modeli ndryshon pas përfundimit të sinjalit audio. Do të ishte interesante të shihnim se çfarë ndodh këtu.
Protokollet që punojnë me dy tela zakonisht janë SPI ose I2C, dhe në specifikimin teknik për Cypress thotë se këto kontakte i përkasin I2C, të cilat siç duket janë të sakta edhe për rastin tonë:

Ăipseti USB-SATA bĂ«n vazhdimisht pyetje pĂ«r PSoC â pĂ«r tĂ« lexuar gjendjen e çelĂ«sit, e cila nĂ« mĂ«nyrĂ« tĂ« paracaktuar Ă«shtĂ« "0". MĂ« pas, kur shtypet çelĂ«si "1", ndryshon nĂ« "1". Transmisioni pĂ«rfundimtar, menjĂ«herĂ« pas shtypjes sĂ« â~â ndryshon, nĂ«se Ă«shtĂ« futur njĂ« kod pin tĂ« gabuar. MegjithatĂ«, deri tani nuk kam kontrolluar se çfarĂ« po transmetohet nĂ« pĂ«rputhje. Por dyshoj se kjo Ă«shtĂ« çelĂ«si i enkriptimit. Ădo mĂ«nyrĂ«, shiko seksionin tjetĂ«r pĂ«r tĂ« kuptuar si kam hequr dump-in e firmware-it tĂ« brendshĂ«m PSoC.
Burimi: habr.com
