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ājsGoodram
KontrolierisPhison
Čipa ID983A98A376
Čipu skaits1
Lapas struktūra1×(1024 Data + 9 SA + 105 ECC) + 15×(1024 Data + 5 SA + 105 ECC)
ECCBCH
XORtikai dati

 

Good Ram 16GB

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.

XOR key SLC vs TLC
Attēls Nr.1

 

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).

Goodram 16GB interleave
Attēls Nr.2

 

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 = 0x123456

Pē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 4096

Piemērā:

0x123456 × 4096 = 0x123456000

Iegū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.

Atjaunota FAT32 failu sistēma
Attēls Nr.3