吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6592|回复: 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, 0x61 或 0x47, 0x49, 0x46, 0x38, 0x37, 0x61
    TIFF 0x49, 0x49, 0x2A, 0x00 或 0x4D, 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, 下载次数: 324, 下载积分: 吾爱币 -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, 2024-11-22 21:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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