Tar*_*nfx 27
Whatsapp将所有消息存储在加密数据库(pyCrypt)中,这很容易使用Python进行解密.
您可以在Android,iPhone,Blackberry上轻松获取此数据库并将其转储到html文件中.以下是完整说明:在Android,iPhone,Blackberry上阅读,提取WhatsApp消息备份
免责声明:我研究并撰写了这篇广泛的指南.
ama*_*Bit 17
一旦你有权访问dbcrypt5文件,这里是解密它的android代码:
private byte[] key = { (byte) 141, 75, 21, 92, (byte) 201, (byte) 255,
(byte) 129, (byte) 229, (byte) 203, (byte) 246, (byte) 250, 120,
25, 54, 106, 62, (byte) 198, 33, (byte) 166, 86, 65, 108,
(byte) 215, (byte) 147 };
private final byte[] iv = { 0x1E, 0x39, (byte) 0xF3, 0x69, (byte) 0xE9, 0xD,
(byte) 0xB3, 0x3A, (byte) 0xA7, 0x3B, 0x44, 0x2B, (byte) 0xBB,
(byte) 0xB6, (byte) 0xB0, (byte) 0xB9 };
long start = System.currentTimeMillis();
// create paths
backupPath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/WhatsApp/Databases/msgstore.db.crypt5";
outputPath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/WhatsApp/Databases/msgstore.db.decrypt";
File backup = new File(backupPath);
// check if file exists / is accessible
if (!backup.isFile()) {
Log.e(TAG, "Backup file not found! Path: " + backupPath);
return;
}
// acquire account name
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
if (accounts.length == 0) {
Log.e(TAG, "Unable to fetch account!");
return;
}
String account = accounts[0].name;
try {
// calculate md5 hash over account name
MessageDigest message = MessageDigest.getInstance("MD5");
message.update(account.getBytes());
byte[] md5 = message.digest();
// generate key for decryption
for (int i = 0; i < 24; i++)
key[i] ^= md5[i & 0xF];
// read encrypted byte stream
byte[] data = new byte[(int) backup.length()];
DataInputStream reader = new DataInputStream(new FileInputStream(
backup));
reader.readFully(data);
reader.close();
// create output writer
File output = new File(outputPath);
DataOutputStream writer = new DataOutputStream(
new FileOutputStream(output));
// decrypt file
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec secret = new SecretKeySpec(key, "AES");
IvParameterSpec vector = new IvParameterSpec(iv);
cipher.init(Cipher.DECRYPT_MODE, secret, vector);
writer.write(cipher.update(data));
writer.write(cipher.doFinal());
writer.close();
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "Could not acquire hash algorithm!", e);
return;
} catch (IOException e) {
Log.e(TAG, "Error accessing file!", e);
return;
} catch (Exception e) {
Log.e(TAG, "Something went wrong during the encryption!", e);
return;
}
long end = System.currentTimeMillis();
Log.i(TAG, "Success! It took " + (end - start) + "ms");
Run Code Online (Sandbox Code Playgroud)
由于WhatsApp付出了一些努力来改进他们的加密系统,因此获取数据并不那么容易.随着WhatsApp的更新版本,它不再可能使用adb backup.应用程序可以拒绝备份,WhatsApp客户端可以做到这一点.如果您碰巧有root电话,可以使用root shell获取未加密的数据库文件.
如果你没有root,如果你有一个旧的WhatsApp APK,你仍然可以解密数据.找到仍允许备份的版本.然后,您可以备份应用程序的数据文件夹,其中包含一个名为的加密密钥key.
现在您需要加密的数据库.使用您选择的文件浏览器,或者,如果您更喜欢命令行,请使用adb:
adb pull /sdcard/WhatsApp/Databases/msgstore.db.crypt12
Run Code Online (Sandbox Code Playgroud)
使用这两个文件,您现在可以使用https://gitlab.com/digitalinternals/whatsapp-crypt12来获取纯文本数据库.不再可能使用Linux板工具,openssl因为WhatsApp似乎使用Spongy Castle API的修改版本进行openssl不理解的加密.
由于whatsapp现在使用crypt7格式,因此不再容易获取和解密数据库.有一种使用ADB和USB调试的工作方法.
您可以通过ADB获取加密密钥并解密存储在/ sdcard上的消息数据库,或者只是通过ADB备份获得数据库的普通版本,这似乎是更容易的选择.
要获取数据库,请执行以下操作:
将Android手机连接到电脑.现在跑
adb backup -f whatsapp_backup.ab -noapk com.whatsapp
Run Code Online (Sandbox Code Playgroud)
备份WhatsApp在其私人文件夹中创建的所有文件.
您将使用带有一些ADB标头的tar格式获取zlib压缩文件.我们需要首先摆脱这些标题,因为它们混淆了解压缩命令:
dd if=whatsapp_backup.ab ibs=1 skip=24 of=whatsapp_backup.ab.nohdr
Run Code Online (Sandbox Code Playgroud)
该文件现在可以解压缩:
cat whatsapp_backup.ab.nohdr | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" 1> whatsapp_backup.tar
Run Code Online (Sandbox Code Playgroud)
此命令运行Python并使用zlib将文件解压缩到whatsapp_backup.tar
现在我们可以解析该文件:
tar xf whatsapp_backup.tar
Run Code Online (Sandbox Code Playgroud)
存档现在被解压缩到您当前的工作目录,您可以在apps/com.whatsapp/db /中找到数据库(msgstore.db和wa.db).
您只能以我认为的root用户身份访问位于SD卡上的WhatsApp数据库.如果你打开"\ data\data\com.whatsapp",你会看到"数据库"链接到"\ firstboot\sqlite\com.whatsapp \"
| 归档时间: |
|
| 查看次数: |
131802 次 |
| 最近记录: |