ProHoster > Bloc > Administració > Revertir i piratejar la unitat HDD externa autoxifrada d'Aigo. Part 1: dissecció en parts
Revertir i piratejar la unitat HDD externa autoxifrada d'Aigo. Part 1: dissecció en parts
Revertir i piratejar unitats externes d'autoxifrat és la meva antiga afició. En el passat, vaig tenir l'oportunitat de practicar amb models com Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Fa poc, un company em va portar una altra exposició: Patriot (Aigo) SK8671, que es construeix segons un disseny típic: un indicador LCD i un teclat per introduir un codi PIN. Això és el que en va sortir...
L'accés a les dades emmagatzemades al disc, que suposadament està encriptat, es realitza després d'introduir el codi PIN. Algunes notes introductòries sobre aquest dispositiu:
Per canviar el codi PIN, heu de prémer F1 abans de desbloquejar;
El codi PIN ha de contenir de 6 a 9 dígits;
Després de 15 intents incorrectes, el disc s'esborra.
2. Arquitectura de maquinari
Primer, disseccionem el dispositiu en parts per entendre de quins components consta. La tasca més tediosa és obrir la caixa: molts cargols microscòpics i plàstic. Un cop obert la caixa, veiem el següent (presteu atenció al connector de cinc pins que vaig soldar):
2.1. Tauler principal
La placa principal és bastant senzilla:
Les seves parts més destacades (veure de dalt a baix):
Controlador Jmicron JMS539 (especificació) per a USB-SATA (U1);
Connector USB 3 (J1).
La unitat flaix SPI emmagatzema el microprogramari per a JMS539 i alguns paràmetres.
2.2. Placa indicadora LCD
No hi ha res remarcable a la placa LCD.
Només:
Indicador LCD d'origen desconegut (probablement amb un conjunt de fonts xineses); amb control seqüencial;
Connector de cinta per a la placa del teclat.
2.3. Tauler de teclat
Quan examineu el tauler del teclat, les coses prenen un gir més interessant.
Aquí, a la part posterior, veiem un connector de cinta, així com un microcontrolador Cypress CY8C21434 PSoC 1 (d'ara endavant simplement l'anomenarem PSoC)
CY8C21434 utilitza el conjunt d'instruccions M8C (vegeu documentació). A [pàgina del producte]( (http://www.cypress.com/part/cy8c21434-24ltxi) s'indica que admet la tecnologia CapSense (solució de Cypress, per a teclats capacitius). Aquí podeu veure el connector de cinc pins que vaig soldar: aquest és un enfocament estàndard per connectar un programador extern mitjançant la interfície ISSP.
2.4. Mirant els cables
Anem a esbrinar què hi ha connectat aquí. Per fer-ho, només cal provar els cables amb un multímetre:
Explicacions d'aquest diagrama dibuixat al genoll:
El PSoC es descriu a l'especificació tècnica;
el connector següent, el de la dreta, és la interfície ISSP, que, per voluntat del destí, correspon al que s'escriu sobre ell a Internet;
El connector més a la dreta és el terminal per al connector de cinta a la placa del teclat;
El rectangle negre és un dibuix del connector CN1, dissenyat per connectar la placa principal a la placa LCD. P11, P13 i P4 estan connectats als pins 11, 13 i 4 del PSoC de la placa LCD.
3. Seqüència de passos d'atac
Ara que sabem de quins components consta aquesta unitat, hem de: 1) assegurar-nos que la funcionalitat bàsica de xifratge està realment present; 2) esbrineu com es generen/desen les claus de xifratge; 3) Trobeu on es comprovarà exactament el codi PIN.
Per fer-ho he fet els següents passos:
va fer un bolcat de dades d'una unitat flaix SPI;
va intentar bolcar dades d'una unitat flaix PSoC;
verificat que la comunicació entre Cypress PSoC i JMS539 realment conté pulsacions de tecles;
Em vaig assegurar que en canviar la contrasenya, no es sobreescriu res a la unitat flaix SPI;
era massa mandrós per revertir el firmware 8051 de JMS539.
3.1. Fer un bolcat de dades d'una unitat flaix SPI
Aquest procediment és molt senzill:
connecteu les sondes a les potes de la unitat flaix: CLK, MOSI, MISO i (opcional) EN;
Comunicacions "sniff" amb un sniffer mitjançant un analitzador lògic (he fet servir Saleae Logic Pro 16);
descodificar el protocol SPI i exportar els resultats a CSV;
aprofitar-se decode_spi.rbper analitzar els resultats i obtenir un abocador.
Tingueu en compte que aquest enfocament funciona especialment bé en el cas del controlador JMS539, ja que aquest controlador carrega tot el microprogramari de la unitat flaix en l'etapa d'inicialització.
Després d'haver fet un abocador de la unitat flaix SPI, vaig arribar a la conclusió que la seva única tasca és emmagatzemar el microprogramari per al dispositiu de control JMicron, que està integrat al microcontrolador 8051. Malauradament, fer un abocador de la unitat flaix SPI va resultar inútil:
quan es canvia el codi PIN, l'abocament de la unitat flaix continua sent el mateix;
Després de l'etapa d'inicialització, el dispositiu no accedeix a la unitat flaix SPI.
3.2. Ensumant comunicacions
Aquesta és una manera de trobar quin xip és responsable de comprovar les comunicacions per a l'hora/contingut d'interès. Com ja sabem, el controlador USB-SATA està connectat a la pantalla LCD Cypress PSoC mitjançant el connector CN1 i dues cintes. Per tant, connectem les sondes a les tres potes corresponents:
P4, entrada/sortida general;
P11, I2C SCL;
P13, I2C SDA.
A continuació, iniciem l'analitzador lògic de Saleae i introduïm al teclat: "123456~". Com a resultat, veiem el següent diagrama.
Hi podem veure tres canals d'intercanvi de dades:
hi ha diverses ràfegues curtes al canal P4;
a P11 i P13: intercanvi de dades gairebé continu.
Apropant la primera punta del canal P4 (rectangle blau a la figura anterior), veiem el següent:
Aquí podeu veure que a P4 hi ha quasi 70 ms d'un senyal monòton, que al principi em va semblar que feia el paper d'un senyal de rellotge. No obstant això, després de passar una estona comprovant la meva conjectura, vaig descobrir que no es tracta d'un senyal de rellotge, sinó d'un flux d'àudio que s'emet al tweeter quan es prem les tecles. Per tant, aquesta secció del senyal en si no conté informació útil per a nosaltres. Tanmateix, es pot utilitzar com a indicador per saber quan el PSoC registra una pressió de tecla.
Tanmateix, l'última reproducció d'àudio P4 és una mica diferent: és l'àudio del "PIN no vàlid"!
Tornant al gràfic de tecles, fent zoom a l'últim gràfic de flux d'àudio (vegeu de nou el rectangle blau), obtenim:
Aquí veiem senyals monòtons a P11. Per tant, sembla que aquest és el senyal del rellotge. I P13 són dades. Observeu com canvia el patró un cop finalitza el bip. Seria interessant veure què passa aquí.
Els protocols que funcionen amb dos cables solen ser SPI o I2C, i l'especificació tècnica de Cypress estableix que aquests pins corresponen a I2C, cosa que veiem que és cert en el nostre cas:
El chipset USB-SATA consulta constantment el PSoC per llegir l'estat de la clau, que per defecte és "0". Aleshores, quan premeu la tecla "1", canvia a "1". La transmissió final immediatament després de prémer "~" és diferent si s'introdueix un codi PIN incorrecte. Tanmateix, de moment no he comprovat què s'hi transmet realment. Però sospito que és poc probable que sigui una clau de xifratge. De totes maneres, consulteu la següent secció per entendre com vaig eliminar el microprogramari intern de PSoC.