Exemple #1
0
        /// <summary>
        /// 解密nets试卷
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_decode_Click(object sender, EventArgs e)
        {
            string tempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_nets_paper");

            FileHelper.DeleteFolder(tempPath);
            Directory.CreateDirectory(tempPath);

            if (!File.Exists(filePaper) || !File.Exists(fileCode))
            {
                MessageBox.Show("请选择试卷包和授权码!");
                return;
            }
            //1、复制源文件到临时目录
            string filePaperTemp = Path.Combine(tempPath, new FileInfo(filePaper).Name);
            string fileCodeTemp  = Path.Combine(tempPath, new FileInfo(fileCode).Name);

            FileHelper.FileCopy(filePaper, filePaperTemp, true);
            FileHelper.FileCopy(fileCode, fileCodeTemp, true);

            //2、固定密码解密otp,并解压
            string paperTemp = tempPath + "\\paperTemp";
            int    result1   = SecModule.FileVerify(PWD, filePaperTemp);

            FileCompress.DecompressFile(filePaperTemp, paperTemp, PWD, null);

            //3、固定密码解密osqm,并解压
            string codeTemp = tempPath + "\\codeTemp";
            int    result2  = SecModule.FileVerify(PWD, fileCodeTemp);

            FileCompress.DecompressFile(fileCodeTemp, codeTemp, PWD, null);

            //4、授权码解密试卷包,并解压
            string sqmm = XmlHelper.Read(codeTemp + "\\Codeinfo.xml", "CodeInfo/CodeData/sqmm", "");

            FileInfo[] fileList = new DirectoryInfo(paperTemp).GetFiles();
            foreach (FileInfo fi in fileList)
            {
                if (fi.Extension.Equals(".zip"))
                {
                    int a = SecModule.FileVerify(sqmm, fi.FullName);
                    FileCompress.DecompressFile(fi.FullName, paperTemp, PWD, null);
                }
            }

            //5、固定密码解密kjs,并解压
            string kjsForder = "";

            fileList = new DirectoryInfo(paperTemp).GetFiles();
            foreach (FileInfo fi in fileList)
            {
                if (fi.Extension.Equals(".kjs"))
                {
                    int result3 = SecModule.FileVerify(PWD, fi.FullName);
                    kjsForder = paperTemp + "\\" + fi.Name.Replace(".kjs", "");
                    FileCompress.DecompressFile(fi.FullName, kjsForder, PWD, null);
                }
            }

            ShowPaper(paperTemp + "\\PaperInfo.xml");
        }
Exemple #2
0
        /// <summary>
        /// 修改Spoken试卷包xml
        /// </summary>
        /// <param name="kjsForder"></param>
        private void editSpokenPaper(string kjsForder, string sqmm, PaperEntity pe)
        {
            //修改paper.xml
            FileInfo[] filePaperXmlList = new DirectoryInfo(kjsForder).GetFiles("paper.xml");
            FileInfo   filePaperXml     = filePaperXmlList[0];

            //修改试卷代码
            XmlHelper.Update(filePaperXml.FullName, "/Paper/PaperInfo/PaperNO", "", pe.paperNo);

            //修改试卷小题代码
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(filePaperXml.FullName);
                XmlElement  xe  = doc.SelectSingleNode("/Paper/QuestionList") as XmlElement;
                XmlNodeList xnl = xe.ChildNodes;
                int         i   = 0;
                foreach (XmlNode xn in xnl)
                {
                    XmlNode    xnQuestionNO = xn.SelectSingleNode("QuestionNO");
                    XmlElement xe01         = (XmlElement)xnQuestionNO;
                    xe01.InnerText = pe.questionNo[i];
                    doc.Save(filePaperXml.FullName);
                    i++;
                }

                //压缩加密spoken试卷包
                DirectoryInfo di       = new DirectoryInfo(kjsForder);
                string        saveFile = txt_save.Text.Trim() + "\\" + di.Name + ".ksj";
                //压缩ksj
                FileCompress.CompressFiles(kjsForder, saveFile, SPOKENPWD, null, true);
                //固定密码加密kjs
                int result3 = SecModule.FileVerify(SPOKENPWD, saveFile);


                //第二次压缩成zip
                string saveFile1 = saveFile.Replace(".ksj", ".zip");
                FileCompress.CompressFiles(saveFile, saveFile1, SPOKENPWD, null, true);
                //授权码加密zip
                int result2 = SecModule.FileVerify(sqmm, saveFile1);

                //第三压缩成zip
                string saveFile2 = saveFile.Replace(".ksj", ".zip");

                FileCompress.CompressFiles(saveFile1, txt_save.Text.Trim(), SPOKENPWD, null, true);
                //授权码加密zip
                //int result2 = SecModule.FileVerify(sqmm, saveFile1);
            }
            catch { }
        }
Exemple #3
0
        /// <summary>
        /// 解压nets试卷包
        /// </summary>
        /// <param name="filePaper"></param>
        /// <param name="fileCode"></param>
        /// <param name="tempPath"></param>
        private void unZipNetsPaper(FileInfo[] netsPaperFileList)
        {
            string tempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "netsTemp");

            FileHelper.DeleteFolder(tempPath);
            Directory.CreateDirectory(tempPath);

            foreach (FileInfo f in netsPaperFileList)
            {
                string filePaper = f.FullName;
                string fileCode  = filePaper.Replace(".otp", ".osqm");
                if (f.Extension.Equals(".otp"))
                {
                    //1、复制源文件到临时目录
                    string filePaperTemp = Path.Combine(tempPath, new FileInfo(filePaper).Name);
                    string fileCodeTemp  = Path.Combine(tempPath, new FileInfo(fileCode).Name);
                    FileHelper.FileCopy(filePaper, filePaperTemp, true);
                    FileHelper.FileCopy(fileCode, fileCodeTemp, true);

                    //2、固定密码解密otp,并解压
                    string fileName  = f.Name.Replace(".otp", "");
                    string paperTemp = tempPath + "\\paperTemp\\" + fileName;
                    int    result1   = SecModule.FileVerify(NETSPWD, filePaperTemp);
                    FileCompress.DecompressFile(filePaperTemp, paperTemp, NETSPWD, null);

                    //3、固定密码解密osqm,并解压
                    string codeTemp = tempPath + "\\codeTemp\\" + fileName;
                    int    result2  = SecModule.FileVerify(NETSPWD, fileCodeTemp);
                    FileCompress.DecompressFile(fileCodeTemp, codeTemp, NETSPWD, null);

                    //4、授权码解密试卷包,并解压
                    string     sqmm     = XmlHelper.Read(codeTemp + "\\Codeinfo.xml", "CodeInfo/CodeData/sqmm", "");
                    FileInfo[] fileList = new DirectoryInfo(paperTemp).GetFiles();
                    foreach (FileInfo fi in fileList)
                    {
                        if (fi.Extension.Equals(".zip"))
                        {
                            int a = SecModule.FileVerify(sqmm, fi.FullName);
                            FileCompress.DecompressFile(fi.FullName, paperTemp, NETSPWD, null);
                        }
                    }

                    //5、固定密码解密kjs,并解压
                    string kjsForder = "";
                    fileList = new DirectoryInfo(paperTemp).GetFiles();
                    foreach (FileInfo fi in fileList)
                    {
                        if (fi.Extension.Equals(".kjs"))
                        {
                            int result3 = SecModule.FileVerify(NETSPWD, fi.FullName);
                            kjsForder = paperTemp + "\\" + fi.Name.Replace(".kjs", "");
                            FileCompress.DecompressFile(fi.FullName, kjsForder, NETSPWD, null);

                            //提取nets试卷xml中数据
                            FileInfo[]  filePaperXmlList = new DirectoryInfo(paperTemp).GetFiles("PaperInfo.xml");
                            FileInfo    filePaperXml     = filePaperXmlList[0];
                            XmlElement  xe  = XmlHelper.GetXmlElement(filePaperXml.FullName, "/PaperInfo/PaperList");
                            XmlNodeList xnl = xe.ChildNodes;
                            PaperEntity pe  = new PaperEntity();;
                            foreach (XmlNode xn in xnl)
                            {
                                pe.paperNo = xn.SelectSingleNode("sjdm").InnerText;
                            }

                            XmlElement    xe1   = XmlHelper.GetXmlElement(filePaperXml.FullName, "/PaperInfo/ItemList");
                            XmlNodeList   xnl1  = xe1.ChildNodes;
                            List <string> lists = new List <string>();
                            foreach (XmlNode xn1 in xnl1)
                            {
                                lists.Add(xn1.SelectSingleNode("xtdm").InnerText);
                            }
                            pe.questionNo = lists;

                            listPaperEntity.Add(pe);
                        }
                    }
                }

                //DoPaper(paperTemp + "\\PaperInfo.xml", kjsForder + "\\js\\requestData.json");
            }
        }
Exemple #4
0
        private void button1_Click(object sender, EventArgs e)
        {
            string stuTemp = "C:\\stuTemp";

            FileHelper.DeleteFolder(stuTemp);
            Directory.CreateDirectory(stuTemp);
            string resultTemp = "C:\\resultTemp";

            FileHelper.DeleteFolder(resultTemp);
            Directory.CreateDirectory(resultTemp);
            string signTemp = "C:\\signTemp";

            FileHelper.DeleteFolder(signTemp);
            Directory.CreateDirectory(signTemp);
            string resultFolder = txt_nets_result.Text.Trim();

            if (string.IsNullOrEmpty(resultFolder))
            {
                MessageBox.Show("请选择NETS结果包路径!");
                return;
            }
            string saveFolder = txt_save.Text.Trim();

            if (string.IsNullOrEmpty(saveFolder))
            {
                MessageBox.Show("请选择转换后路径!");
                return;
            }
            FileHelper.DeleteFolder(saveFolder);
            Directory.CreateDirectory(saveFolder);

            DirectoryInfo di = new DirectoryInfo(resultFolder);

            FileInfo[] fileList = di.GetFiles();
            foreach (FileInfo f in fileList)
            {
                string odaTemp = "";
                string oda     = "";
                string okw     = "";
                if (f.Extension == ".oda")
                {
                    oda = f.FullName;
                    okw = oda.Replace(".oda", ".okw");
                    //解开nets结果包
                    ChangeResultPack.Main.Open(oda, okw, out odaTemp);
                    //创建spoken结果包ccda.xml
                    ChangeResultPack.Main.CreateCcdaXml(odaTemp + "\\ExamData.xml", odaTemp + "\\ExamAnswer.xml", resultTemp);
                    //创建spoken结果包cckw.xml
                    ChangeResultPack.Main.CreateCckwXml(odaTemp + "\\ExamData.xml", odaTemp + "\\ExamAnswer.xml", signTemp);

                    DirectoryInfo   diSpoken   = new DirectoryInfo(odaTemp + "\\SPOKEN");
                    DirectoryInfo[] stusFolder = diSpoken.GetDirectories();
                    foreach (DirectoryInfo sf in stusFolder)
                    {
                        if (sf.Name == "temp")
                        {
                            continue;
                        }
                        FileHelper.FolderCreate(stuTemp);
                        DirectoryInfo diStu = new DirectoryInfo(sf.FullName);

                        FileInfo[] queFolder = diStu.GetFiles();
                        foreach (FileInfo qf in queFolder)
                        {
                            //将考生小题下的录音文件解压到stuTemp
                            FileCompress.DecompressFile(qf.FullName, stuTemp, null, null);
                        }
                        //创建Answer.xml到stuTemp
                        ChangeResultPack.Main.CreateAnswerXml(sf.FullName, odaTemp + "\\ExamAnswer.xml", stuTemp);

                        FileCompress.CompressFolder(stuTemp, Path.Combine(resultTemp, diStu.Name + ".zip"), null, null);

                        FileHelper.DeleteFolder(stuTemp);
                    }
                    //压缩考试结果包cdp
                    string zipFile = Path.Combine(saveFolder, f.Name.Replace(".oda", ".zip"));
                    int    result1 = FileCompress.CompressFolder(resultTemp, zipFile, SPOKENPWD, null);
                    //固定密码加密结果包cdp
                    int    result2 = SecModule.FileSign(SPOKENPWD, zipFile);
                    string cdpFile = Path.ChangeExtension(zipFile, ".cdp");
                    FileHelper.FileMove(zipFile, cdpFile);


                    //压缩考试结果签名包ckp
                    zipFile = Path.Combine(saveFolder, f.Name.Replace(".oda", ".zip"));
                    int result3 = FileCompress.CompressFolder(signTemp, zipFile, SPOKENPWD, null);
                    //固定密码加密结果签名包ckp
                    int    result4 = SecModule.FileSign(SPOKENPWD, zipFile);
                    string ckpFile = Path.ChangeExtension(zipFile, ".ckp");
                    FileHelper.FileMove(zipFile, ckpFile);

                    FileHelper.FileDel(zipFile);
                }
            }
        }
Exemple #5
0
        /// <summary>
        /// 解压spoken试卷包
        /// </summary>
        /// <param name="filePaper"></param>
        /// <param name="fileCode"></param>
        /// <param name="tempPath"></param>
        private void unZipSpokenPaper(FileInfo[] spokenPaperFileList)
        {
            string tempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "spokenTemp");

            FileHelper.DeleteFolder(tempPath);
            Directory.CreateDirectory(tempPath);


            foreach (FileInfo f in spokenPaperFileList)
            {
                string filePaper = f.FullName;
                string fileCode  = filePaper.Replace(".sjp", ".code");
                if (f.Extension.Equals(".sjp"))
                {
                    //1、复制源文件到临时目录
                    string filePaperTemp = Path.Combine(tempPath, f.Name);
                    string fileCodeTemp  = Path.Combine(tempPath, new FileInfo(fileCode).Name);
                    FileHelper.FileCopy(filePaper, filePaperTemp, true);
                    FileHelper.FileCopy(fileCode, fileCodeTemp, true);

                    //2、固定密码解密otp,并解压
                    string fileName  = f.Name.Replace(".sjp", "");
                    string paperTemp = tempPath + "\\paperTemp\\" + fileName;
                    //校验试卷文件头类型
                    UnSign(filePaperTemp);
                    int result1   = SecModule.FileVerify(SPOKENPWD, filePaperTemp);
                    int unResult1 = FileCompress.DecompressFile(filePaperTemp, paperTemp, SPOKENPWD, null);

                    //3、固定密码解密osqm,并解压
                    string codeTemp = tempPath + "\\codeTemp\\" + fileName;
                    int    result2  = SecModule.FileVerify(SPOKENPWD, fileCodeTemp);
                    FileCompress.DecompressFile(fileCodeTemp, codeTemp, SPOKENPWD, null);



                    //4、授权码解密试卷包,并解压
                    string strContent = File.ReadAllText(Path.Combine(codeTemp, "Code.ini"));
                    string sqmm       = strContent.Substring(strContent.IndexOf('=') + 1, strContent.IndexOf("ZIPMd5Code=") - strContent.IndexOf('=') - 3);

                    FileInfo[] fileList = new DirectoryInfo(paperTemp).GetFiles();
                    foreach (FileInfo fi in fileList)
                    {
                        if (fi.Extension.Equals(".zip"))
                        {
                            int a = SecModule.FileVerify(sqmm, fi.FullName);
                            FileCompress.DecompressFile(fi.FullName, paperTemp, SPOKENPWD, null);
                        }
                    }

                    //5、固定密码解密ksj,并解压
                    string kjsForder = "";
                    fileList = new DirectoryInfo(paperTemp).GetFiles();
                    int i = 0;
                    foreach (FileInfo fi in fileList)
                    {
                        if (fi.Extension.Equals(".ksj"))
                        {
                            int result3 = SecModule.FileVerify(SPOKENPWD, fi.FullName);
                            kjsForder = paperTemp + "\\" + fi.Name.Replace(".ksj", "");
                            FileCompress.DecompressFile(fi.FullName, kjsForder, SPOKENPWD, null);

                            //修改Spoken试卷包xml
                            editSpokenPaper(kjsForder, sqmm, listPaperEntity[i]);
                            i++;
                        }
                    }
                }
            }
        }
Exemple #6
0
        private void btn_spokenChange_Click(object sender, EventArgs e)
        {
            string tempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_spoken_paper");

            FileHelper.DeleteFolder(tempPath);
            Directory.CreateDirectory(tempPath);

            if (!File.Exists(filePaper) || !File.Exists(fileCode))
            {
                MessageBox.Show("请选择试卷包和授权码!");
                return;
            }
            //1、复制源文件到临时目录
            string filePaperTemp = Path.Combine(tempPath, new FileInfo(filePaper).Name);
            string fileCodeTemp  = Path.Combine(tempPath, new FileInfo(fileCode).Name);

            FileHelper.FileCopy(filePaper, filePaperTemp, true);
            FileHelper.FileCopy(fileCode, fileCodeTemp, true);

            //2、固定密码解密otp,并解压
            string paperTemp = tempPath + "\\paperTemp";

            //校验试卷文件头类型
            Sign(filePaperTemp);
            int result1   = SecModule.FileVerify(SPOKENPWD, filePaperTemp);
            int unResult1 = FileCompress.DecompressFile(filePaperTemp, paperTemp, SPOKENPWD, null);



            //3、固定密码解密osqm,并解压
            string codeTemp = tempPath + "\\codeTemp";
            int    result2  = SecModule.FileVerify(SPOKENPWD, fileCodeTemp);

            FileCompress.DecompressFile(fileCodeTemp, codeTemp, SPOKENPWD, null);



            //4、授权码解密试卷包,并解压
            string strContent = File.ReadAllText(Path.Combine(codeTemp, "Code.ini"));
            string sqmm       = strContent.Substring(strContent.IndexOf('=') + 1, strContent.IndexOf("ZIPMd5Code=") - strContent.IndexOf('=') - 3);

            FileInfo[] fileList = new DirectoryInfo(paperTemp).GetFiles();
            foreach (FileInfo fi in fileList)
            {
                if (fi.Extension.Equals(".zip"))
                {
                    int a = SecModule.FileVerify(sqmm, fi.FullName);
                    FileCompress.DecompressFile(fi.FullName, paperTemp, SPOKENPWD, null);
                }
            }

            //5、固定密码解密ksj,并解压
            string kjsForder = "";

            fileList = new DirectoryInfo(paperTemp).GetFiles();
            foreach (FileInfo fi in fileList)
            {
                if (fi.Extension.Equals(".ksj"))
                {
                    int result3 = SecModule.FileVerify(SPOKENPWD, fi.FullName);
                    kjsForder = paperTemp + "\\" + fi.Name.Replace(".ksj", "");
                    FileCompress.DecompressFile(fi.FullName, kjsForder, SPOKENPWD, null);
                }
            }

            //打开文件夹
            System.Diagnostics.Process.Start("Explorer.exe", tempPath);
        }