Как расшифровать зашифрованный файл базы данных 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
- Загрузите и создайте код 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
-
Расшифровать базу данных открытого текста (как показано в предыдущем сообщении от 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 и введите пароль. База данных будет открыта.