2012-04-12 61 views
1

正如您可能或可能不知道的,从SQLite文件中删除数据时,它仍然保留在文件中。它可以使用十六进制编辑器查看,但不会显示在SQLite或任何SQLite查看器中。从SQLite文件中提取原始数据

如何提取这些数据以便它仍然清晰?我在想某种Perl脚本,但如果SQLite无法看到数据,我只能在十六进制编辑器中看到它,我不知道该怎么做。

任何想法?

谢谢:)

回答

0

如果sqlite的看不到的行,那么你就需要自己分析的原始文件格式。这并不容易。

有一个商业工具可以做到这一点epilog - 不知道它有多好或它的工作效果如何。可能为你值得。

如果失败,则需要自己解析文件格式。有些提示是here,或者你可能想要破解sqlite代码本身,看看你是否可以忽略它所有已删除的标记。

哦 - 如果你真空db文件它实际上会删除删除的行,所以不要。

0

您可以使用HexDump包的Perl

下面的代码将打印十六进制到屏幕上,其中 FooFile是通向你的sqllite文件:

use Data::HexDump; 

my $f = new Data::HexDump; 
$f->file("FooFile"); 
$f->block_size(1024); 
print while $_ = $f->dump;