ext2ファイルシステムで削除されたiノードを見つけようとしています。これが私が取っているアプローチです。しかし、私は何か間違っていると感じています。
私は最初にスーパーブロックの先頭まで1024バイトを探しています
ブロックサイズが1024バイトであることを知ったので、グループ記述子テーブルはオフセット2048から始まります。
グループ記述子テーブルには、ブロックグループごとにグループ記述子がありますか?したがって、グループ記述子またはブロックグループの数を計算します。グループごとのiノード/ iノードの合計。これにより、値8が得られます。これは、ブロックグループ記述子テーブルに8つのグループ記述子があることを意味します。
8つのグループ記述子すべてのfirst_inode_tableフィールドを読み取りました。グループ記述子の長さは32バイトです。
だから私は混乱するところです。最初のグループ記述子のiノードテーブルから260が得られます。これは、最初のブロックグループのiノードテーブルにアクセスするために260 * blocksizeを実行することを意味しますか?
そこに到達したら、dtimeフィールドを読んでいます。これは、最後に削除された時刻を示しています。それが> 0の場合は、削除されたことを意味します。
したがって、もう1つの混乱は、iノードテーブルの最初の11エントリが予約されていると言われていることです。それで、iノードテーブルのすべてのiノードエントリを調べている限り、これは問題になりませんか?
私のアプローチは正しいですか?何かおかしいと思ったら、私を正しい方向に向けてください。
推論は正しいです。バグは別の問題によるものでした。
@Catieこの問題を解決した場合は、自分で回答を追加するか、単に質問を削除する必要があります。:-)
—
ジョンパーカー、
自分で答えを追加してください!
—
kalaracey
質問は別の問題であったため、解決されました。問題はもうなく、Catieが戻る可能性は非常に低いので、未回答リストのこの質問を手助けしてください...
—
Tamara Wijsman