@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

レコードヘッダパターンによる検索もボツ

SQLite データベースファイルのレコード単位というか、レコードヘッダを grep でパターン定義して EnCase で検索してはどうか?と思ったのですが、これも駄目っぽいですね。
例えば以下の 3レコードがまずあります。

0E 07 03 15 1B 68 65 79 33 68 65 79 68 65 79 33 .....hey3heyhey3
0E 06 03 15 1B 68 65 79 32 68 65 79 68 65 79 32 .....hey2heyhey2
0D 05 03 15 19 68 65 79 31 68 65 79 68 65 79 .....hey1heyhey

青色部分がレコードヘッダになるはずですが、レコード内のデータは以下のようになっています。文字列自体にはなんの意味もありませんが、データ型は TEXT にしています。

hey1 heyhey
hey2 heyhey2
hey3 heyhey3

例えば、2番目レコードである hey2heyhey2 のヘッダ内にあるタイプ部分は、0x15 と 0x1B は、0x15(21)-13/2 = 4 で“hey2”の 4文字、0x1B は 0x1B(27)-13/2 = 7 で“heyhey2”の7文字という具合にデータエリアの長さをそれぞれ示しているかと思います。
この状態で、レコードが削除されると、以下のようになります。

0E 07 03 15 1B 68 65 79 33 68 65 79 68 65 79 33
00 00 00 10 1B 68 65 79 32 68 65 79 68 65 79 32
0D 05 03 15 19 68 65 79 31 68 65 79 68 65 79

赤字にしている4バイト 0x00 00 00 10 で次のレコードの位置を示しているのではないか?と勝手に推測していますが、レコードが削除されたことで 0x15 のタイプデータ部分は上書きされてしまっています。データそのものは残っているのと TEXT なので目視で確認できなくもないです。
いずれにしても、可変長なデータを想定するとこのレコードヘッダのパターンで未使用というか削除されたレコード部分を検索するというのはちょっと難しそうですかね。