我想为一个项目调试一些短信问题,并想在手机中查看短信数据。所以首先,我提取了数据。
adb pull /data/data/com.android.providers.telephony/databases/mmssms.db ~/Downloads/mmssms.db
所以我在Mac(OS X 10.6.8)上尝试了SQLite数据库浏览器20.b1,但当我打开文件时,我看到了nada。然后我尝试了sqlite3
,但我仍然什么都没看到,只是得到了一个提醒,提醒我自己有多白痴
mbp62:~ sillyusernamehere$ sqlite3 ~/Downloads/mmssms.db
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
Error: file is encrypted or is not a database
sqlite>
那么,有可能解密数据库吗?谷歌傅没有向我透露太多关于这种机制或如何在手机外做到这一点的信息。
数据库未加密。您使用的是SQLite数据库浏览器20.b1程序不支持的数据库版本。
简单的解决方案:
-
从下载SQLite dll文件http://www.sqlite.org/sqlite.html
-
从下载SQLite Administratorhttp://sqliteadmin.orbmu2k.de/
-
提取SQLite Administrator并将捆绑的sqlite3.dll替换为从SQLite.org 下载的最新版本
-
运行SQLite Administrator程序。
-
打开你的android数据库。
-
完成。
---进一步信息——
android数据库可以使用sqlite-windows二进制文件打开,这是一个shell程序。
windows命令提示符下的示例命令:
c:> c:sqlite3.exe c:mmssms.db
sqlite> .tables
表格列出
sqlite> .mode column
sqlite> select * from sms
短信表在列视图中列出
ctrl-c
程序退出
请参阅sqlite文档以获取数据转储。
我写了一篇关于如何在android中更改wifi网络主机名的教程。在本教程中,我解释了如何使用sqlite3。
我认为你的"mmssms.db"不应该被加密。我也查看了安卓手机上的其他数据库,但它们没有加密。
点击此处查看:
http://blog.burrowsapps.com/2011/09/android-change-hostname.html?q=hostname
file settings.db
sqlite3 settings.db
sqlite> .databases
sqlite> .tables
sqlite> .schema secure
sqlite> select * from secure where _id = "24";
sqlite> select * from secure where name = "android_id";
sqlite> select * from secure where value = "";
sqlite> update secure set value = 0 where _id = 24;
sqlite> .exit
如何查看(更多示例):
http://forum.xda-developers.com/archive/index.php/t-448361.html
http://forum.xda-developers.com/archive/index.php/t-1453840.html
如果这有帮助,请告诉我!此外,你能告诉我你的手机和其他信息,以帮助生成一个更有力的答案吗。
你可能损坏了文件吗?