酷狗音乐盒 krc 格式文件 解包

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;

namespace krcdec
{
	class KRC : IDisposable
	{

		//异或加密 密钥
		public static char[] EncKey = { '@', 'G', 'a', 'w', '^', '2', 't', 'G', 'Q', '6', '1', '-', 'Î', 'Ò', 'n', 'i' };


		FileStream fs = null;

		//头部4字节
		byte[] HeadBytes;

		//异或加密内容
		byte[] EncodedBytes;

		//解异或加密后ZIP数据
		byte[] ZipBytes;

		//UNZIP后数据
		byte[] UnzipBytes;


		public KRC()
		{
			
		}

		public string Decode(string FilePath)
		{

			fs = new FileStream(FilePath, FileMode.Open);

			HeadBytes = new byte[4];
			EncodedBytes = new byte[fs.Length];
			ZipBytes = new byte[fs.Length];

			fs.Read(HeadBytes, 0, 4);

			fs.Read(EncodedBytes, 0, (int)(fs.Length));

			int EncodedBytesLength = EncodedBytes.Length;

			for (int i = 0; i < EncodedBytesLength; i++)
			{
				int l = i % 16;

				ZipBytes[i] = (byte)(EncodedBytes[i] ^ EncKey[l]);
			}
			UnzipBytes = unzipFileStream(ZipBytes);
			string s = Encoding.UTF8.GetString(UnzipBytes);
			return s;
		}


		byte[] unzipFileStream(byte[] data)
		{
			Inflater inf = new Inflater(false);
			Deflater def = new Deflater();




			MemoryStream memoryStream = new MemoryStream();
			byte[] buffer = new byte[1024];
			int buffer_len = 0;
			using (InflaterInputStream input = new InflaterInputStream(new MemoryStream(data), inf))
			{
				do
				{
					buffer_len = input.Read(buffer, 0, buffer.Length);
					memoryStream.Write(buffer, 0, buffer_len);
					input.Flush();
				}
				while (buffer_len > 0);

				input.Close();
			}

			memoryStream.Close();
			buffer = null;
			return memoryStream.ToArray();
		}



		public void Dispose()
		{
			fs.Close();
		}

		public void GetDateTime()
		{
		}


	}
}


项目文件 http://files.cnblogs.com/binsys/110801krcdec.rar

转载于:https://www.cnblogs.com/binsys/articles/2124157.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值