ProHoster > Blogi > antaminen > Kääntäminen ja hakkerointi Aigon itsesalaava ulkoinen HDD-asema. Osa 1: Leikkaaminen osiin
Kääntäminen ja hakkerointi Aigon itsesalaava ulkoinen HDD-asema. Osa 1: Leikkaaminen osiin
Ulkoisten itsesalaavien asemien kääntäminen ja hakkerointi on vanha harrastukseni. Aiemmin minulla oli mahdollisuus harjoitella sellaisilla malleilla kuin Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Juuri äskettäin kollega toi minulle toisen näyttelyn: Patriot (Aigo) SK8671, joka on rakennettu tyypillisen suunnittelun mukaan - LCD-näyttö ja näppäimistö PIN-koodin syöttämiseen. Siitähän se selvisi…
Pääsy levylle tallennettuihin tietoihin, jotka oletettavasti on salattu, tapahtuu PIN-koodin syöttämisen jälkeen. Muutama johdantohuomautus tästä laitteesta:
Jos haluat vaihtaa PIN-koodin, sinun on painettava F1 ennen lukituksen avaamista;
PIN-koodin tulee sisältää 6-9 numeroa;
15 virheellisen yrityksen jälkeen levy tyhjennetään.
2. Laitteistoarkkitehtuuri
Ensin hajotamme laitteen osiin ymmärtääksemme, mistä komponenteista se koostuu. Työllisin tehtävä on kotelon avaaminen: paljon mikroskooppisia ruuveja ja muovia. Kun kotelo on avattu, näemme seuraavan (kiinnitä huomiota juottamaani viisinapaiseen liittimeen):
Näppäimistöä tutkiessa asiat saavat mielenkiintoisemman käänteen.
Täällä, takana, näemme nauhaliittimen sekä Cypress CY8C21434 -mikro-ohjaimen PSoC 1 (jäljempänä kutsumme sitä yksinkertaisesti PSoC:ksi)
CY8C21434 käyttää M8C-käskysarjaa (katso dokumentointi). [tuotesivulla]( (http://www.cypress.com/part/cy8c21434-24ltxi) ilmoitetaan, että se tukee tekniikkaa CapSense (Cypressin ratkaisu kapasitiivisille näppäimistöille). Tässä näkyy juottamani viisinapainen liitin - tämä on standardi lähestymistapa ulkoisen ohjelmoijan liittämiseen ISSP-liitännän kautta.
2.4. Johtoja katsomalla
Selvitetään, mikä tähän liittyy. Voit tehdä tämän testaamalla johdot yleismittarilla:
Selitykset tälle polveen piirretylle kaaviolle:
PSoC on kuvattu teknisissä eritelmissä;
seuraava liitin, oikealla oleva, on ISSP-rajapinta, joka kohtalon tahdosta vastaa sitä, mitä siitä on kirjoitettu Internetissä;
Oikeanpuoleisin liitin on näppäimistön nauhaliittimen liitin;
Musta suorakulmio on piirros CN1-liittimestä, joka on suunniteltu yhdistämään emolevy LCD-korttiin. P11, P13 ja P4 on kytketty LCD-levyn PSoC-nastoihin 11, 13 ja 4.
3. Hyökkäysvaiheiden järjestys
Nyt kun tiedämme, mistä osista tämä asema koostuu, meidän on: 1) varmistettava, että salauksen perustoiminto on todella olemassa; 2) selvittää, kuinka salausavaimet luodaan/tallennetaan; 3) selvitä, missä tarkalleen PIN-koodi tarkistetaan.
Tätä varten tein seuraavat vaiheet:
otti datavedoksen SPI-muistitikulta;
yritti tyhjentää tietoja PSoC-muistitikulta;
varmisti, että Cypress PSoC:n ja JMS539:n välinen viestintä sisälsi todella näppäinpainalluksia;
Varmistin, että salasanaa vaihdettaessa mitään ei korvata SPI-muistitikulla;
oli liian laiska kääntämään 8051-laiteohjelmistoa JMS539:stä.
3.1. Tietovedosten ottaminen SPI-muistitikulta
Tämä menettely on hyvin yksinkertainen:
yhdistä anturit flash-aseman jalkoihin: CLK, MOSI, MISO ja (valinnainen) EN;
"haistele" viestintää haistajan kanssa logiikka-analysaattorilla (käytin Saleae Logic Pro 16);
purkaa SPI-protokolla ja viedä tulokset CSV-muotoon;
hyödyntää decode_spi.rbjäsentääksesi tulokset ja saadaksesi kaatopaikan.
Huomaa, että tämä lähestymistapa toimii erityisen hyvin JMS539-ohjaimen tapauksessa, koska tämä ohjain lataa kaikki laiteohjelmistot muistitikulta alustusvaiheessa.
Otettuaan kaaoksen SPI-muistitikulta, tulin siihen tulokseen, että sen ainoa tehtävä on tallentaa laiteohjelmisto JMicron-ohjauslaitteelle, joka on sisäänrakennettu 8051-mikrokontrolleriin. Valitettavasti SPI-flash-aseman poistaminen osoittautui hyödyttömäksi:
kun PIN-koodi vaihdetaan, flash-aseman tyhjennys pysyy samana;
Alustusvaiheen jälkeen laite ei käytä SPI-flash-asemaa.
3.2. Viestinnän nuuskiminen
Tämä on yksi tapa selvittää, mikä siru vastaa viestinnän tarkistamisesta kiinnostavan ajan/sisällön osalta. Kuten jo tiedämme, USB-SATA-ohjain on kytketty Cypress PSoC LCD:hen liittimen CN1 ja kahden nauhan kautta. Siksi yhdistämme anturit kolmeen vastaavaan jalkaan:
P4, yleinen tulo/lähtö;
P11, I2C SCL;
P13, I2C SDA.
Sitten käynnistämme Saleae-logiikka-analysaattorin ja kirjoitamme näppäimistölle: "123456~". Tämän seurauksena näemme seuraavan kaavion.
Siinä näemme kolme tiedonvaihtokanavaa:
kanavalla P4 on useita lyhyitä purskeita;
P11:ssä ja P13:ssa - lähes jatkuva tiedonvaihto.
Lähentämällä kanavan P4 ensimmäistä piikkiä (sininen suorakulmio edellisessä kuvassa), näemme seuraavan:
Tästä näkee, että P4:llä on lähes 70ms monotonista signaalia, joka minusta aluksi näytti toimivan kellosignaalina. Tarkastettuani arvaukseni kuitenkin huomasin, että tämä ei ole kellosignaali, vaan äänivirta, joka lähetetään diskanttikaiuttimeen, kun näppäimiä painetaan. Siksi tämä signaalin osa ei sisällä meille hyödyllistä tietoa. Sitä voidaan kuitenkin käyttää ilmaisimena, joka tietää, milloin PSoC rekisteröi näppäinpainalluksen.
Uusin P4-äänivirta on kuitenkin hieman erilainen: se on "virheellisen PIN-koodin" ääni!
Kun palataan näppäinpainalluskaavioon, lähennetään viimeistä äänivirran kaaviota (katso sininen suorakulmio uudelleen), saadaan:
Tässä näemme monotonisia signaaleja P11:ssä. Joten näyttää siltä, että tämä on kellosignaali. Ja P13 on dataa. Huomaa kuinka kuvio muuttuu äänimerkin jälkeen. Olisi mielenkiintoista nähdä mitä täällä tapahtuu.
Protokollat, jotka toimivat kahdella johdolla, ovat yleensä SPI tai I2C, ja Cypressin tekniset tiedot ilmoittavat, että nämä nastat vastaavat I2C:tä, mikä on totta meidän tapauksessamme:
USB-SATA-piirisarja kyselee jatkuvasti PSoC:tä lukeakseen avaimen tilan, joka oletuksena on "0". Sitten, kun painat "1"-näppäintä, se muuttuu "1". Lopullinen lähetys välittömästi “~”-painikkeen painamisen jälkeen on erilainen, jos syötetään väärä PIN-koodi. Tällä hetkellä en kuitenkaan ole tarkistanut, mitä siellä todella lähetetään. Mutta epäilen, että tämä ei todennäköisesti ole salausavain. Joka tapauksessa, katso seuraava osa ymmärtääksesi, kuinka poistin PSoC:n sisäisen laiteohjelmiston.