FPV drons, kas bija aprīkots ar kompaktu videokameru, avarēja. Kamerā ievietotā SD atmiņas karte, kurā tika ierakstīts video, tika bojāta. Piekļuve datiem, izmantojot SD interfeisu, vairs nav iespējama, tāpēc vienīgā atlikusī iespēja ir nolasīt datus tieši caur NAND interfeisu. Atmiņas mikroshēmai ir standarta 4 × 6 kontaktu izvietojums.
| Ražotājs | Goodram |
|---|---|
| Kontrolieris | Phison |
| Čipa ID | 983A98A376 |
| Čipu skaits | 1 |
| Lapas struktūra | 1×(1024 Data + 9 SA + 105 ECC) + 15×(1024 Data + 5 SA + 105 ECC) |
| ECC | BCH |
| XOR | tikai dati |
XOR atslēga
Datu analīzei tika izmantoti divi NAND zibatmiņas nolasījumi - SLC (Single-Level Cell) un TLC (Triple-Level Cell) režīmā. Šie režīmi atšķiras ar informācijas glabāšanas principu atmiņas šūnās, tādēļ atšķiras arī datu XOR atjaukšanas (descrambling) process.
XOR atslēga sastāv no 384 rindām, katrā pa 16 384 baitiem. XOR operācija tiek piemērota tikai datu apgabalam, neietekmējot servisa apgabalu (SA) un kļūdu korekcijas datus (ECC). SLC režīmā katras divas lapas izmanto vienu un to pašu XOR atslēgas rindu.
XOR atslēga tika iegūta, analizējot pašus nolasītos datus. Tika salīdzināti atkārtoti 1 KB sektori un, izmantojot vairākuma balsošanas metodi (majority voting), noteikta katra sektora biežāk sastopamā vērtība. Katram sektoram tika atrastas vismaz 79 identiskas kopijas.
Tā kā attiecīgās sākotnējo datu vērtības bija nulles, atkārtoto kopiju salīdzināšana ļāva noteikt XOR atslēgas vērtības.
XOR atslēgas rindu izvēles principu un SLC un TLC atslēgu savstarpējo atbilstību ilustrē 1.attēlā redzamā infografika.
Loģiskā kartēšana
Kontrolieris katras loģiskās lapas izveidei izmanto divus secīgus fiziskos blokus - 2k un 2k+1. No katra bloka tiek nolasītas četras 4 KB datu vienības, kopā veidojot astoņas vienības jeb 32 KB vienā loģiskajā lapā.
Katrai 4 KB datu vienībai tās servisa apgabalā (SA) ir norādīts atbilstošais loģiskā bloka numurs (LBN). Tādēļ loģisko attēlu iespējams rekonstruēt, sakārtojot visas datu vienības pēc to LBN vērtībām.
Lielākoties LBN vērtības veido secīgu virkni, tomēr sastopami arī izņēmumi, kas jāņem vērā datu kartēšanas procesā (skat. 2. attēlu).
LBN aprēķins un datu nobīde
Loģiskā bloka numurs (LBN) tiek aprēķināts, apvienojot trīs baitu vērtības no servisa apgabala (SA):
LBN = (SA1[0] << 16) | (SA0[1] << 8) | SA0[0]
Operators << apzīmē bitu nobīdi pa kreisi, savukārt | - bitu līmeņa OR operāciju. Tādējādi trīs baitu vērtības tiek apvienotas vienā 24 bitu skaitlī.
Piemēram:
SA1[0] = 0x12 → 0x120000 // Pabīda pa kreisi par 16 bitiem
SA0[1] = 0x34 → 0x003400 // Pabīda pa kreisi par 8 bitiem
SA0[0] = 0x56 → 0x000056 // Atstāj sākotnējā pozīcijā
--------
LBN = 0x123456Pēc LBN aprēķināšanas tiek noteikta attiecīgās datu vienības atrašanās vieta loģiskajā attēlā. Tā kā katra kartēšanas vienība ir 4 KB jeb 4096 baiti, tās sākuma nobīdi (Offset) aprēķina šādi:
Offset = LBN x 4096Piemērā:
0x123456 × 4096 = 0x123456000Iegūtā vērtība norāda attiecīgās 4 KB datu vienības sākuma nobīdi baitos, skaitot no loģiskā attēla sākuma.
Lietotāja datu un sistēmas metadatu atšķiršana
Lietotāja datu vienības (TLC) no SLC režīmā saglabātajām sistēmas tabulām tiek atšķirtas pēc divu baitu galvenes 0xFF00.
Kopumā 219 bloki ir ierakstīti SLC režīmā. To saturs tiek iegūts no SLC nolasījuma, savukārt atbilstošās datu kopijas tiek izslēgtas no TLC nolasījuma, tādējādi novēršot viena un tā paša satura dublēšanos.
Bloku identificēšanai tiek izmantota šāda pārbaude:
SA0[3] ‖ SA1[1] = 0xFF00
Operators || apzīmē divu baitu vērtību konkatenāciju (savienošanu), saglabājot norādīto secību. Rezultātā tiek iegūta 16 bitu vērtība.
Failu sistēmas atrašanās vieta
Atjaunotajā loģiskajā attēlā FAT32 failu sistēmas sāknēšanas sektors atrodas pie LBN 0x400, kas atbilst LBA 8192 jeb šādai nobīdei:
0x400 × 4096 = 4 194 304 baiti
Tātad sāknēšanas sektors atrodas 4 MiB attālumā no attēla sākuma. Tas atbilst pieņēmumam, ka nodalījums sākas pie LBA 8192.
Loģiskā diska attēla izveide
Aptuveni 27 GB apjomīga NAND nolasījuma skenēšanas rezultātā tika atrasti aptuveni 3,80 miljoni dažādu LBN ierakstu.
Aptuveni 88 tūkstošiem LBN ir vairākas datu kopijas. Tāpēc galvenais izaicinājums vairs nav datu atrašana vai to loģiskās secības noteikšana, bet gan pareizās datu bloka kopijas izvēle.
Lai pēc iespējas precīzāk atjaunotu failu sistēmu, pieejamās kopijas jāsalīdzina, ņemot vērā metadatus un ierakstīšanas secības pazīmes. Šīs izpētes rezultātā tika izveidota iespēja izvēlēties dažādas translatora revīzijas jeb versijas, kas ļauj ģenerēt atšķirīgus loģiskos diska attēlus (logical images).
Rezultāts
Rezultātā izdevās atjaunot failu sistēmu un drona lidojumu video ierakstus.