• 【Tools】将微信DAT图片加密文件转化为图片


     var path = @"E:68b2dab36844e760f17f4cde1d9742fb.dat";
                byte[] byteArray = FileBinaryConvertHelper.File2Bytes(path);
    
                Dictionary<byte, string> keyValuePairs = new Dictionary<byte, string>();
                keyValuePairs.Add(0xFF, "jpg");
                keyValuePairs.Add(0x89, "png");
                keyValuePairs.Add(0x47, "gif");
    
                byte sc = new byte();
                byte tsc = new byte();
                if ((byteArray[0] ^ 0xFF) == (byteArray[1] ^ 0xD8))
                {
                    tsc = 0xFF;
                    sc = BitConverter.GetBytes(byteArray[0] ^ 0xFF)[0];
                }
    
                if ((byteArray[0] ^ 0x89) == (byteArray[1] ^ 0x50))
                {
                    tsc = 0x89;
                    sc = BitConverter.GetBytes(byteArray[0] ^ 0x89)[0];
                }
    
                if ((byteArray[0] ^ 0x47) == (byteArray[1] ^ 0x49))
                {
                    tsc = 0x47;
                    sc = BitConverter.GetBytes(byteArray[0] ^ 0x47)[0];
                }
    
                var lsNewbyte = new List<byte>();
                foreach (var item in byteArray)
                {
                    var newByte = BitConverter.GetBytes(item ^ sc);
                    lsNewbyte.Add(newByte[0]);
                }
                var newByteArray = lsNewbyte.ToArray();
    
                FileBinaryConvertHelper.Bytes2File(newByteArray, $@"E:pp.{keyValuePairs[tsc]}");
     public class FileBinaryConvertHelper
        {
            public static byte[] File2Bytes(string path)
            {
                if (!System.IO.File.Exists(path))
                {
                    return new byte[0];
                }
    
                FileInfo fi = new FileInfo(path);
                byte[] buff = new byte[fi.Length];
    
                FileStream fs = fi.OpenRead();
                fs.Read(buff, 0, Convert.ToInt32(fs.Length));
                fs.Close();
    
                return buff;
            }
    
            public static void Bytes2File(byte[] buff, string savepath)
            {
                if (System.IO.File.Exists(savepath))
                {
                    System.IO.File.Delete(savepath);
                }
    
                FileStream fs = new FileStream(savepath, FileMode.CreateNew);
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(buff, 0, buff.Length);
                bw.Close();
                fs.Close();
            }
        }
  • 相关阅读:
    java 集合框架
    java 迭代器遍历List Set Map
    java 容器 List
    OpenLayer4实现卷帘效果
    python结合百度api进行地理编码和爬取POI点
    ArcGIS API For JS空间参考系的浅析
    OpenLayer4加载svg
    OpenLayer3动态点线和动态点的扩散实现
    LeaFlet学习之地图文字标注
    装饰器设计模式
  • 原文地址:https://www.cnblogs.com/xuxml/p/13946816.html
Copyright © 2020-2023  润新知