Tôi đang cố gắng tìm các nút bị xóa trong hệ thống tập tin ext2. Và đây là cách tiếp cận mà tôi đang thực hiện. Tuy nhiên tôi cảm thấy rằng tôi đang làm điều gì đó sai.
Trước tiên tôi tìm kiếm 1024 byte cho đến khi bắt đầu siêu khối
Tôi nhận biết rằng kích thước khối là 1024 byte, do đó bảng mô tả nhóm bắt đầu ở offset 2048.
Bảng mô tả nhóm có một mô tả nhóm cho mỗi nhóm khối phải không? Vì vậy, tôi tính toán số lượng mô tả nhóm hoặc nhóm khối: tổng số nút / nút trên mỗi nhóm. Điều này mang lại cho tôi giá trị 8, có nghĩa là tôi có 8 mô tả nhóm trong bảng mô tả nhóm khối của mình.
Tôi đọc trường first_inode_table cho tất cả 8 mô tả nhóm. Các mô tả nhóm có độ dài 32 byte
Vì vậy, đây là nơi tôi bị lẫn lộn. Bảng inode cho bộ mô tả nhóm đầu tiên cung cấp cho tôi 260. Vậy điều này có nghĩa là để truy cập vào bảng inode cho nhóm khối đầu tiên tôi thực hiện kích thước khối 260 *?
Khi tôi đến đó, tôi đang đọc trường thời gian - cho chúng tôi biết lần xóa cuối cùng. Nếu đó là> 0 có nghĩa là nó đã bị xóa.
Vì vậy, một sự nhầm lẫn khác mà tôi có là người ta nói rằng 11 mục đầu tiên của bảng inode được bảo lưu. Vì vậy, đây không phải là một vấn đề miễn là tôi đi qua tất cả các mục inode của bảng inode phải không?
Cách tiếp cận của tôi có đúng không? Hãy chỉ cho tôi đi đúng hướng nếu bạn thấy có gì đó không đúng.