java - 如何解密 Whatsapp 数据库文件?

标签 java database encryption whatsapp

我试图用 java 解密 Whatsapp 数据库文件 (msgstore.db.crypt)。

我找到了一些 python 代码并尝试用 java 做同样的事情。可能这不是一件难事,但我在处理解密 key 时遇到了一些问题。

但最终还是做到了。所以我想把代码分享给需要的人。

最佳答案

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;


public class Crypto {

    public FileInputStream mIn;
    public FileOutputStream mOut;
    public Crypto(String fileIn, String fileOut) {
        try {
                mIn = new FileInputStream(new File(fileIn));
                mOut = new FileOutputStream(new File(fileOut));
                decryptAES(mIn, mOut);
        } catch (Exception e) {
                e.printStackTrace();
        }
    }

    public static void decryptAES(InputStream in, FileOutputStream out) throws Exception {
        final String string = "346a23652a46392b4d73257c67317e352e3372482177652c";
        byte[] hexAsBytes = DatatypeConverter.parseHexBinary(string);

        SecretKeySpec keySpec = new SecretKeySpec(hexAsBytes, "AES");
        Cipher cipher = Cipher.getInstance("AES"); 

        cipher.init(Cipher.DECRYPT_MODE, keySpec);

        in = new CipherInputStream(in, cipher);
        byte[] buffer = new byte[24]; 
        int bytesRead;
        while ((bytesRead = in.read(buffer)) != -1)
        {
            out.write(buffer, 0, bytesRead);
        }

    }


    public static void main(String[] args){    
        Crypto c = new Crypto("C:\\msgstore.db.crypt", "D:\\WhatsappDb");
        System.out.println("Decrypting Done");
    }
}

关于java - 如何解密 Whatsapp 数据库文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314416/

相关文章:

database - 并行打开数据库连接

Android Studio - 生成发布 apk "Error finalising cipher"

python - 大消息RSA加密和解密不正确

java - 带有 Map/Set 对象图的奇怪 equals() 结果

java - SQL 列索引超出范围 spring-security

Java - 从预先设计的形状中选择随机形状

mysql - 使用户成为root

java - DAO & BO(数据访问层)——架构

java - Mysql数据库中的日期时间类型

php - 困境,在没有其他信息已知的情况下搜索散列字段