• 酷狗.kgtemp文件加密算法逆向


    该帖转载于孤心浪子--http://www.cnblogs.com/KMBlog/p/6877752.html

    酷狗音乐上的一些歌曲是不能免费下载的,然而用户仍然可以离线试听,这说明有缓存文件,并且极有可能被加密了.

    解密算法:

    class Program
    {
      static void Main(string[] args)
      {

        byte[] key={0xAC,0xEC,0xDF,0x57};
        using (var input = new FileStream(@"E:KuGouTemp***.kgtemp", FileMode.Open, FileAccess.Read))
        {
          var output = File.OpenWrite(@"E:KuGou***.mp3");//输出文件
          input.Seek(1024, SeekOrigin.Begin);//跳过1024字节的包头
          byte[] buffer = new byte[key.Length];
          int length;
          while((length=input.Read(buffer,0,buffer.Length))>0)
          {
            for(int i=0;i<length;i++)
            {
              var k = key[i];
              var kh = k >> 4;
              var kl = k & 0xf;
              var b = buffer[i];
              var low = b & 0xf ^ kl;//解密后的低4位
              var high = (b >> 4) ^ kh ^ low & 0xf;//解密后的高4位
              buffer[i] = (byte)(high << 4 | low);
            }
            output.Write(buffer, 0, length);
          }
          output.Close();
        }
        Console.WriteLine("按任意键退出...");
        Console.ReadKey();
      }
    }

    结果:输出文件的MD5与缓存文件名相同,大功告成

    总结

    固定要异或的key={0xAC,0xEC,0xDF,0x57}

    加密方式如下:

    1.设输入的数为x,输出结果为y,循环变量为i;

    2.分别取x的高4位和低4位h,l;  h=x >> 4 ; l=x & 0xf;

    3.分别取key[i]的高4位和低4位kh,kl;kh=key[i] >> 4;kl=key[i] & 0xf;

    4.y=h ^ l ^ kh;

    5.y=y<< 4 | (l ^ kl);

    解密方式如下:

    1.设输入的数为x,输出结果为y,循环变量为i;

    2.分别取x的高4位和低4位h,l;h=x >> 4 ; l=x & 0xf;

    3.分别取key[i]的高4位和低4位kh,kl;kh=key[i] >> 4;kl=key[i] & 0xf;

    4.y=l ^ kl;

    5.y=(h ^ kh ^ y)<<4 | y;

  • 相关阅读:
    Eclipse配置Maven私服
    ubuntu下使用Nexus搭建Maven私服
    Ubuntu系统的Redis安装配置
    centos7.6安装dpdk-stable-19.11.10
    微软的分布式应用框架 Dapr Helloworld
    Caddy源码阅读(二)启动流程与 Event 事件通知
    Caddy源码阅读(一)Run详解
    Caddy 源码全解析
    假装前端工程师(一)Icework + GitHub pages 快速构建可自定义迭代开发的 react 网站
    caddy & grpc(3) 为 caddy 添加一个 反向代理插件
  • 原文地址:https://www.cnblogs.com/develon/p/7001154.html
Copyright © 2020-2023  润新知