Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Membalikkan dan menggodam pemacu penyulitan kendiri luaran ialah hobi lama saya. Pada masa lalu, saya berpeluang berlatih dengan model seperti Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Baru-baru ini, seorang rakan sekerja membawakan saya satu lagi pameran: Patriot (Aigo) SK8671, yang dibina mengikut reka bentuk biasa - penunjuk LCD dan papan kekunci untuk memasukkan kod PIN. Itu yang terhasil…

1. Pengenalan
2. Seni bina perkakasan
– 2.1. Papan utama
– 2.2. Papan penunjuk LCD
– 2.3. Papan kekunci
– 2.4. Melihat wayar
3. Urutan langkah serangan
– 3.1. Mengambil pembuangan data daripada pemacu kilat SPI
– 3.2. Menghidu komunikasi

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan


1. Pengenalan

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan
Perumahan

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan
Pembungkusan

Akses kepada data yang disimpan pada cakera, yang kononnya disulitkan, dijalankan selepas memasukkan kod PIN. Beberapa nota pengenalan pada peranti ini:

  • Untuk menukar kod PIN, anda mesti menekan F1 sebelum membuka kunci;
  • Kod PIN mesti mengandungi daripada 6 hingga 9 digit;
  • Selepas 15 percubaan yang salah, cakera dikosongkan.

2. Seni bina perkakasan

Mula-mula, kami membedah peranti kepada beberapa bahagian untuk memahami komponen yang terdiri daripadanya. Tugas yang paling membosankan ialah membuka kes itu: banyak skru mikroskopik dan plastik. Setelah membuka kes itu, kami melihat perkara berikut (perhatikan penyambung lima pin yang saya pateri):

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

2.1. Papan utama

Papan utama agak mudah:

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Bahagian yang paling ketara (lihat dari atas ke bawah):

  • penyambung untuk penunjuk LCD (CN1);
  • tweeter (SP1);
  • Pm25LD010 (spesifikasi) pemacu kilat SPI (U2);
  • Pengawal Jmicron JMS539 (spesifikasi) untuk USB-SATA (U1);
  • Penyambung USB 3 (J1).

Pemacu kilat SPI menyimpan perisian tegar untuk JMS539 dan beberapa tetapan.

2.2. Papan penunjuk LCD

Tiada apa-apa yang luar biasa pada papan LCD.

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan
Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Hanya:

  • Penunjuk LCD asal tidak diketahui (mungkin dengan set fon Cina); dengan kawalan berurutan;
  • Penyambung reben untuk papan kekunci.

2.3. Papan kekunci

Apabila memeriksa papan papan kekunci, keadaan berubah menjadi lebih menarik.

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Di sini, di bahagian belakang, kita melihat penyambung reben, serta mikropengawal Cypress CY8C21434 PSoC 1 (selepas ini kita hanya akan memanggilnya PSoC)

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

CY8C21434 menggunakan set arahan M8C (lihat dokumentasi). Pada [halaman produk]( (http://www.cypress.com/part/cy8c21434-24ltxi) ia menunjukkan bahawa ia menyokong teknologi CapSense (penyelesaian daripada Cypress, untuk papan kekunci kapasitif). Di sini anda boleh melihat penyambung lima pin yang saya pateri - ini adalah pendekatan standard untuk menyambungkan pengaturcara luaran melalui antara muka ISSP.

2.4. Melihat wayar

Mari kita fikirkan apa yang berkaitan di sini. Untuk melakukan ini, hanya menguji wayar dengan multimeter:

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Penjelasan untuk rajah ini yang dilukis pada lutut:

  • PSoC diterangkan dalam spesifikasi teknikal;
  • penyambung seterusnya, yang di sebelah kanan, adalah antara muka ISSP, yang, dengan kehendak takdir, sepadan dengan apa yang ditulis mengenainya di Internet;
  • Penyambung paling kanan ialah terminal untuk penyambung reben ke papan papan kekunci;
  • Segi empat tepat hitam ialah lukisan penyambung CN1, direka untuk menyambungkan papan utama ke papan LCD. P11, P13 dan P4 disambungkan ke pin PSoC 11, 13 dan 4, pada papan LCD.

3. Urutan langkah serangan

Sekarang setelah kita mengetahui komponen apa yang terdiri daripada pemacu ini, kita perlu: 1) memastikan bahawa fungsi penyulitan asas sebenarnya ada; 2) ketahui bagaimana kunci penyulitan dijana/disimpan; 3) cari di mana betul-betul kod PIN akan disemak.

Untuk melakukan ini saya melakukan langkah-langkah berikut:

  • mengambil pembuangan data daripada pemacu kilat SPI;
  • cuba membuang data daripada pemacu kilat PSoC;
  • mengesahkan bahawa komunikasi antara Cypress PSoC dan JMS539 sebenarnya mengandungi ketukan kekunci;
  • Saya memastikan bahawa apabila menukar kata laluan, tiada yang ditimpa dalam pemacu denyar SPI;
  • terlalu malas untuk membalikkan perisian tegar 8051 daripada JMS539.

3.1. Mengambil pembuangan data daripada pemacu kilat SPI

Prosedur ini sangat mudah:

  • sambungkan probe ke kaki pemacu denyar: CLK, MOSI, MISO dan (pilihan) EN;
  • komunikasi "menghidu" dengan penghidu menggunakan penganalisis logik (saya menggunakan Saleae Logic Pro 16);
  • menyahkod protokol SPI dan hasil eksport ke CSV;
  • mengambil kesempatan decode_spi.rbuntuk menghuraikan keputusan dan mendapatkan dump.

Sila ambil perhatian bahawa pendekatan ini berfungsi dengan baik terutamanya dalam kes pengawal JMS539, kerana pengawal ini memuatkan semua perisian tegar daripada pemacu denyar pada peringkat permulaan.

$ 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 dump

Setelah membuang pemacu kilat SPI, saya membuat kesimpulan bahawa satu-satunya tugasnya ialah menyimpan perisian tegar untuk peranti kawalan JMicron, yang dibina ke dalam mikropengawal 8051. Malangnya, membuang pemacu kilat SPI ternyata tidak berguna:

  • apabila kod PIN ditukar, tempat pembuangan pemacu denyar kekal sama;
  • Selepas peringkat permulaan, peranti tidak mengakses pemacu kilat SPI.

3.2. Menghidu komunikasi

Ini adalah salah satu cara untuk mencari cip mana yang bertanggungjawab untuk menyemak komunikasi untuk masa/kandungan yang diminati. Seperti yang kita sedia maklum, pengawal USB-SATA disambungkan ke LCD Cypress PSoC melalui penyambung CN1 dan dua reben. Oleh itu, kami menyambungkan probe ke tiga kaki yang sepadan:

  • P4, input/output am;
  • P11, I2C SCL;
  • P13, I2C SDA.

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Kemudian kami melancarkan penganalisis logik Saleae dan masukkan pada papan kekunci: "123456~". Hasilnya, kita lihat rajah berikut.

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Di atasnya kita boleh melihat tiga saluran pertukaran data:

  • terdapat beberapa letusan pendek pada saluran P4;
  • pada P11 dan P13 - pertukaran data hampir berterusan.

Mengezum masuk pada lonjakan pertama pada saluran P4 (segi empat tepat biru dalam rajah sebelumnya), kita melihat perkara berikut:

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Di sini anda dapat melihat bahawa pada P4 terdapat hampir 70ms isyarat membosankan, yang pada mulanya saya nampak memainkan peranan sebagai isyarat jam. Walau bagaimanapun, selepas meluangkan sedikit masa menyemak tekaan saya, saya mendapati bahawa ini bukan isyarat jam, tetapi aliran audio yang dikeluarkan kepada tweeter apabila kekunci ditekan. Oleh itu, bahagian isyarat ini sendiri tidak mengandungi maklumat yang berguna untuk kami. Walau bagaimanapun, ia boleh digunakan sebagai penunjuk untuk mengetahui apabila PSoC mendaftarkan penekan kekunci.

Walau bagaimanapun, strim audio P4 terkini sedikit berbeza: ia ialah audio untuk "PIN tidak sah"!

Kembali ke graf ketukan kekunci, mengezum masuk pada graf aliran audio terakhir (lihat segi empat tepat biru sekali lagi), kita dapat:

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Di sini kita melihat isyarat monoton pada P11. Jadi ia kelihatan seperti ini adalah isyarat jam. Dan P13 ialah data. Perhatikan bagaimana corak berubah selepas bip tamat. Ia akan menjadi menarik untuk melihat apa yang berlaku di sini.

Protokol yang berfungsi dengan dua wayar biasanya SPI atau I2C, dan spesifikasi teknikal pada Cypress menyatakan bahawa pin ini sepadan dengan I2C, yang kami lihat adalah benar dalam kes kami:

Membalikkan dan menggodam Aigo menyulitkan sendiri HDD luaran. Bahagian 1: Membedah kepingan

Chipset USB-SATA sentiasa meninjau PSoC untuk membaca keadaan kunci, yang secara lalai ialah "0". Kemudian, apabila anda menekan kekunci "1", ia bertukar kepada "1". Penghantaran akhir sejurus selepas menekan β€œ~” adalah berbeza jika kod PIN yang salah dimasukkan. Namun, buat masa ini saya belum menyemak apa yang sebenarnya sedang dihantar ke sana. Tetapi saya mengesyaki bahawa ini tidak mungkin menjadi kunci penyulitan. Bagaimanapun, lihat bahagian seterusnya untuk memahami cara saya mengalih keluar perisian tegar dalaman PSoC.

Sumber: www.habr.com

Tambah komen