Cum poți recupera o partiție de Truecrypt dacă e corupt MBR-ul?
2E foarte important să ne protejăm datele ce le stocăm mai ales acum în era tehnologică când o parte semnificativă din viața noastră atât profesională cat și personală e deținută de computerele ce le utilizăm. Trebuie să avem grija ca datele noastre să nu ajungă în mana unor persoane ce nu ne vor binele. Așa a apărut Truecrypt, una dintre cele mai bune soluții de stocare a datelor într-un mod criptat. Una dintre facilitățile de la Truecrypt e că iți permite să criptezi o întreagă partiție și să o montezi când dorești pentru a folosi datele de acolo. Ea se comportă ca o partiție obișnuită doar că e neaccesibila până în momentul în care o montezi. Asta înseamnă că toate informațiile despre ea le găsești în MBR-ul (Mașter Boot Record) HDD-ului.
Cum poți recupera partiția de Truecrypt dacă s-a corupt MBR-ul?
Prin corupere mă refer chiar și la suprascrierea MBR-ului de un alt sistem de operare, un virus ce a scris date acolo, formatarea HDD-ului samd. În majoritatea situațiilor există șanse ca datele pe HDD să fie nealterate (atenție, e important ca primă partiție să nu fie de Truecrypt).
1. Truecrypt Rescue Disk
În momentul în care construiești partiția criptată Truecrypt va avea nevoie de un CD/DVD pe care să facă un backup la Bootloader-ul Truecrypt ce poate fi restaurat foarte repede în cazul coruperii acestuia. Mai multe detalii aici.
2. Recuperarea manuală în situația în care nu avem Rescue Disk
Dacă nu avem sau nu mai găsim Rescue Disk-ul dar știm parola partiției respective există șanse să recuperăm datele de acolo. Să presupunem următoarea situație – avem 3 partiții, nu știm exact dimensiunile dar știm că prima are puțin peste 100GB, a doua aproximativ 150 de GB și e criptată cu Truecrypt iar a treia e tot de aproximativ 150 GB. Mai știm că device-ul are în total aproape 500GB folosiți de cele 3 partiții.
De ce avem nevoie?
0. Închidem PC-ul și nu mai scriem nimic pe HDD.
1. Un HDD extern de cel puțin aceeași dimensiune cu al nostru.
2. Un live CD (stick, DVD etc) cu System Rescue CD.
Cum detectăm partiția și o accesăm?
1. Facem un dump la tot HDD-ul pe cel extern. Folosind System Rescue CD, accesăm terminalul și putem da următoarele comenzi, unde /dev/sda e HDD-ul intern iar /dev/sdb e hdd-ul extern :
sudo su dd if=/dev/sda of=/dev/sdb/hdd.dd bs=1M
Așteptăm câteva ore până se face dump-ul și apoi ne vom focusa doar pe el.
2. Putem încerca să descoperim și celelalte partiții din System Rescue CD folosind comanda testdisk din terminal și încercând atât Quick Scan cat și Deep Scan. Dacă ai noroc și nu e prea mare paguba ai șanse să descoperi și partiția de truecrypt dar foarte improbabil.
3. Instalăm un hexeditor și deschidem noul dump format în două terminale separate.
apt-get install hexedit hexedit /dev/sdb/hdd.dd
4. Dacă e să ne imaginăm HDD-ul nostru, partiția căutată de noi se va regăsi cu siguranță undeva la poziția 100GB+150GB/2 în HDD. Cu alte cuvinte dacă calculăm offsetul poziției aproximative a ultimului byte din valoarea de 180 GB și îi facem conversia în HEX vom avea ceva de genul 0x2D00000000. În hexedit ctrl+G și scriem acest offset și în acest moment ar trebui să vedem date complet random. Pe ce mizăm acum ca să găsim partiția de Truecrypt? Pe faptul că în momentul în care am criptat partiția toate datele de pe HDD sunt complet random, și nu există prea multe zerouri. Asta înseamnă că dacă mergem în sus prin hexeditor și în jos căutând primul dump de mai mult de să spunem 5-6 zerouri, ar trebui să găsim capetele partiției.
5. Să căutăm capetele partiției. CTRL+S (caută în jos) și scriem 10 zerouri și apoi în celălalt terminal deschis cu hexedit CTRL+R (căutăm în sus) și scriem 10 zerouri. Când găsim foarte multe zerouri înseamnă că am ajuns la capetele celor două căutări și avem partiția. Luăm cele două offset-uri (în hex), facem diferența și conversia decimală în GB. Ar trebui să avem să spunem 156GB care e exact cat partiția noastră. Dacă obținem așa ceva atunci am reușit! Dar mai avem puțin de lucru. Notăm poziția de start și de sfârșit precum si diferența in GB.
Extragem partiția de Truecrypt
Luăm poziția de început, o transformăm în decimal apoi împărțim toată valoarea la 1048576 (1MB în bytes) [START] și facem la fel și cu dimensiunea obținută în diferență. Cei 156GB îi transformăm în bytes și apoi împărțim la 1048576 [COUNT]. Asta ne va ajută să putem copia exact de unde trebuie, numărul ideal de blocuri. (Mai știm că partițiile de truecrypt au un număr de blocuri de 512 bytes clar, adică numărul de blocuri de 512 bytes ai partiției este divizibil cu 512). Deschidem un nou terminal și înlocuim [START] și [COUNT] cu valorile obținute anterior.
sudo su dd if=/dev/sdb/hdd.dd of=/dev/sdb/tc.tc bs=1M skip=[START] count=[COUNT]
După ceva timp vom avea partită de Truecrypt stocată pe HDD în fișierul tc.tc. Avantajul e că Truecrypt nu-i pasă de formatul partiției sau dacă e fișier sau nu așa că nu ne rămâne decât să testăm dacă ce am obținut e ok.
Testăm dump-ul obținut cu Truecrypt pentru a vedea dacă am descoperit-o bine
Deschidem un alt terminal și dăm următoarele comenzi.
$ ./truecrypt -t --filesystem=none /dev/sdb/tc.tc Enter password for /dev/sdb/tc.tc: Enter keyfile [none]: Protect hidden volume? (y=Yes/n=No) [No]: Enter system administrator password: $ mount ... truecrypt on /tmp/.truecrypt_aux_mnt1 type fuse.truecrypt (rw,nosuid,nodev,allow_other) $ sudo testdisk /tmp/.truecrypt_aux_mnt1/volume
Dacă vom reuși să accesăm cu testdisk fișierul /tmp/.truecrypt_aux_mnt1/volume înseamnă că am reușit să montăm partiția decriptată de Truecrypt și de aici nu trebuie decât să recuperăm datele normal. Cu alte cuvinte am recuperat partiția de Truecrypt. Felicitări! 🙂
În loc de încheiere, disclaimer
- Materialul prezentat se bazează pe o situație reală.
- Nu încercați să o faceți singuri dacă nu aveți experiență și nu înțelegeți cum funcționează HDD-ul.
- Experimentați dar nu pe HDD-ul de „producție”.
- Cifrele folosite sunt orientative, rămâne la latitudinea voastră să le aflați în contextul HDD-ul pe care lucrați.
- E posibil să nu meargă în toată situațiile.
- Testarea dump-ului de Truecrypt se poate face și cu doar câțiva MB, asta înseamnă că nu trebuie să faci dd la toată partiția dacă nu ești sigur că ai descoperit headerul bine.
- Explicațiile nu au fost detaliate pentru că se presupune că respectați punctul 2 al disclaimerului deci înțelegeți ce am făcut.
- Suntem deschiși și la alte variante.
Daca acest articol contine o greseala, selecteaza cuvintele sau fraza gresita si tasteaza combinatia de taste Shift + Enter sau apasa click aici pentru a o raporta. Multumim!
A. E valabil si in cazul discurilor de 3TB sau mai mari cu GPT ?
B. În fraza „Prin corupere mă refer chiar și la suprascrierea MBR-ului de un alt sistem de operare, un virus ce a scris date acolo” ultima porțiune „un virus ce a scris date acolo” = Weiss ? 😉
A. Da, ar trebui sa fie aproximativ acelasi principiu. Doar ca trebuie sa iei in calcul dimensiunile headerelor ce stiu ca sunt mai mari. Spre exemplu eu cand am gasit partitia de Truecrypt am sters 512 ai headerului NTFS si abia apoi am montat-o pe Truecrypt. Nu stiu exact cat e la GPT dar probabil pe Wikipedia afli raspunsul asta.
B. Cred ca se aplica si la exemplu dat de tine. :-))