Tablica alokacji FAT jest takim jakby spisem treści dla plików znajdujących się na partycji. Informacja o pierwszym klastrze pliku znajduje się w rekordzie katalogu opisującym ten plik. Ponieważ pliki często zajmują więcej, niż jeden klaster, kolejne numery klastrów musisz odnaleźć na podstawie tablicy. Jeśli znasz numer pierwszego klastra, musisz znaleźć jego opis w tablicy i odczytać wartość następnego klastra.
Tablicę alokacji możemy rozpatrywać jako tabelę wartości w czterech 4-bajtowych kolumnach (dla FAT32 i exFAT = dla FAT 16 tych kolumn jest 8 dwubajtowych, FAT 12 jest trochę bardziej zamieszany i pozwolę sobie ten temat pominąć ) i wierszach, jakich liczba zależy od liczby klastrów na partycji. Dlatego potrafi się ciągnąć przez wiele sektorów. pierwsze dwa rekordy są zajęte przez sygnaturę, po jakiej komputer poznaje, że to tablica FAT - dlatego nie mamy klastrów nr 0 i 1, a pierwszy klaster ma numer 2.
Jak już popatrzymy na tablicę alokacji plików, jak na taką tabelę, zobaczymy szereg kolejno ułożonych wartości. Niektóre z nich mają specyficzne znaczenie. Np. 0x00000000 oznacza wolny klaster, a 0x0FFFFFFF (dla FAT32 - jaki tak naprawdę w tablicy alokacji używa wartości 28-bitowych, dlatego najstarsze (pierwsze zero) cztery bity są zawsze wyzerowane) lub 0xFFFFFFFF dla exFAT oznacza koniec łańcucha klastrów.
Ważna uwaga - te wartości czytamy od prawej do lewej, jak w notacji typowej dla alfabetu arabskiego i hebrajskiego (to się nazywa Little Endian), a nie do lewej do prawej, jak jesteśmy przyzwyczajeni (Big Endian). I czytamy wartości całymi bajtami. Dlatego wartość CA 56 DF 24 powinniśmy przeczytać jako 24DF56CA. Czy powinienem też szerzej wyjaśnić kwestię systemu szesnastkowego? Na razie przyjmuję, że to nie jest dla Ciebie problemem, ale jak mi napiszesz, że jest, to rozwinę temat.
I tak patrząc od lewej do prawej od początku tablicy FAT mamy dwa czterobajtowe rekordy zajęte przez sygnaturę i kolejny rekord już odpowiada klastrowi nr 2. Typowo w klastrze nr 2 jest katalog główny, ale ta sama zasada składania klastrów działa dla wszystkich obiektów. Numer zawarty w opisie wskaże Ci kolejny klaster, gdzie znajduje się dany plik lub katalog, a żeby kontynuować wyszukiwanie następnych, musisz odnajdywać odpowiednie rekordy w tablicy.
Na początku jest łatwo - ostatni rekord pierwszego wiersza opisuje klaster numer 3, potem 4-7, 8-11 itd., ale przy dużych wartościach takie wyszukiwanie p[rzez manualne odliczanie jest kłopotliwe. Zauważ, że w hex-edytorze każdy sektor zajmuje 32 linijki. 32x4 = 128. Dlatego możesz podzielić numer, jakiego szukasz mod 128 (ja to sobie dzielę od razu w systemie szesnastkowym, bo mam praktykę, ale dla Ciebie piszę w dziesiątkowym - jeśli uznasz, że dasz rady i wolisz dzielić w szesnastkowym, to masz 20 linii po 4 kolumny = 80 rekordów w sektorze) i w ten sposób uzyskasz numer sektora (oczywiście licząc od początku tablicy), w jakim znajdziesz opis kolejnego sektora. Resztę z powyższego dzielenia podziel przez 4, a otrzymasz numer linii, gdzie znajduje się szukany opis. Reszta z tego drugiego dzielenia powie Ci, który rekord w tym wierszu jest właściwy (0 - na samym początku wiersza, potem 1 i 2, na końcu 3).
W ten sposób możesz ustalać kolejność klastrów. Jeśli plik nie jest pofragmentowany, kolejne numery będą po prostu o 1 większe - wtedy bez tego całego liczenia możesz przesuwać się pozycja za pozycją. Wiem, że przy takim opisie i na samym początku to może wyglądać strasznie, ale jak załapiesz, o co w tym chodzi, wcale nie jest takie trudne, tylko trochę żmudne.
Tylko, że obawiam się, że po użyciu chkdsku tablica FAT ucierpiała i nie da Ci wystarczająco dobrych odpowiedzi. Dlatego spróbuj:
- ustalić, które pliki chk równocześnie zawierają sygnaturę pliku video (są odnajdywane jako filmy w wyszukiwaniu RAW) - powinnaś dać rady to ustalić porównując numery w nazwach obu grup plików)
- powycinać po 1 klastrze z tych plików chk.
- próbować doklejać do najwcześniejszego nagłówka (o najniższym numerze w nazwie) wcześniejsze pliki chk (to daje największe prawdopodobieństwo, ale nie gwarancję sukcesu),
- powtarzaj operację dla kolejnych nagłówków eliminując z puli pliki chk już wykorzystane do rekonstrukcji innych filmów.