Esempio n. 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");
        }
Esempio n. 2
0
        public string GetQuestionTypeList()
        {
            string QuestionTypeNO   = XmlHelper.Read(paperInfoPath, "PaperInfo/PackList/PackData/zbwjm", "");  //试卷名称
            string ParentNO         = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjdm", ""); //试卷代码
            string QuestionTypeName = "";                                                                      //试卷说明
            string QuestionMemo     = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjlx", "");

            return(string.Format(PaperInfo, QuestionTypeNO, ParentNO, QuestionTypeName, QuestionMemo));
        }
Esempio n. 3
0
        public string GetPaperInfo()
        {
            string PaperName = XmlHelper.Read(paperInfoPath, "PaperInfo/PackList/PackData/zbwjm", "");  //试卷名称
            string PaperNO   = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjdm", ""); //试卷代码
            string PaperMemo = "";                                                                      //试卷说明
            string PaperType = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjlx", "");
            string ExamTime  = "";                                                                      //考试时间
            string ShowModel = "0";                                                                     //试卷显示模式, ShowModel值为(1或2) 1为:800*600;2:1024*768
            //(新增)试卷所使用的考试场次,默认值为0,表示可用于任何考试场次,用于多个场次时,中间用逗号隔开,比如:1,3,5
            string Times      = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/kspc", "");
            string Version    = "";
            string CreateTime = "";
            string EditTime   = "";

            return(string.Format(PaperInfo, PaperName, PaperNO, PaperMemo, PaperType, ExamTime, ShowModel, Times, Version, CreateTime, EditTime));
        }
Esempio n. 4
0
        /// <summary>
        /// 展示nets和spoken试卷结构
        /// </summary>
        /// <param name="paperInfo"></param>
        /// <param name="requestData"></param>
        private void ShowPaper(string paperInfoPath)
        {
            string        NetsPaperNO = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjdm", "");//试卷代码
            string        workPath    = txt_work.Text.Trim();
            DirectoryInfo diWork      = new DirectoryInfo(workPath);

            DirectoryInfo[] diList = diWork.GetDirectories();
            bool            flag   = false;

            foreach (DirectoryInfo di in diList)
            {
                FileInfo[] fiList = di.GetFiles();
                foreach (FileInfo fi in fiList)
                {
                    if (fi.Name == "paper.xml")
                    {
                        updateFile = fi;
                        string SpokenPaperNo   = XmlHelper.Read(fi.FullName, "Paper/PaperInfo/PaperNO", "");   //试卷代码
                        string SpokenPaperName = XmlHelper.Read(fi.FullName, "Paper/PaperInfo/PaperName", ""); //试卷代码

                        //nets树结构
                        string   netsPaperName = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjmc", "");//试卷代码
                        TreeNode parentNode    = new TreeNode(netsPaperName);
                        treeView2.Nodes.Clear();
                        treeView2.Nodes.Add(parentNode);
                        parentNode.Nodes.Add(NetsPaperNO);

                        XmlElement  xe  = XmlHelper.GetXmlElement(paperInfoPath, "PaperInfo/PaperQuesList");
                        XmlNodeList xnl = xe.ChildNodes;

                        List <string> sectionList = new List <string>();
                        List <string> list        = new List <string>();

                        foreach (XmlNode xn in xnl)
                        {
                            TreeNode tnode = new TreeNode(xn.SelectSingleNode("dtmc").InnerText + "(" + xn.SelectSingleNode("dth").InnerText + ")");

                            xe  = XmlHelper.GetXmlElement(paperInfoPath, "PaperInfo/ItemList");
                            xnl = xe.ChildNodes;
                            foreach (XmlNode xn1 in xnl)
                            {
                                if (xn1.SelectSingleNode("dth").InnerText == xn.SelectSingleNode("dth").InnerText)
                                {
                                    //剔除掉1-5,6-10这种小题
                                    if (xn1.SelectSingleNode("xtlx").InnerText == "SINGLE" || xn1.SelectSingleNode("xtlx").InnerText == "SPOKEN")
                                    {
                                        TreeNode tnode1 = new TreeNode(xn1.SelectSingleNode("xtdm").InnerText);
                                        tnode.Nodes.Add(tnode1);
                                        list.Add(xn1.SelectSingleNode("xtdm").InnerText);
                                    }
                                }
                            }
                            sectionList.Add(xn.SelectSingleNode("dth").InnerText);
                            parentNode.Nodes.Add(tnode);
                        }
                        treeView2.ExpandAll();
                        nets_dict = new Dictionary <string, object>();
                        nets_dict.Add("paperNo", NetsPaperNO);
                        nets_dict.Add("paperName", netsPaperName);
                        nets_dict.Add("questionList", list);
                        nets_dict.Add("sectionList", sectionList);

                        txt_paperNO.Text = NetsPaperNO;

                        if (NetsPaperNO == SpokenPaperNo)
                        {
                            parentNode = new TreeNode(SpokenPaperName);
                            treeView1.Nodes.Clear();
                            treeView1.Nodes.Add(parentNode);
                            parentNode.Nodes.Add(SpokenPaperNo);
                            //spoken树结构
                            xe          = XmlHelper.GetXmlElement(fi.FullName, "Paper/SectionList");
                            xnl         = xe.ChildNodes;
                            sectionList = new List <string>();
                            list        = new List <string>();
                            foreach (XmlNode xn in xnl)
                            {
                                TreeNode tnode = new TreeNode(xn.SelectSingleNode("SectionName").InnerText + "(" + xn.SelectSingleNode("SectionNO").InnerText + ")");

                                xe  = XmlHelper.GetXmlElement(fi.FullName, "Paper/QuestionList");
                                xnl = xe.ChildNodes;
                                foreach (XmlNode xn1 in xnl)
                                {
                                    if (xn1.SelectSingleNode("SectionNO").InnerText == xn.SelectSingleNode("SectionNO").InnerText)
                                    {
                                        TreeNode tnode1 = new TreeNode(xn1.SelectSingleNode("QuestionNO").InnerText);
                                        tnode.Nodes.Add(tnode1);
                                        list.Add(xn1.SelectSingleNode("QuestionNO").InnerText);
                                    }
                                }
                                sectionList.Add(xn.SelectSingleNode("SectionNO").InnerText);
                                parentNode.Nodes.Add(tnode);
                            }
                            treeView1.ExpandAll();
                            spoken_dict = new Dictionary <string, object>();
                            spoken_dict.Add("paperNo", SpokenPaperNo);
                            spoken_dict.Add("paperName", SpokenPaperName);
                            spoken_dict.Add("questionList", list);
                            spoken_dict.Add("sectionList", sectionList);

                            flag = true;
                            break;
                        }
                    }
                    if (flag)
                    {
                        break;
                    }
                }
            }
        }
Esempio n. 5
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");
            }
        }