从SQLite文件中提取原始数据

时间:2012-04-12 11:59:07

标签: perl sqlite hex

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

如何提取此数据以使其仍然清晰可辨?我正在考虑某种perl脚本,但如果SQLite看不到数据,我只能在十六进制编辑器中看到它,我不知道该怎么做。

有什么想法吗?

谢谢:)

2 个答案:

答案 0 :(得分:0)

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

有一种商业工具可以做到epilog - 不知道它有多好或有多好。可能值得你。

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

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

答案 1 :(得分:0)

您可以将 HexDump 包用于Perl

以下代码将十六进制打印到屏幕,其中 FooFile 是sqllite文件的路径:

use Data::HexDump;

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