Próbuję znaleźć usunięte i-węzły w systemie plików ext2. I to jest moje podejście. Jednak czuję, że robię coś złego.
Najpierw szukam 1024 bajtów na początek superbloku
Wiem, że rozmiar bloku to 1024 bajty, więc tabela deskryptorów grup zaczyna się od przesunięcia 2048.
Tabela deskryptorów grup ma deskryptor grup dla każdej grupy bloków, prawda? Obliczam więc liczbę deskryptorów grup lub grup bloków: całkowite i-węzły / i-węzły na grupę. Daje mi to wartość 8, co oznacza, że mam 8 deskryptorów grup w tabeli deskryptorów grup bloków.
Czytam pole first_inode_table dla wszystkich 8 deskryptorów grup. Deskryptory grup mają długość 32 bajtów
Więc tu się mylę. Tabela i-węzłów dla pierwszego deskryptora grupy daje mi 260. Czy to oznacza, że aby uzyskać dostęp do tabeli i-węzłów dla pierwszej grupy bloków, mam 260 * rozmiar bloku?
Kiedy tam dotrę, czytam pole dtime - które informuje nas o ostatnim usuniętym czasie. Jeśli jest to> 0, oznacza to, że zostało usunięte.
Kolejnym nieporozumieniem jest to, że mówi się, że pierwsze 11 wpisów w tabeli i-węzłów jest zarezerwowanych. Więc to nie powinno stanowić problemu, dopóki przeglądam wszystkie wpisy i-węzłów tabeli i-węzłów, prawda?
Czy moje podejście jest prawidłowe? Proszę wskazać mi właściwy kierunek, jeśli zauważysz coś złego.
źródło