2016-07-28 8 views
1

この説明[1]によると、SQLiteデータベースから削除されたレコードをどのように回復することができるかによって、レコードを削除すると2つのことが起こります: (空きブロックとして)空きリストに追加され、コンテンツ領域の「ヘッダ」が上書きされます。SQLite3:ヌルバイトで上書きしないでレコードを削除する

コンテンツそのものは上書きされません(または数バイトのみ)。 16進エディタでデータベースファイルを開くと、削除されたレコードの一部が引き続き表示されます。

だから、これは真実であるかどうかをチェックするために、ここでは最小限の例です:私は今、期待してい何

sqlite3 example.db 

sqlite> CREATE TABLE 'test'(aColumn VARCHAR(25)); 
sqlite> INSERT INTO test VALUES('AAAAAAAAAA'); 
sqlite> INSERT INTO test VALUES('BBBBBBBBBB'); 
sqlite> INSERT INTO test VALUES('CCCCCCCCCC'); 
sqlite> DELETE FROM test WHERE aColumn = 'BBBBBBBBBB'; 

ということです - バイナリエディタでファイルを開く - CCCC ...とAAAAの間...そこまだいくつかのBsです(しかし、Bsの前のいくつかのバイトか、最初のいくつかのBsは上書きされるべきです)。 実際には、Bsを持つ領域全体がヌルバイトで上書きされています。

これは大きなデータベースでも発生します。コンテンツ領域は常にヌルバイトで消去されます。このため、何も復元できません。

blogpostに表示される結果を得るために使用する必要があるオプションやフラグはありますか?

フォレンジックツールで削除されたレコード(またはその一部)を復元できるように、SQLiteデータベースを作成する必要があります。

[1]のSQLiteのhttp://sandersonforensics.com/forum/content.php?222-Recovering-deleted-records-from-an-SQLite-database

答えて

1

あなたのバージョンが有効になってSQLITE_SECURE_DELETEしてコンパイルすることを起こります。

関連する問題