Как расшифровать зашифрованный файл базы данных sqlcipher в командной строке?

Вопрос прост

У меня есть:

  • У меня есть файл базы данных, который зашифрован, используя sqlcipher.
  • У меня также есть парольная фраза, которая была использована для шифрования этого файла db

Что мне нужно:

  • Мне нужно расшифровать файл базы данных/нужен файл базы данных, который не зашифрован/не зашифрован/расшифрован.

Ответ 1

Загрузка и сборка sqlcipher

- Пропустить это, если уже установлен sqlcipher

Вытяните код из https://github.com/sqlcipher/sqlcipher в каталог (скажем ~/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

Расшифровать базу данных в базе данных открытого текста

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

Найдите дешифрованную базу данных в ~/plaintext.db, которую вы можете использовать с любым браузером sqlite, например this.

Обновление: сентябрь 2015

http://sqlitebrowser.org теперь поддерживает базы данных sqlcipher. Это аккуратно.

Ответ 2

Эта оболочка script расшифрует базу данных SQLCipher с именем mydb.db и создаст ее под названием mydb-decrypt.db. Парамы - это $1 = ключ, $2, путь для чтения и записи.

#!/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."

Если вы хотите сделать это в одной командной строке, это будет следующим образом:

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

Ответ 3

Основываясь на предыдущих ответах, у меня есть исчерпывающий ответ. У меня есть версия конфигурации OS X - 10.10.4 Шаги: 1. Погрузите и создайте код 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. Загрузите и создайте код SQLCipher.

В другом каталоге

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

Измените '/path/to/libcrypto.a' в следующей команде на ваш путь

$ ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/path/to/libcrypto.a"
$ make
  1. Расшифровать базу данных открытого текста (как показано в предыдущем сообщении от 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;
    

Tis должен помочь вам расшифровать зашифрованный файл...

Ответ 4

Пользователь SQliteStudio

SqliteStudio

Выберите SQLiteChiper и введите пароль. База данных будет открыта.