2012-10-10 10 views
5

Ich denke, diese Frage wurde gestellt, jedoch habe ich einige der Beispiele vergeblich versucht. Mein Problem ist dies ... Ich habe ein Android-App-Setup zur Verwendung der SQLCipher DB-Verschlüsselung, die auf dem Gerät funktioniert.Android mit SQLCipher - wie können Sie entschlüsseln?

Beim Testen auf einem Emulator, wenn ich die Datenbankdatei mit dem DDMS herunterlade, wie lese ich diese Datei, um Tabellen und Daten zu überprüfen? Ich habe versucht, die Befehlsshell für SQLite3 und die ATTACH-Beispiele zu verwenden, aber jedes Mal, wenn ich dies tue, bekomme ich nur die folgende Meldung "Fehler: Datei ist verschlüsselt oder keine Datenbank". Das zeigt sicherlich, dass die ENCRYPT funktioniert, aber wie mache ich mich richtig außerhalb des Emulators/der Eclipse?

Benötige ich einen anderen SQLite-Client? Sonst bleibt jemand dran hängen?

ich mit: SQLCipher für Android 2.0.8 06/14/2012

Jede Hilfe? Danke

+0

Und was Sie auf Ihrer Entwicklungsmaschine? – CommonsWare

+0

Wie in versuchen, die verschlüsselte Datei oder für die Android-Entwicklung zu lesen? Ich habe versucht SQLiteStudio v2.0.28/SQLite Befehlsshell 3.7.14.1/und SQLite Manager für Firefox. Entwickler Umgebung ist Eclipse Juno, Android min Ziel. API 8 für Android 2.2. – Hunter23

+0

Und werben diese, dass sie SQLCipher Unterstützung haben? – CommonsWare

Antwort

3

Die "normalen" SQLite-Tools enthalten SQLCipher nicht.

Sie müssen download die souce und compile it yourself, um eine Befehls-Shell mit SQLCipher Unterstützung zu erhalten.

+0

Ah, um klar zu sein - die 'Community' Version kann in ein Android hinzugefügt werden Projekt und Arbeit gut innerhalb des Projekts; Um jedoch in einen SQLite-Client zu integrieren, müssten Sie die "kommerzielle" Version für die zu kompilierenden Binärdateien kaufen.Oder kann die Community-Version in die bestehende Shell integriert werden? – Hunter23

+0

Zusatz: Danke für den Compile-Link, ich werde das durcharbeiten, um zu sehen, ob ich das funktioniert. So weit sieht das aus, was ich brauche. So viel zu einer schnellen/einfachen Lösung. Ich werde einen Kommentar hinzufügen, wenn ich nicht weiterkomme. Vielen Dank!!! – Hunter23

3

Ich löste dies mit diesem kleinen Skript.

decrypt.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;' 

Diese Programme sollten zu Ihrer PATH hinzugefügt werden:

in Skript ersetzen:

  • com.example mit Ihrem Paket
  • database.db mit Namen Database
  • encryption_key mit Verschlüsselungskennwort