private void Form1_Load(object sender, EventArgs e) { string xml = "<?xml version='1.0' encoding='utf-8'?><root><rule name='C_Version'>C00</rule><rule name='D_version'>D022</rule><rule name='DashBoard'>41.003.53.00.06</rule><rule name='DeviceName'>NXT-AL10</rule><rule name='FirmWare'>EMUI-NXT-AL10C00B022-log</rule><rule name='IMEI'>RSA:ReQIiQYwkbs/muXU59nvLSLVDkZxAU0Ae2J48NaeVCEmghvKHko/mhnKK2kHq/kwYVg1updYP1F0gMPOVB/0LlHrJBRuNGXso/yTxL6AFqBF+xvlTAcLOcDs/1ce5IxryA3Iedk2+MffSZfhyMBmFPUrXQTiD+SVqpxPIQCy9cE=</rule><rule name='Language'>zh_CN</rule><rule name='OS'>Windows 7</rule><rule name='SaleInfo'>|cn|all|N|EmotionUI_4.1|4.0 GB|64.00 GB|8_2.3GHz</rule></root>".Replace("'", "\""); try { //Mate8RequestBody rules = null; // rules = PublicClass.GetRulesByXml(xml); //string json = JsonConvert.SerializeObject(rules); string json = "{'status':'0','components':[{'name':'NXT-AL10C00B023','version':'NXT-AL10C00B023','versionID':'52186','description':'【测试】022-023','createTime':'2016-04-29T10:00:00','url':'http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1254/g272/v52186/f1/'}]}".Replace("'", "\""); // XmlDocument doc1 = JsonConvert.DeserializeXmlNode(json); Mate8Version m8v = JsonConvert.DeserializeObject <Mate8Version>(json); string xml2 = XmlUtil.Serializer(typeof(Mate8Version), m8v); } catch { } }
private void Go() { int isconn = 0; //定义会话,每一个请求都将封装成一个会话 List <Fiddler.Session> oAllSessions = new List <Fiddler.Session>(); Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS) { oS.bBufferResponse = true; Monitor.Enter(oAllSessions); if (oS.fullUrl.IndexOf("hicloud.com") > -1) { if (oS.fullUrl.IndexOf("servicesupport/updateserver/getConfig") > -1) { hwconfig = oS.GetRequestBodyAsString(); //AddTXT(hwconfig); } if (oS.fullUrl.IndexOf("http://update.hicloud.com") > -1 && oS.fullUrl.IndexOf("TDS/data/files") > -1 && oS.fullUrl.IndexOf(".zip") > -1) { oS.bBufferResponse = false; AddTXT("正在下载..."); //Fiddler.FiddlerApplication.Shutdown(); //return; } if ((oS.fullUrl.IndexOf("hicloud.com") > -1 && oS.fullUrl.IndexOf("Check.action") > -1) || (oS.fullUrl.IndexOf("http://update.hicloud.com:8180/TDS/data/files") > -1 && oS.fullUrl.IndexOf(".zip") == -1)) { IOHelper.CreateFile("Log.txt"); //if (isconn == 1) //{ // oS.utilSetRequestBody(oS.GetRequestBodyAsString().Replace("B321", "B168")); //} IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][请求] " /*+ oS.fullUrl*/ + "\n\r" + oS.GetRequestBodyAsString()); } } oAllSessions.Add(oS); Monitor.Exit(oAllSessions); oS["X-AutoAuth"] = "(default)"; }; Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS) { if (isconn == 0) { isconn++; AddTXT("成功链接代理"); } string resstr = ""; oS.utilDecodeResponse(); if ((oS.fullUrl.IndexOf("hicloud.com") > -1 && oS.fullUrl.IndexOf("Check.action") > -1) || (oS.fullUrl.IndexOf("http://update.hicloud.com:8180/TDS/data/files") > -1 && oS.fullUrl.IndexOf(".zip") == -1)) { //if (iscm < 1 && string.IsNullOrEmpty(hwconfig)) //{ // AddTXT("串码获取失败,请重新获取更新(多点获取版本" + (3 - iscm).ToString() + "次,别问)~"); // iscm++; // return; //} //else //{ // iscm = 3; //} resstr = oS.GetResponseBodyAsString(); IOHelper.CreateFile("Log.txt"); IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][返回] " /* + oS.fullUrl */ + "\n\r" + resstr); } if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1 || oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1 || oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/UrlCommand/CheckNewVersion.aspx") > -1) { string ipc = oS.clientIP.Replace("::ffff:", ""); if (!IsLAN(ipc) && roles == 2) { AddTXT("您无外网远程推送权限~"); return; //myqqinfo.role } //http://update.hicloud.com:8180/TDS/data/files/p3/s15/G962/g77/v48270/f2/full/update.zip AddTXT("0%"); if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1) { ctype = 1; if (isconn == 0) { AddTXT("正在使用WIFI代理获取升级版本"); } } else if (oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/UrlCommand/CheckNewVersion.aspx") > -1) { ctype = 2; if (isconn == 0) { AddTXT("正在使用华为手机助手获取升级版本(新)"); } } else if (oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1) { ctype = 3; if (isconn == 0) { AddTXT("正在使用华为手机助手获取升级版本"); } } else { AddTXT("路径异常"); } if (isconn == 1) { isconn++; } try { string reqstr = oS.GetRequestBodyAsString(); Mate8RequestBody rules = new Mate8RequestBody(); if (ctype == 2) { IOHelper.CreateFile("Log.txt"); IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][请求XML] " /*+ oS.fullUrl*/ + "\n\r" + reqstr); rules = PublicClass.GetRulesByXml(reqstr); } else //if (1 == 1) { rules = JsonConvert.DeserializeObject <Mate8RequestBody>(reqstr); } AddTXT("5%"); if (rules.rules == null) { AddTXT("无法获取您的版本,请关闭软件并重新打开"); return; } var DeviceName = rules.rules.DeviceName; var C_version = rules.rules.C_version; var FirmWare = rules.rules.FirmWare; if (rules.rules.OS == "Android 7.0") { AddTXT("本软件不支持" + rules.rules.OS + "系统使用,请下载最新包使用三键刷机!"); return; } if (Vtype == "1" && (rules.rules.PackageType != "patch" || rules.rules.PackageType != "increment")) { return; } //if (Vtype == "2" && rules.rules.PackageType != "patch") //{ return; } if (ctype == 3) { if (Vtype == "3" && rules.rules.PackageType != "full_back") { return; } } else { if (Vtype == "3" && rules.rules.PackageType != "full") { return; } if (Vtype == "3") { AddTXT("不建议使用WIFI代理降级"); } } if (Vtype == "4" && rules.rules.PackageType != "full") { AddTXT("完整包请在手机上使用[系统更新-高级-下载最新完整包]"); return; } var FirmWareEMUI = ""; int isjk = 0; try { AddTXT("6%"); FirmWareEMUI = rules.rules.FirmWare.Split('_')[0]; if (FirmWareEMUI.IndexOf("EMUI") > -1) { DeviceName = FirmWareEMUI + "_" + DeviceName; isjk++; } } catch { AddTXT("7%"); } if (isconn == 2) { AddTXT("您的手机型号为:" + DeviceName); } isconn++; AddTXT("10%"); AddTXT("正在自动适配版本库"); // HMISelect = LHMISelect.Where(m => m.PhoneModel.Replace(" ", "") == DeviceName.Replace(" ", "")).FirstOrDefault();//自动选择版本库 var HMISelect = LHMISelect.Where(m => DeviceName.Replace(" ", "").StartsWith(m.PhoneModel.Replace(" ", ""))).FirstOrDefault(); if (HMISelect == null) { AddTXT("15%"); var HMIAll = LHMI.Where(m => DeviceName.Replace(" ", "").StartsWith(m.PhoneModel.Replace(" ", ""))).FirstOrDefault(); if (HMIAll == null) { AddTXT("16%"); AddTXT("找不到对应的型号,请联系管理员"); AddTXT("100%"); return; } else { AddTXT("17%"); if (checkBox3.Checked) { this.BeginInvoke((MethodInvoker) delegate { listBox2.SelectedItem = HMIAll.VersionName; }); Thread.Sleep(100); var NewLHMISelect = LHMISelect.Where(m => DeviceName.Replace(" ", "").StartsWith(m.PhoneModel.Replace(" ", ""))).FirstOrDefault();//自动选择版本库 AddTXT("自动切换正确的版本库"); HMISelect = NewLHMISelect; AddTXT("切换成功"); } else if (!checkBox3.Checked) { AddTXT("请勾选自动切换版本"); } } } //Mate8Model Mate8Model = Mate8List.Mate8Model.Where(m => m.ModelName == DeviceName).FirstOrDefault(); //MyVersion = Mate8Model; AddTXT("18%"); string mobilemodel = ""; if (HMISelect.MobileModel != null) { AddTXT("19%"); MobileModel mm = HMISelect.MobileModel.Where(x => (DeviceName.Replace(" ", "") + ((isjk > 0) ? "" : C_version.Replace(" ", ""))).EndsWith(x.PhoneModel)).FirstOrDefault(); if (mm != null) { AddTXT("20%"); mobilemodel = mm.PhoneModel; } } AddTXT("21%"); var VD = HMISelect.VersionDetail; AddTXT("22%"); VersionDetail VDSelect = null; if (Vtype == "3" || Vtype == "4") { AddTXT("25%"); //if (FullIsGo == 0) //{ //FullIsGo++; VDSelect = VD.Where(m => m.Name.Replace(" ", "") == SelectedVersionName.Replace(" ", "")).FirstOrDefault(); //} //else //{ //AddTXT("74%"); //} AddTXT("26%"); } else { AddTXT("27%"); List <string> li = new List <string>(); //手动选择 if (checkBox1.Checked) { AddTXT("28%"); li = listBox1.SelectedItems.Cast <string>().ToList(); } if (li.Count > 0) { AddTXT("29%"); VDSelect = VD.Where(m => li.Contains(m.Name.Replace(" ", "")) && (mobilemodel + ((isjk > 0) ? "_" : "") + m.oldversion.Replace(" ", "")).Replace("__", "_") == rules.rules.FirmWare.Replace(" ", "")).FirstOrDefault(); AddTXT("30%"); } else { AddTXT("31%"); VDSelect = VD.Where(m => (mobilemodel + ((isjk > 0) ? "_" : "") + m.oldversion.Replace(" ", "")).Replace("__", "_") == rules.rules.FirmWare.Replace(" ", "")).FirstOrDefault(); AddTXT("32%"); } AddTXT("33%"); } AddTXT("40%"); if (VDSelect != null) { //try //{ // if (int.Parse(listBox1.SelectedItem.ToString().Remove(0, 1)) <= int.Parse(mus.version.Remove(0, 1))) // { // AddTXT("100%"); // AddTXT("您的版本为:" + rules.rules.FirmWare + ",请重新选择版本,本软件暂时不提供降级服务!"); // return; // } //} //catch (Exception ee) //{ // AddTXT("100%"); // AddTXT("出错了,原因如下:" + ee.Message); // return; //} AddTXT("50%"); AddTXT("您手机的版本为:" + rules.rules.FirmWare); AddTXT("您找到的版本为:" + mobilemodel + VDSelect.version); AddTXT("51%"); List <VersionInfo> lvif = new List <VersionInfo>(); AddTXT("52%"); AddTXT("开始加载升级数据"); VersionInfo vif = new VersionInfo { name = "[官方]" + mobilemodel + VDSelect.version, version = mobilemodel + VDSelect.version, versionID = VDSelect.v, description = VDSelect.description, createTime = VDSelect.createTime, url = "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G" + VDSelect.BG + "/g" + VDSelect.sg + "/v" + VDSelect.v + "/f" + VDSelect.f + "/" }; lvif.Add(vif); AddTXT("53%"); Mate8Version m8v = new Mate8Version { status = "0", components = lvif }; if (isycts == 1) { AddTXT("您的权限较低,现在开始判断您是否可以推送本包"); if (svrtime < Convert.ToDateTime(VDSelect.createTime).AddDays(3)) { AddTXT("您的权限离本包可推送时间还差" + (Convert.ToDateTime(VDSelect.createTime).AddDays(3) - svrtime).TotalHours + "小时"); AddTXT("100%"); return; } } bool ishmd = false; try { AddTXT("55%"); long IMEI = 0; HwConfig hwc = JsonConvert.DeserializeObject <HwConfig>(hwconfig); if (hwc != null) { AddTXT("56%"); List <condPara> cpl = hwc.condParaList; if (cpl != null) { AddTXT("56%"); condPara cp = cpl.Where(x => x.key == "IMEI").SingleOrDefault(); if (cp != null) { AddTXT("57%"); IMEI = long.Parse(cp.value); AddTXT("58%"); } } } AddTXT("60%"); long qqnumb = 0; long.TryParse(qqnumber, out qqnumb); AddTXT("61%"); ishmd = hmdlist.Where(x => x == IMEI || x == qqnumb).Count() > 0; AddTXT("62%"); } catch { AddTXT("66%"); } isan7 = VDSelect.description.IndexOf("测") > -1; AddTXT("67%"); AddTXT("升级数据加载成功"); AddTXT("68%"); try { AddTXT("70%"); if (issms == 1 && (isan7 || ishmd)) { AddTXT("71%"); MailMessage mailObj = new MailMessage(); mailObj.From = new MailAddress("*****@*****.**", "小烈哥"); //发送人邮箱地址 mailObj.To.Add("*****@*****.**"); //收件人邮箱地址 //mailObj.To.Add(label3.Text.Trim() + "@qq.com"); //收件人邮箱地址 mailObj.Subject = (ishmd ? "黑名单 " : "") + label3.Text.Trim() + "获取" + MyVersion.ModelName + "版本成功"; //主题 mailObj.Body = reqstr + "\n\r" + (string.IsNullOrEmpty(hwconfig) ? "串码获取失败" : hwconfig) + "\n\r" + qqstring + "\n\r" + VDSelect.description; //正文 SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.163.com"; //smtp服务器名称 smtp.UseDefaultCredentials = true; smtp.Credentials = new NetworkCredential("*****@*****.**", "hwupdate163"); //发送人的登录名和密码 //Thread t = new Thread(() => //{ try { AddTXT("72%"); smtp.Send(mailObj); } catch { AddTXT("73%"); AddTXT("邮件送失败,请不要阻止邮件发送.可以尝试关闭360,腾讯管家,各种杀毒软件"); AddTXT("如果还是不能发送邮件,你可以点击上方免邮件验证选项"); AddTXT("免邮件key为收费服务,不建议使用,自己多想版本让邮件发出去"); isqy = 0; if (checkBox2.Checked) { AddTXT("74%"); if (textBox2.Text.ToUpper() == PublicClass.GetMd5(qqnumber + UnixTimestamp.ConvertIntDateTime(qqinfo.svr_time).ToString("yyyyMMdd") + Application.ProductVersion.ToString()).ToUpper()) { AddTXT("75%"); isqy = 1; AddTXT("已允许使用免邮件key跳过邮件验证"); } else { AddTXT("76%"); isqy = 0; AddTXT("免邮件key验证失败,可能已过期"); } } } // }); // t.Start(); issms--; } AddTXT("77%"); if (isqy == 1)//是否群员 { AddTXT("80%"); string json = JsonConvert.SerializeObject(m8v); if (ctype == 2) { //IOHelper.CreateFile("Log.txt"); //IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][返回JSON] " /*+ oS.fullUrl*/ + "\n\r" + json); AddTXT("81%"); string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml += "<root><status>0</status><components><component><name>" + vif.name + "</name><version>" + vif.version + "</version><versionID>" + vif.versionID + "</versionID><description>" + vif.description + "</description><createtime>" + vif.createTime + "</createtime><url>" + vif.url + "</url></component></components></root>"; json = xml; //json = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root>" + doc1.OuterXml + "</root>"; AddTXT("82%"); //IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][返回XML] " /*+ oS.fullUrl*/ + "\n\r" + json); } if (!ishmd) { AddTXT("83%"); oS.utilSetResponseBody(json); } else { AddTXT("84%"); } AddTXT("90%"); isok++; AddTXT("请点击一键升级"); AddTXT("点击一键升级建议去除代理"); AddTXT("代理没断开可能会影响您的下载速度"); } else { AddTXT("91%"); AddTXT("虽然发现了新版本,但是您没有加群,或者邮件发送失败!"); } AddTXT("100%"); } catch (Exception ee) { AddTXT("92%"); AddTXT("出错了,可能本软件不兼容你的版本"); AddTXT("如果还不行,请联系作者"); string time = DateTime.Now.ToString("yyyyMMdd"); IOHelper.CreateFile("Exception" + time); IOHelper.WriteLine("Exception" + time, DateTime.Now.ToString() + " " + ee.ToString()); AddTXT("100%"); } //AddTXT("100%"); } else { AddTXT("100%"); AddTXT("您手机的版本为:" + rules.rules.FirmWare); AddTXT("没找到更新的版本,谢谢使用"); AddTXT("如果官方已经推送更新的版本,请联系作者"); } } catch (Exception ee) { AddTXT("94%"); AddTXT("出错了,可能本软件不兼容你的版本,你可以尝试点击又上角的升级版本库"); AddTXT("如果还不行,请联系作者"); string time = DateTime.Now.ToString("yyyyMMdd"); IOHelper.CreateFile("Exception" + time); IOHelper.WriteLine("Exception" + time, DateTime.Now.ToString() + " " + ee.ToString()); } } }; }