吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7380|回复: 30
收起左侧

[其他转载] 微信 DAT 图片解密 (C#)

   关闭 [复制链接]
chenhahacjl 发表于 2021-9-7 11:42

图片加密原理介绍

Windows 电脑版本微信通过一定的算法,计算出每个系统独一无二的 KEY(一个 byte 大小)。再通过计算出来的 KEY,对图片文件进行异或操作,生成加密的DAT文件。
.DAT文件 = KeyGen(system) ^ 图片文件

解密原理介绍

我们循环用 0x01 - 0xFF 对加密的 DAT 文件进行异或操作,再通过常用图片的文件头与其进行比较,获取到本机的 KEY。最后通过计算获得的 KEY,对图片文件进行解密。

常用图片文件文件头

    JPEG 0xFF, 0xD8, 0xFF
     PNG 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A
     BMP 0x42, 0x4D
     GIF 0x47, 0x49, 0x46, 0x38, 0x39, 0x610x47, 0x49, 0x46, 0x38, 0x37, 0x61
    TIFF 0x49, 0x49, 0x2A, 0x000x4D, 0x4D, 0x2A, 0x00

文件类型检测关键代码

    switch (data[0])
    {
        case 0XFF:  //byte[] jpg = new byte[] { 0xFF, 0xD8, 0xFF };
        {
            if (data[1] == 0xD8 && data[2] == 0xFF)
            {
                return ".jpg";
            }
            break;
        }
        case 0x89:  //byte[] png = new byte[] { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A };
        {
            if (data[1] == 0x50 && data[2] == 0x4E && data[7] == 0x0A)
            {
                return ".png";
            }
            break;
        }
        case 0x42:  //byte[] bmp = new byte[] { 0x42, 0x4D };
        {
            if (data[1] == 0X4D)
            {
                return ".bmp";
            }
            break;
        }
        case 0x47:  //byte[] gif = new byte[] { 0x47, 0x49, 0x46, 0x38, 0x39(0x37), 0x61 };
        {
            if (data[1] == 0x49 && data[2] == 0x46 && data[3] == 0x38 && data[5] == 0x61)
            {
                return ".gif";
            }
            break;
        }
        case 0x49:  // byte[] tif = new byte[] { 0x49, 0x49, 0x2A, 0x00 };
        {
            if (data[1] == 0x49 && data[2] == 0x2A && data[3] == 0x00)
            {
                return ".tif";
            }
            break;
        }
        case 0x4D:  //byte[] tif = new byte[] { 0x4D, 0x4D, 0x2A, 0x00 };
        {
            if (data[1] == 0x4D && data[2] == 0x2A && data[3] == 0x00)
            {
                return ".tif";
            }
            break;
        }
    }

    return ".dat";

密钥计算关键代码

    for (byte key = 0x01; key < 0xFF; key++)
    {
        byte[] buf = new byte[8];
        raw.CopyTo(buf, 0);

        if (CheckFileType(ConvertData(buf, key)) != ".dat")
        {
            return key;
        }
    }

数据异或关键代码

    for (int i = 0; i < data.Length; i++)
    {
        data[i] ^= key;
    }

WeChatDatFileDecode.zip

4.31 KB, 下载次数: 351, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 4吾爱币 +10 热心值 +4 收起 理由
ly859660081 + 1 + 1 谢谢@Thanks!
Reer + 1 + 1 热心回复!
旧念何挽 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| chenhahacjl 发表于 2021-11-24 08:44
mmmmmsw 发表于 2021-11-23 22:07
您好,下载了,不知道如何使用,请问能讲解下吗(为了附件注册的网站,完全小白,求指导)

用Visual Studio编译,运行。
 楼主| chenhahacjl 发表于 2021-9-7 17:04
鸭子咯咯哒~ 发表于 2021-9-7 16:28
这个解密算法是怎么找出来的开头那句

.DAT文件 = KeyGen(system) ^ 图片文件

百度出来的。
lsz2253551761 发表于 2021-9-7 14:15
limit7 发表于 2021-9-7 14:32
这个支持,感谢分享~
xjkonglong 发表于 2021-9-7 14:46
牛逼啊,膜拜!!!
卿出于兰 发表于 2021-9-7 14:55
小而精悍吗?
glces 发表于 2021-9-7 15:31
这个牛逼了啊,感谢分享
biostu 发表于 2021-9-7 15:50
学习了,谢谢。
k288 发表于 2021-9-7 15:52
没看明白怎样解密,只能评论个666了
szhanyutian 发表于 2021-9-7 16:12
谢谢分享,学习学习
tzdjz 发表于 2021-9-7 16:14
从没有发现过
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-17 16:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表