C#写了一个窗体程序,可以转译kgtemp文件,却总是报毒,各位高人帮忙看看.

「已注销」 2017-09-29 04:55:20
解决方案链接:https://pan.baidu.com/s/1eSs3BpC
源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1//作者:小星星 QQ:2651016568 QQEmily:2651016568@qq.com
{
public partial class Form1 : Form
{
private string extension;
private string path;
private string paths = "G:\\转译文件";

public Form1()
{
InitializeComponent();
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;//设置拖动操作
}
private void TextBox1_TextChanged(object sender, EventArgs e)
{
paths = textBox1.Text;//输入保存路径给paths
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
path = (((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString());//获取拖动的文件路径
extension = Path.GetExtension(path);//获取指定路径的文件扩展名
if (Directory.Exists(path))//如果是文件夹
{
DirectoryInfo dinfo = new DirectoryInfo(path);//实例化一个DirectoryInfo对象
foreach (FileSystemInfo f in dinfo.GetDirectories())//获取子目录
{
if (f is DirectoryInfo)//如果是文件夹
{
MessageBox.Show(f.Name);//显示子目录名称
}
}
foreach (FileInfo fs in dinfo.GetFiles("*.kgtemp")) //查找.kgtemp文件
{
byte[] key = { 0xAC, 0xEC, 0xDF, 0x57 };
using (var input = new FileStream(path + '\\' + fs.Name, FileMode.Open, FileAccess.Read))//kgtemp文件的完整路径,两条斜杠是为了避免转义字符
{
string fss = System.Text.RegularExpressions.Regex.Replace(fs.Name, "[.kgtemp]", "");//去掉.kgtemp后缀名后赋值给fss
if (!Directory.Exists(paths))//如果没有该目录, 如果电脑没有G盘修改这里和输出文件那一行,改变保存路径
{
Directory.CreateDirectory(paths);//创建目录
}
var output = File.OpenWrite(paths + "\\" + fss + ".mp3");//输出文件:目录+去掉后缀名的文件名+.MP3后缀名
input.Seek(1024, SeekOrigin.Begin);//开始读取kgtemp文件,先跳过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);//转译方面代码来源:http://www.cnblogs.com/KMBlog/p/6877752.html 作者:孤心浪子
}
output.Close();
}
}
}
else
{
if (string.Equals(extension, ".kgtemp", StringComparison.CurrentCultureIgnoreCase))//如果后缀名是.kgtemp(不区分大小写的)
{
byte[] key = { 0xAC, 0xEC, 0xDF, 0x57 };
using (var input = new FileStream(path, FileMode.Open, FileAccess.Read))
{
string fz = path.Substring(path.LastIndexOf("\\") + 1);
//获取路径中的文件名(带后缀的) ,fz的值为 “----.kgtemp”
string fss = System.Text.RegularExpressions.Regex.Replace(fz, "[.kgtemp]", "");//去掉.kgtemp后缀名后赋值给fss
if (!Directory.Exists(paths))//如果没有该目录, 如果电脑没有G盘修改这里和输出文件那一行,改变保存路径
{
Directory.CreateDirectory(paths);//创建目录
}
var output = File.OpenWrite(paths + "\\" + fz + ".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();
}
}
else
{
MessageBox.Show(extension, "无效后缀名");
}
}
}

}
}


各位大佬帮忙看看
...全文
168 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧