web-dev-qa-db-fra.com

Comment décrypter un fichier de base de données crypté sqlcipher en ligne de commande?

La question est simple

Ce que j'ai est:

  • J'ai un fichier de base de données qui est crypté en utilisant sqlcipher. 
  • J'ai aussi j'ai le mot de passe qui a été utilisé pour chiffrer ce fichier db

Ce dont j'ai besoin, c'est:

  • J'ai besoin de déchiffrer le fichier de base de données / besoin d'un fichier de base de données non crypté/non crypté/décrypté.
11
Vinay Wadhwa

Téléchargez et construisez sqlcipher

--Skip ceci si sqlcipher est déjà installé

Extrait le code de https://github.com/sqlcipher/sqlcipher dans un répertoire (par exemple ~/sqlcipher).

mkdir ~/bld;        #  Build will occur in a sibling directory
cd ~/bld;           #  Change to the build directory
../sqlcipher/configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"; 
                    #configure sqlcipher 

make install;       #  Install the build products

Décrypter la base de données en une base de données en texte brut

$ cd ~/;
$ ./sqlcipher encrypted.db 
sqlite> PRAGMA key = 'testkey'; 
sqlite> ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';  -- empty key will disable encryption
sqlite> SELECT sqlcipher_export('plaintext'); 
sqlite> DETACH DATABASE plaintext; 

Recherchez la base de données déchiffrée sur ~/plaintext.db que vous pouvez utiliser avec n’importe quel navigateur sqlite tel que this .

Mise à jour: septembre 2015

http://sqlitebrowser.org supporte maintenant les bases de données sqlcipher. C'est chouette.

30
Vinay Wadhwa

Ce script shell décrypte une base de données SQLCipher appelée mydb.db et en crée une appelée mydb-decrypt.db. Les paramètres sont $ 1 = clé, $ 2, chemin d'accès en lecture et en écriture.

#!/bin/bash
echo "Decrypting $2 using key $1"
echo "PRAGMA key='$1';select count(*) from sqlite_master;ATTACH DATABASE '$2/mydb-decrypt.db' AS plaintext KEY '';SELECT sqlcipher_export('plaintext');DETACH DATABASE plaintext;" | sqlcipher $2/mydb.db
echo "Done."

Si vous vouliez faire cela en une seule ligne de commande, voici les entrailles:

echo "PRAGMA key='$1';select count(*) from sqlite_master;ATTACH DATABASE '$2/mydb-decrypt.db' AS plaintext KEY '';SELECT sqlcipher_export('plaintext');DETACH DATABASE plaintext;" | sqlcipher $2/mydb.db
10
brian6string

En me basant sur les réponses précédentes, j'ai une réponse complète. J'ai la configuration - version OS X - 10.10.4 Étapes: 1. Téléchargez et construisez le code OpenSSL:

$ curl -o openssl-1.0.0e.tar.gz https://www.openssl.org/source/openssl-1.0.0e.tar.gz
$ tar xzf openssl-1.0.0e.tar.gz
$ cd openssl-1.0.0e
$ ./Configure darwin64-x86_64-cc
$ make
  1. Téléchargez et construisez le code SQLCipher.

Dans un autre répertoire,

$ git clone https://github.com/sqlcipher/sqlcipher.git
$ cd sqlcipher

Remplacez '/path/to/libcrypto.a' dans la commande suivante par votre chemin

$ ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/path/to/libcrypto.a"
$ make
  1. Décrypter en base de données en texte brut (comme illustré dans le post précédent de Vinay)

    $ cd ~/;
    $ ./sqlcipher encrypted.db 
    sqlite> PRAGMA key = 'testkey'; 
    sqlite> ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';  -- empty key will disable encryption
    sqlite> SELECT sqlcipher_export('plaintext');
    sqlite> DETACH DATABASE plaintext;
    

Cela devrait vous aider à déchiffrer le fichier crypté ...

2
GhostCode

Utiliser SQliteStudio

 SqliteStudio

Sélectionnez SQLiteChiper et entrez le mot de passe ..__ La base de données sera ouverte.

0
Samet öztoprak