2016-07-28 52 views
1

根據這個解釋[1]如何從SQLite數據庫恢復刪除的記錄是可能的,刪除記錄時會發生兩件事:添加包含刪除記錄的區域到空閒列表(作爲空閒塊)並且內容區域中的「標題」被覆蓋。SQLite3:刪除記錄而不用空字節覆蓋

內容本身不是(或只是幾個字節)被覆蓋,例如,通過用十六進制編輯器打開數據庫文件,您仍然可以看到已刪除記錄的部分內容。

所以要檢查這是否是真的還是假的,這裏有一個小例子:

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的整個區域被空字節覆蓋。

這也發生在大型數據庫上。內容區域始終使用空字節進行清理,因此無法恢復任何內容。

是否有任何選項或標誌,我必須使用它來獲取博客中顯示的結果?

我需要以這種方式創建我的SQLite數據庫,以便能夠使用取證工具恢復已刪除的記錄(或其中的一部分)。

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

回答