2012-10-10 18 views
5

Penso che questa domanda sia stata fatta, tuttavia ho provato diversi esempi inutilmente. Il mio problema è questo ... Ho una configurazione app Android per utilizzare la crittografia SQLCipher DB, che funziona bene, sul dispositivo.Android con SQLCipher - come si può decodificare?

In test su un emulatore, se si scarica il file di database utilizzando il DDMS, come faccio a leggere quel file per controllare tabelle e dati? Ho provato a utilizzare la shell dei comandi per SQLite3 e gli esempi ATTACH, tuttavia ogni volta che lo faccio, viene visualizzato il seguente messaggio "Errore: il file è crittografato o non è un database". Ciò dimostra sicuramente che la ENCRYPT funziona, ma come faccio a DECURARE correttamente all'esterno dell'emulatore/eclissi?

Ho bisogno di un client SQLite diverso? Qualcun altro si blocca su questo?

ho un utilizzando: SQLCipher per Android 2.0.8 06/14/2012

Qualsiasi aiuto? Grazie

+0

E che cosa stai usando sul computer di sviluppo? – CommonsWare

+0

Come per cercare di leggere il file crittografato o per lo sviluppo di Android? Ho provato SQLiteStudio v2.0.28/SQLite command shell 3.7.14.1/e SQLite Manager per Firefox. Dev. l'ambiente è Eclipse Juno, con targeting Android min. API 8 per Android 2.2. – Hunter23

+0

E qualcuno di loro annuncia di avere il supporto SQLCipher? – CommonsWare

risposta

3

Gli strumenti "normali" di SQLite non includono SQLCipher.

È necessario download il souce e compile it yourself ottenere una shell di comando con supporto SQLCipher.

+0

Ah, per essere chiari - la versione "Community" può essere aggiunta ad Android progettare e lavorare bene nel progetto; tuttavia per integrarsi in un client SQLite è necessario acquistare la versione "Commerciale" per la compilazione di questi binari?Oppure la versione 'Community' può essere compilata nella shell esistente? – Hunter23

+0

Aggiunta: grazie per il link di compilazione, lavorerò su questo per vedere se riesco a farlo funzionare. Fin qui sembra quello di cui ho bisogno. Tanto per avere una soluzione rapida/facile disponibile. Aggiungerò un commento se rimango bloccato. Grazie!!! – Hunter23

3

Ho risolto questo problema utilizzando questo piccolo script.

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

Questi programmi devono essere aggiunti al vostro PATH:

Sostituire nello script:

  • com.example con il packagename
  • database.db con nome DatabaseFile
  • encryption_key con password di crittografia
Problemi correlati