Odzyskaj pliki txt na podstawie znanych ciągów

3

Zgubiłem wiele plików TXT, które zawierają ważne dane osobowe. Przypadkowo usunąłem je z dysku twardego. Nie jestem pewien, w którym folderze się znajdowali. Nie jestem pewien, jakie miały nazwy plików (przynajmniej nie wszystkie), ale znam niektóre słowa kluczowe, które mogą się w nich znajdować. Na przykład wiem, że większość z nich zawiera ciąg znaków diary(możesz zgadnąć, dlaczego te pliki są dla mnie ważne).

O ile rozumiem, nie mogę używać narzędzi do rzeźbienia plików, takich jak Skalpel, ponieważ polegają one na identyfikacji plików na podstawie ich nagłówków i stopek, ale pliki txt nie mają żadnego z nich.

Myślę, że moją jedyną opcją jest poszukiwanie tych znanych ciągów w surowym zrzucie.

Mam zrzut partycji FAT32, plik img 150 GB, utworzony za pomocą dd.

O ile rozumiem, FAT32 wykorzystuje klastry 4K. Tak więc każdy plik mniejszy niż 4K, co ma miejsce w przypadku większości plików tekstowych, których szukam, będzie w jednym klastrze. Niektóre z nich obejmują dwa lub więcej skupisk, być może sąsiadujących, a może nie.

Myślę więc, że potrzebuję narzędzia, które może przechodzić przez każdy klaster na obrazie i grep, aby uzyskać listę słów kluczowych. Jeśli klaster zawiera dopasowanie, należy je skopiować do pliku, być może po prostu cluster001.txt ,uster002.txt itp. Następnie mogę ręcznie połączyć te klastry razem.

Chciałbym wiedzieć, czy moje rozumowanie i pomysły mają sens?

Jakich narzędzi mogę użyć, aby to osiągnąć?

Mads Skjern
źródło
1
Czy w Linuksie można rozważyć zamontowanie obrazu za pomocą systemu loopback (coś w stylu: mount -o loop, ro image.img / mnt)? Następnie możesz użyć standardowych narzędzi do przeszukiwania systemu plików.
carveone
Dlaczego nie możesz użyć zwykłego oprogramowania do odzyskiwania plików, aby ustalić, czy dane nadal istnieją na partycji?
Ramhound
Nie wiem, co to jest „normalne” oprogramowanie do odzyskiwania plików? TestDisk pozwala mi odzyskać pliki tylko wtedy, gdy znam ich lokalizację. Skalpel używa rzeźbienia plików, co moim zdaniem nie jest możliwe w przypadku plików txt.
Mads Skjern,

Odpowiedzi:

4

Nie znam żadnego narzędzia do odzyskiwania plików, które wybiera pliki na podstawie określonego ciągu, który zawierają, ale te trzy metody powinny działać:

  1. Po usunięciu pliku na partycji FAT32 jego nazwa pliku nie jest zastępowana. Tylko pierwszy bajt nazwy pliku 8.3 zostaje ustawiony na E5 , co oznacza plik jako usunięty. Nie wpłynie to na rozszerzenie, więc pliki TXT są nadal łatwo rozpoznawalne.

    Możesz użyć dowolnego narzędzia do odzyskiwania plików, które pozwala określić rozszerzenie (np. Recuva ), odzyskać wszystkie pliki TXT, a następnie wyszukać dziennik we wszystkich odzyskanych plikach.

    Ponieważ pliki tekstowe są (zwykle) małe, odzyskanie plików tekstowych nie powinno zająć dużo czasu (prawdopodobnie mniej niż znalezienie). W przypadku partycji 150 GB powinno to być dość szybkie.

  2. Programy takie jak PhotoRec identyfikują pliki na podstawie ich zawartości i próbują je odzyskać. Chociaż prawdą jest, że pliki tekstowe nie mają żadnych nagłówków, PhotoRec nadal udaje się je zidentyfikować (jak sądzę, wykluczając).

    Ponownie możesz odzyskać wszystkie pliki tekstowe, a następnie wyszukać dziennik we wszystkich odzyskanych plikach.

    Identyfikacja plików tekstowych według ich zawartości potrwa dłużej niż ich rozszerzenie, ale znajdzie pliki, których wpis katalogu również został zastąpiony.

  3. Ponieważ nie spodziewasz się, że pliki tekstowe będą duże, możesz również wyszukać dziennik w zrzucie partycji i odzyskać zawierający go klaster:

    sudo bash -c '
        for OFFSET in $(grep -abio diary /dev/sda3 | cut -d: -f 1); do
            ((CLUSTER = OFFSET / 4096))
            dd if=<imgfile> of=cluster$CLUSTER.txt bs=4096 skip=$CLUSTER count=1
        done
    '
    

    Jak to działa:

    • grep -Pabio diary /dev/sda3 | cut -d: -f 1wypisze bajtowe przesunięcia każdego wystąpienia pamiętnika ciągów w pliku obrazu.

      -iPrzełącznik umożliwia wyszukiwanie wielkości liter. -PPrzełącznik włącza Perl kompatybilnych wyrażeń regularnych. Jest to potrzebne ze względu na błąd w niektórych wersjach grep (GNU), który powoduje, że wyszukiwania bez rozróżniania wielkości liter są nieznośnie wolne, chyba że używasz PCRE.

    • ((CLUSTER = OFFSET / 4096)) oblicza przesunięcie w klastrach na podstawie przesunięcia w bajtach.

    • dd if=<imgfile> of=cluster$CLUSTER.txt bs=4096 skip=$CLUSTER count=1zapisuje klaster z przesunięciem X w pliku o nazwieusterX.txt .

    Z natury będzie to działać tylko w przypadku plików pasujących do jednego klastra. Można zwiększyć liczbę odzyskać więcej niż jednego klastra i zmniejszyć CLUSTER odzyskać wcześniejsze klastrów, jak również.

    Aby odzyskać trzy klastry (jeden przed i jeden po klastrze zawierającym dziennik ), wprowadź następujące zmiany:

    ((CLUSTER = OFFSET / 4096 - 1))
    
    dd ... count=3
    
Dennis
źródło
Dziękuję za wspaniałą odpowiedź, kompletną i dopracowaną :) Nie będę miał czasu, aby spróbować tego jutro.
Mads Skjern,
W rzeczywistości wypróbowałem już twoją drugą sugestię: odzyskiwanie wszystkich plików (lub wszystkich plików txt) za pomocą TestDisk, ale nie mogłem znaleźć sposobu na odzyskanie wszystkich plików, oprócz ręcznego przeglądania systemu i usuwania każdego z nich.
Mads Skjern,
Gdy PhotoRec poprosi o partycję, możesz określić typy plików, których nie chcesz odzyskać w File Opt . Naciśnij dwukrotnie klawisz strzałki w prawo, a następnie Enter.
Dennis
Wyjaśnienie: Musisz użyć PhotoRec , a nie TestDisk .
Dennis
To działało świetnie! Btw może trzeba dodać zdo grepopcji, jeśli pojawi się komunikat mówiący, że zabrakło pamięci. Również dla tych, którzy nie wiedzą, które można umieścić /dev/sda3w miejscu<imgfile>
guillefix
1

Stare pytanie, ale któregoś dnia może się przydać ...

Dzięki WinHex możesz uruchomić „jednoczesne wyszukiwanie” kilku słów kluczowych lub wyrażeń na całej partycji, wyświetli ona listę trafień, a jeśli system plików został poprawnie przeanalizowany, wskaże, do którego pliku należy każdy znaleziony ciąg nawet, jeśli plik został usunięty (nie zawsze jest jednak niezawodny w FAT32, działa lepiej z partycją NTFS).

Gabriel B.
źródło