ProHoster > Blog > Amministrazione > Inversione è pirate di l'unità HDD esterna autocifrata di Aigo. Parte 1: Dissezzione in parti
Inversione è pirate di l'unità HDD esterna autocifrata di Aigo. Parte 1: Dissezzione in parti
Inversione è pirate di unità di autocifrazione esterne hè u mo vechju hobby. In u passatu, aghju avutu l'uppurtunità di praticà cù mudelli cum'è Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Recentemente, un cumpagnu m'hà purtatu una altra mostra: Patriot (Aigo) SK8671, chì hè custruitu secondu un disignu tipicu - un indicatore LCD è un teclatu per inserisce un codice PIN. Hè ciò chì hè surtitu da questu...
L'accessu à i dati guardati nantu à u discu, chì hè suppostamente criptatu, hè realizatu dopu à inserisce u codice PIN. Uni pochi note introduttive nantu à stu dispusitivu:
Per cambià u codice PIN, deve appughjà F1 prima di unlocking;
U codice PIN deve cuntene da 6 à 9 cifre;
Dopu à 15 tentativi sbagliati, u discu hè sguassatu.
2. Architettura di hardware
Prima, dissecemu u dispusitivu in parti per capiscenu di quali cumpunenti hè custituitu. U compitu più tedious hè di apre u casu: assai viti microscòpichi è plastica. Dopu avè apertu u casu, vedemu i seguenti (prestate attenzione à u connettore di cinque pin chì aghju soldatu):
Controller Jmicron JMS539 (specificazione) per USB-SATA (U1);
Connettore USB 3 (J1).
L'unità flash SPI guarda u firmware per JMS539 è certi paràmetri.
2.2. Scheda indicatore LCD
Ùn ci hè nunda di notevule nantu à u LCD.
Solu:
Indicatore LCD d'origine scunnisciuta (probabilmente cù un set di fonti cinese); cun cuntrollu sequenziale;
Connettore di nastri per a tastiera.
2.3. Tastiera di tastiera
Quandu esaminendu u tavulinu, e cose piglianu una volta più interessante.
Quì, nantu à a parte posteriore, vedemu un connettore di nastri, è ancu un microcontroller Cypress CY8C21434 PSoC 1 (da quì in seguitu chjameremu solu PSoC)
CY8C21434 usa u set di struzzioni M8C (vede documentazione). In [pagina di u produttu]( (http://www.cypress.com/part/cy8c21434-24ltxi) hè indicatu chì sustene a tecnulugia CapSense (soluzione da Cypress, per tastiere capacitive). Quì pudete vede u connettore di cinque pin chì aghju soldatu - questu hè un approcciu standard per cunnette un programatore esternu via l'interfaccia ISSP.
2.4. Fighjendu i fili
Scuprite ciò chì hè cunnessu quì. Per fà questu, basta à pruvà i fili cù un multimetru:
Spiegazioni per stu diagramma tracciatu nantu à u ghjinochju:
U PSoC hè descrittu in a specificazione tecnica;
u prossimu connector, quellu à a diritta, hè l'interfaccia ISSP, chì, da a vulintà di u destinu, currisponde à ciò chì hè scrittu annantu à Internet;
U cunnessu rightmost hè u terminal per u connector ribbon à u tavulinu;
U rectangulu neru hè un disegnu di u connettore CN1, cuncepitu per cunnette a scheda principale à u LCD. P11, P13 è P4 sò cunnessi à i pins PSoC 11, 13 è 4, nantu à u LCD.
3. Sequenza di passi d'attaccu
Avà chì sapemu di quali cumpunenti si compone di sta unità, avemu bisognu di: 1) assicurà chì a funziunalità di criptografia di basa hè veramente presente; 2) scopre cumu e chjave di criptografia sò generate / salvate; 3) truvà induve esattamente u codice PIN sarà verificatu.
Per fà questu, aghju fattu i seguenti passi:
hà pigliatu un dump di dati da una unità flash SPI;
pruvatu à dump data da una unità flash PSoC;
verificatu chì a cumunicazione trà Cypress PSoC è JMS539 cuntene in realtà keystrokes;
Aghju assicuratu chì quandu cambiassi a password, nunda ùn hè soprascritta in u SPI flash drive;
era troppu pigro per annunzià u firmware 8051 da JMS539.
3.1. Pigliate un dump di dati da una unità flash SPI
Sta prucedura hè assai sèmplice:
cunnette sonde à e gambe di u flash drive: CLK, MOSI, MISO è (opcional) EN;
"sniff" cumunicazioni cù un sniffer utilizendu un analizzatore logicu (aghju utilizatu Saleae Logic Pro 16);
decodifica u protocolu SPI è esporta i risultati in CSV;
prufiteghjanu decode_spi.rbper analizà i risultati è uttene un dump.
Per piacè nutate chì questu approcciu funziona soprattuttu bè in u casu di u controller JMS539, postu chì questu controller carica tuttu u firmware da u flash drive in u stadiu di inizializazione.
Dopu avè pigliatu un dump da u SPI flash drive, aghju ghjuntu à a cunclusione chì u so solu compitu hè di almacenà u firmware per u dispusitivu di cuntrollu JMicron, chì hè custruitu in u microcontroller 8051. Sfortunatamente, piglià un dump di l'unità flash SPI hè stata inutile:
quandu u codice PIN hè cambiatu, u dump drive flash resta u listessu;
Dopu à u stadiu di inizializazione, u dispusitivu ùn accede à u SPI flash drive.
3.2. Sniffing cumunicazioni
Questu hè un modu per truvà quale chip hè rispunsevule per verificà e cumunicazioni per u tempu / cuntenutu di interessu. Comu sapemu digià, u controller USB-SATA hè cunnessu à u Cypress PSoC LCD via u connector CN1 è dui ribbons. Dunque, cunnettamu e sonde à e trè gambe currispondenti:
P4, input / output generale;
P11, I2C SCL;
P13, I2C SDA.
Allora lanciamu l'analizzatore di logica Saleae è entre in u teclatu: "123456~". In u risultatu, vedemu u schema seguente.
In questu pudemu vede trè canali di scambiu di dati:
ci sò parechji brevi brevi nantu à u canali P4;
nantu à P11 è P13 - scambiu di dati quasi cuntinuu.
Zooming in u primu spike in u canali P4 (rettangulu blu in a figura precedente), vedemu i seguenti:
Quì pudete vede chì nantu à P4 ci hè quasi 70ms di un signalu monotonu, chì prima mi pareva di ghjucà u rolu di un signalu di clock. In ogni casu, dopu avè passatu un pocu di tempu à cuntrollà a mo supposizione, aghju scupertu chì questu ùn hè micca un signalu di clock, ma un flussu audio chì hè uscita à u tweeter quandu i chjavi sò pressati. Dunque, sta sezione di u signale stessu ùn cuntene micca infurmazioni utili per noi. Tuttavia, pò esse usatu cum'è un indicatore per sapè quandu u PSoC registra una pressa chjave.
Tuttavia, l'ultimu flussu audio P4 hè un pocu sfarente: hè l'audio per u "PIN invalidu"!
Riturnendu à u graficu di tastu, ingrandendu l'ultimu graficu di flussu audio (vede u rettangulu blu di novu), avemu:
Quì vedemu signali monotoni nantu à P11. Dunque pare chì questu hè u signalu di u clock. È P13 hè dati. Avvisate cumu u mudellu cambia dopu à a fine di u bip. Saria interessante per vede ciò chì succede quì.
I protokolli chì travaglianu cù dui fili sò generalmente SPI o I2C, è a specificazione tecnica di Cypress dice chì questi pins currispondenu à I2C, chì vedemu hè veru in u nostru casu:
U chipset USB-SATA sonda constantemente u PSoC per leghje u statu di a chjave, chì per automaticamente hè "0". Allora, quandu pressu a chjave "1", cambia in "1". A trasmissioni finali subitu dopu à appughjà "~" hè diversu se u codice PIN sbagliatu hè inseritu. Tuttavia, per u mumentu ùn aghju micca verificatu ciò chì hè veramente trasmessu quì. Ma suspettu chì questu hè improbabile di esse una chjave di criptografia. In ogni casu, vede a sezione dopu per capiscenu cumu sguassate u firmware internu PSoC.