Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Rekonstrukcja tablicy MFT na podstawie pliku $LogFile - możliwa czy nie?

Mr.Wrong 28 Lis 2017 20:56 426 8
  • #1 28 Lis 2017 20:56
    Mr.Wrong
    Poziom 6  

    Pytanie jak w tytule :)

    Offline-owy Windows Updater bez najmniejszego choćby ostrzeżenia zlikwidował istniejącą na dysku przenośnym partycję, założył własną i nadpisał pierwsze 7.4 miliona sektorów dysku, likwidując tym samym całą tablicę MFT (partycja startowała na 63 sektorze, 8sek/klaster, $MFT 786432, $MFTMirr 2, więc nie uchował się ani jeden rekord). Natomiast dziwnym zrządzeniem losu zachował się plik $LogFile, który rezydował dopiero powyżej 8 milionów sektorów. Dziwnym, ponieważ z ciekawości sprawdziłem kilka maszyn z partycjami NTFS na różnych systemach, od XP, przez Win 7, 8, 10, na Win Svr 2008 i 2012 kończąc i $LogFile zawsze poprzedzał tablicę MFT, nigdy nie był umiejscowiony za nią. Podejrzewam związek z faktem, że na dysku sporo się działo i albo z braku miejsca plik został podzielony na dwie części, albo jeżeli dla $LogFile fragmentacja nie jest dopuszczalna, to system przewidując zwiększenie rozmiaru pliku, przerzucił go za MFT. Jakby nie było, plik jest i jego struktura w porównaniu z plikami z działających partycji wygląda poprawnie. Pytanie co z tego pliku można wydobyć? Czy są tam zapisywane tranzakcje tylko od ostatniego uruchomienia do zamknięcia, czy trochę więcej? I jeżeli wogóle to możliwe, jak to zrobić? Oczywiście zdaję sobie sprawę, że odbudowa MFT w całości na pewno nie jest możliwa (szacuję ją na ok. 100.000 rekordów, a $LogFile ma nie więcej jak 60 MB), ale każda setka jest na wagę złota :) Wszytskie interesujące mnie pliki odzyskałem wyszukując po sygnaturach, ale dało mi to blisko 50.000 bezimiennych JPG-ów, a ich nazwy były nie mniej ważne niż zawartość.

    0 8
  • #2 28 Lis 2017 22:08
    mati211p
    Specjalista - HDD i odzyskiwanie danych

    Skąd wiesz że nadpisał właśnie 7,4 miliona sektorów? Może tylko format partycji był na nie całkowite nadpisanie. Na podstawie $LogFile da się wyszukać (o ile jest w $LogFile a czasem się zdarza, bo zazwyczaj jest to najczęściej modyfikowana zawartość). Częściowo opisywałem to w temacie:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=16777085#16777085
    W $Log File nie będzie całego $MFT (tylko ostatnio modyfikowane rekordy) jak go utraciłeś to musztarda po obiedzie. Ponadto $LogFile musi być od poprzedniej partycji, a nie od nowej. W $LogFile co najwyżej spodziewałbym się $MFT klas.0 jedynie.
    Skąd wiesz, że nie ma ani jednego rekordu $MFT? A co w przypadku fragmentacji $MFT? Jeśli w $LogFile znajdziesz $MFT klas. 0 to odczytaj rekord 0 i sprawdź fragmentację.
    W temacie do którego link dałem $MFT był w 12 czy nawet 17 fragmentach (najwięcej ile widziałem do tej pory).
    EDIT: Wszystkie wpisy zaczynające się sygnaturą FILE0 z offsetem 0 w $LogFile to rekordy $MFT.

    0
  • #3 28 Lis 2017 22:27
    Mr.Wrong
    Poziom 6  

    Wiem to stąd, że zrobiłem eksperyment na drugim dysku - przy pomocy DMDE wypełniłem pierwsze 10GB unikalnym "wzorkiem" i jeszcze raz uruchomiłem ten nieszczęsny instalator - "dzieło zniszczenia" zakończył właśnie w okolicach 7.350.000. Ponadto DMDE podczas wyszukiwania rekordów MFT, nie znalazł we wskazywanym przez boot sector obszarze zupełnie nic :( Znalazł dopiero daleko daleko, za połową dysku (dysk 1TB zapomniałem napisać), cztery fragmenty tablicy, ale niestety dotyczące drugiej partycji która tam kiedyś była.

    Co do tego $LogFile, to nie spodziewam się cudów, ale zawsze lepiej się upewnić. Jak to mówią tonący brzydko się chwyta :D

    0
  • #4 28 Lis 2017 22:31
    mati211p
    Specjalista - HDD i odzyskiwanie danych

    Dużo w $LogFile nie znajdziesz. Szukaj jak wyżej w pliku $LogFile sygnatur FILE0 z offsetem 0. Jeśli $MFT nie był fragmentowany i miał 100MB oraz nadpisane było 3,5GB danych to już po $MFT. Możesz też tych sygnatur szukać w obszarze partycji (pomiń tylko nowe obecne rekordy $MFT).

    0
  • #5 28 Lis 2017 22:46
    Mr.Wrong
    Poziom 6  

    mati211p napisał:
    Szukaj jak wyżej w pliku $LogFile sygnatur FILE0 z offsetem 0


    Jak rozumieć offset 0 wewnątrz pliku? Sygnatura FILE0 ma się zaczynać na granicy sektora/klastra, czyli n*512/n*4096 bajtów?

    0
  • #6 28 Lis 2017 22:48
    mati211p
    Specjalista - HDD i odzyskiwanie danych

    To wczytaj $LogFile np w DMDE i będziesz miał offset 0. Dokładnie chodzi tu o kolejne sektory pliku $LogFile, czyli co 512B tego pliku, tak jak piszesz. Ma być na granicy sektora, nie klastra, bo pomijasz wtedy 7 ewentualnych wpisów. Mam nadzieję, że partycja ma usuniętą literę (by nic nowego nie nadpisać) i zabezpieczoną masz kopię $LogFile w pliku.

    0
  • #7 28 Lis 2017 23:12
    Mr.Wrong
    Poziom 6  

    No tak, na to nie wpadłem żeby w ten sposób potraktować $LogFile i dekodować go jak rekordy MFT :) Niestety tych wpisów jest zaledwie kilkanaście i faktycznie dotyczą jakiejś wcześniejszej partycji. A nawet gdyby były z właściwej, to co to jest kilkanaście wobec kilkudziesięciu tysięcy... :(

    0
  • #8 28 Lis 2017 23:23
    mati211p
    Specjalista - HDD i odzyskiwanie danych

    Niestety tam zapisują się tylko ostatnie działania, te które się mieszczą. Możesz też szukać z palca rekordów $MFT na partycji poza obszarem $LogFile. Jeśli tych danych nie ma to nie odzyskasz informacji o nazwie pliku.

    0
  • #9 29 Lis 2017 09:13
    Mr.Wrong
    Poziom 6  

    mati211p napisał:
    Możesz też szukać z palca rekordów $MFT na partycji poza obszarem $LogFile


    To była pierwsza rzecz jaką zrobiłem, kiedy zorientowałem się co się stało... Niestety tak jak pisałem wcześniej, nie uchował się ani jeden rekord (a też liczyłem po cichu na fragmentację MFT, a tu na złość wszystko w jednym kawałku w nadpisanym obszarze). Plik $LogFile był ostatnią i złudną nadzieją, teraz czeka mnie trochę pracy przy porządkowaniu tego bałaganu ;)

    Mati - dzięki za wskazówki i chęć pomocy :)

    0