5

我在 android 中使用 SQLCipher 开发了应用程序。这是将您的数据库文件保护到应用程序中的安全方法。它可以很好地进行加密,但我想解密加密的数据库文件并想查看 SQLite 浏览器。

实际上我有很多表格和可用的数据。现在,如果我想查看加密的数据库数据,则无法查看(只有日志可用于查看数据)。但是使用 SQLite 浏览器我看不到它。

我正在使用“info.guardianproject.database.sqlcipher.SQLiteDatabase”

我尝试了很多方法来解密它并查看 SQLite 浏览器,但它给出了错误“发生错误:文件不是 sqlite3 数据库”。

任何人都可以帮我解密加密的数据库文件。

或者我应该复制加密数据库文件并使用“info.guardianproject.database.sqlcipher.SQLiteDatabase”对其进行解密 并使用它来查看所有表。

谢谢,

米沙尔沙阿

4

5 回答 5

5

我通过从设备中提取数据库并对其进行解密来解决此问题。下面的脚本将生成一个解密的数据库文件。这个文件可以用 SQLite-viewer 打开。

解密.sh

#!/bin/bash
# Bashscript to decrypt databases

echo "pull db from device.."
adb pull /data/data/com.example/databases/database.db

echo "removing previous decrypted db, if existent.."
rm -r decrypted_database.db

echo "decrypting database.db into decrypted_database.db"
sqlcipher -line database.db 'PRAGMA key = "encryption_key";ATTACH DATABASE "decrypted_database.db" AS decrypted_database KEY "";SELECT sqlcipher_export("decrypted_database");DETACH DATABASE decrypted_database;'

应该在您的 PATH 中:

在脚本中替换:

  • com.example与您的包名
  • 名称为 databasefile 的database.db
  • 带加密密码的 encryption_key

注意:设备需要root

于 2014-09-11T19:15:20.330 回答
2

您需要使用包含 SQLCipher 扩展的 SQLite 实用程序。您可以在 Linux 上下载并构建 SQLCipher 代码,它应该为您提供一个sqlite3可用于访问数据库的实用程序(使用适当的PRAGMA语句来指定密码等)。

于 2013-03-13T11:30:27.920 回答
0

decrypt.sh脚本帮助了我一段时间。但过了一段时间,我发现SQLiteManager开始支持 SQLCipher 加密数据库。它有一个漂亮的用户界面。即使它不是免费的并且您仍然需要从设备中提取数据库文件,我认为尝试一下还是不错的。

于 2014-11-25T01:52:21.123 回答
0

在你的android应用程序代码之后

dbHelper.getReadableDatabase(dbKey); 数据库文件将被解密..通过将文件复制代码复制数据库文件写入一些外部sd卡文件路径并使用任何sqllite工具打开它

于 2015-02-11T10:38:08.697 回答
-1

Gnome 的 GDA 可以做到这一点。在这里下载。

于 2013-03-13T10:15:56.263 回答