Пример #1
0
        private void Go(int iPort = 8877)
        { //设置别名
            Fiddler.FiddlerApplication.SetAppDisplayName("FiddlerCoreHw");

            Fiddler.CONFIG.IgnoreServerCertErrors = false;
            FiddlerApplication.Prefs.SetBoolPref("fiddler.network.streaming.abortifclientaborts", true);


            //启动方式
            FiddlerCoreStartupFlags oFCSF = FiddlerCoreStartupFlags.Default;

            //定义http代理端口

            //启动代理程序,开始监听http请求
            //端口,是否使用windows系统代理(如果为true,系统所有的http访问都会使用该代理)
            Fiddler.FiddlerApplication.Startup(iPort, false, true, true);



            // 我们还将创建一个HTTPS监听器,当FiddlerCore被伪装成HTTPS服务器有用
            // 而不是作为一个正常的CERN样式代理服务器。
            Proxy  oSecureEndpoint         = null;
            int    iSecureEndpointPort     = 8888;
            string sSecureEndpointHostname = "127.0.0.1";

            oSecureEndpoint = FiddlerApplication.CreateProxyEndpoint(iSecureEndpointPort, true, sSecureEndpointHostname);

            AddTXT("开始监控 下面需要出现 成功链接代理 才能正常获取版本");

            int isconn = 0; int iscomit = 0;
            //定义会话,每一个请求都将封装成一个会话
            List <Fiddler.Session> oAllSessions = new List <Fiddler.Session>();
            string firmware = ""; string hwconfig = ""; string thisIMEI = "";

            okimei = textBox2.Text;
            Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
            {
                try
                {
                    oS.bBufferResponse = true;
                    Monitor.Enter(oAllSessions);



                    if (oS.fullUrl.IndexOf("hicloud.com") > -1)
                    {
                        AddTXT(oS.fullUrl);
                        //AddTXT("10%");
                        string v = oS.GetRequestBodyAsString();
                        if (oS.fullUrl.IndexOf("authorize.action") > -1)
                        {
                            AddTXT(v);
                        }
                        //AddTXT(v);
                        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)
                        {
                            //AddTXT("44%");



                            //oS.utilSetRequestBody(v);
                            resqustnum++;
                        }


                        if (oS.fullUrl.IndexOf(".zip") > -1)
                        {
                            oS.bBufferResponse = false;
                        }


                        if (oS.fullUrl.IndexOf("https://updatebeta.hicloud.com/TDS/data/") > -1)
                        {
                            //AddTXT("11%");
                            //v = "{\"rules\":{\"IMEI\":\"869158020296105\"}}";

                            //AddTXT("12%");
                            oS.utilSetRequestBody(v);

                            //AddTXT("13%");
                            if (oS.fullUrl.IndexOf(".zip") > -1)
                            {
                                AddTXT("41%");
                                oS.bBufferResponse = false;
                                AddTXT("正在下载升级包...");
                            }
                            if (oS.fullUrl.IndexOf("changelog.xml") > -1)
                            {
                                AddTXT("21%");
                                AddTXT("加载日志");
                            }
                            if (oS.fullUrl.IndexOf("filelist.xml") > -1)
                            {
                                AddTXT("31%");
                                AddTXT("加载文件列表");
                            }
                        }
                    }


                    //AddTXT("51%");



                    oAllSessions.Add(oS);
                    Monitor.Exit(oAllSessions);
                    oS["X-AutoAuth"] = "(default)";
                    //AddTXT("52%");
                }
                catch (Exception ee)
                {
                    AddTXT("92%");
                    AddTXT(ee.ToString());
                }
            };
            Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS)
            {
                if (isconn == 0)
                {
                    isconn++;
                    AddTXT("成功链接代理");
                }

                oS.utilDecodeResponse();



                if (oS.fullUrl.IndexOf("servicesupport/updateserver/getConfig") > -1)
                {
                    hwconfig = oS.GetRequestBodyAsString();
                    HwConfig hwc = JsonConvert.DeserializeObject <HwConfig>(hwconfig);
                    if (hwc != null)
                    {
                        List <condPara> cpl = hwc.condParaList;
                        if (cpl != null)
                        {
                            condPara cp = cpl.Where(x => x.key == "IMEI").SingleOrDefault();
                            if (cp != null)
                            {
                                thisIMEI = cp.value;
                                AddTXT("串码" + thisIMEI);
                            }
                        }
                    }
                }



                if (oS.fullUrl.IndexOf("authorize.action") > -1)
                {
                    // I6IjEifV19

                    var auta = oS.GetResponseBodyAsString();
                    AddTXT(auta);

                    //oS.utilSetResponseBody(auta.Replace("I6IjEifV19", "I6IjAifV19"));
                }
                if (oS.fullUrl.IndexOf("UpdateReport.action") > -1)
                {
                    // I6IjEifV19

                    var auta1 = oS.GetRequestBodyAsString();
                    AddTXT(auta1);
                    var auta = oS.GetResponseBodyAsString();
                    AddTXT(auta);

                    //oS.utilSetResponseBody(auta.Replace("I6IjEifV19", "I6IjAifV19"));
                }



                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)
                {
                    if (!checkBox1.Checked)
                    {
                        var a = thisIMEI.IndexOf(okimei);
                        if (a < 0)
                        {
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            AddTXT("IMEI不对不能使用");
                            return;
                        }
                    }
                    #region 获取版本
                    AddTXT("0%");
                    if (isconn == 1)
                    {
                        isconn++;
                        if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1)
                        {
                            //ctype = 1;
                            AddTXT("正在使用WIFI代理获取升级版本");
                        }
                        else
                        if (oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1)
                        {
                            //ctype = 3;
                            AddTXT("正在使用华为手机助手获取升级版本(旧)");
                        }
                        else
                        {
                            AddTXT("路径异常");
                        }
                    }
                    try
                    {
                        AddTXT("1%");

                        string str = oS.GetResponseBodyAsString();

                        string v = oS.GetRequestBodyAsString();

                        Mate8RequestBody rule = JsonConvert.DeserializeObject <Mate8RequestBody>(v);
                        firmware = rule.rules.DeviceName;

                        if (iscomit == 0)
                        {
                            if (firmware == "NXT-AL10" ||
                                firmware == "NXT-CL00" ||
                                firmware == "NXT-TL00" ||
                                firmware == "NXT-DL00")
                            {
                                if (rule.rules.PackageType == "full_back")
                                {
                                    iscomit++;
                                    var vf = firmware + rule.rules.C_version;
                                    str = ("{|status|:|0|,|components|:[{|name|:|[小烈哥]" + vf + "B386|,|version|:|" + vf + "B386|,|versionID|:|65694|,|description|:|386|,|ruleAttr|:||,|createTime|:|2016-09-18T06:55:50+0000|,|url|:|http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1255/g104/v65694/f1/|}]}").Replace("|", "\"");
                                }
                                if (rule.rules.PackageType == "full")
                                {
                                    iscomit++;
                                    var vf = firmware + rule.rules.C_version;
                                    str = ("{|status|:|0|,|components|:[{|name|:|[小烈哥]" + vf + "B550-log|,|version|:|" + vf + "B550-log|,|versionID|:|66474|,|description|:|550-log|,|ruleAttr|:||,|createTime|:|2016-09-18T06:55:50+0000|,|url|:|http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1255/g104/v66474/f1/|}]}").Replace("|", "\"");
                                }
                            }



                            if (1 == 2)
                            {
                                if (firmware == "HUAWEI NXT-AL10" ||
                                    firmware == "HUAWEI NXT-CL00")
                                {
                                    str = "{|status|:|0|,|components|:[{|name|:|[小烈哥]NXT-AL10C00B523|,|version|:|NXT-AL10C00B523|,|versionID|:|65483|,|description|:|523|,|ruleAttr|:||,|createTime|:|2016-09-18T06:55:50+0000|,|url|:|http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1255/g104/v65483/f1/|,|reserveUrl|:|update8.hicloud.com|,|versionType|:|1|}]}".Replace("|", "\"");
                                    if (firmware == "HUAWEI NXT-CL00")
                                    {
                                        str = str.Replace("NXT-AL10C00", "NXT-CL00C00");
                                    }
                                }
                                if (firmware == "HUAWEI NXT-TL00" ||
                                    firmware == "HUAWEI NXT-DL00")
                                {
                                    str = "{|status|:|0|,|components|:[{|name|:|[小烈哥]NXT-TL00C01B523|,|version|:|NXT-TL00C01B523|,|versionID|:|65490|,|description|:|523|,|ruleAttr|:||,|createTime|:|2016-09-18T06:55:50+0000|,|url|:|http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1255/g104/v65490/f1/|,|reserveUrl|:|update8.hicloud.com|,|versionType|:|1|}]}".Replace("|", "\"");
                                    if (firmware == "HUAWEI NXT-DL00")
                                    {
                                        str = str.Replace("NXT-TL00C01", "NXT-DL00C17");
                                    }
                                }


                                if (firmware == "NXT-TL00" ||
                                    firmware == "NXT-DL00")
                                {
                                    str = "{|status|:|0|,|components|:[{|name|:|[小烈哥]NXT-TL00C01B531-log|,|version|:|NXT-TL00C01B531-log|,|versionID|:|65880|,|description|:|531|,|ruleAttr|:||,|createTime|:|2016-09-18T06:55:50+0000|,|url|:|http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1255/g104/v65880/f1/|,|reserveUrl|:|update8.hicloud.com|,|versionType|:|1|}]}".Replace("|", "\"");
                                    if (firmware == "NXT-DL00")
                                    {
                                        str = str.Replace("NXT-TL00C01", "NXT-DL00C17");
                                    }
                                }


                                if (firmware == "EVA-AL00" ||
                                    firmware == "EVA-TL00" ||
                                    firmware == "EVA-UL00" ||
                                    firmware == "EVA-CL00")
                                {
                                    str = "{|status|:|0|,|components|:[{|name|:|[小烈哥]EVA-TL00C01B323|,|version|:|EVA-TL00C01B323|,|versionID|:|65543|,|description|:|323|,|ruleAttr|:||,|createTime|:|2016-09-18T06:55:50+0000|,|url|:|http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1256/g104/v65543/f1/|,|reserveUrl|:|update8.hicloud.com|,|versionType|:|1|}]}".Replace("|", "\"");
                                    if (firmware == "EVA-AL00")
                                    {
                                        str = str.Replace("EVA-TL00C01", "EVA-AL00C00");
                                    }
                                }
                                if (firmware == "EVA-AL10")
                                {
                                    str = "{|status|:|0|,|components|:[{|name|:|[小烈哥]EVA-AL10C00B323|,|version|:|EVA-AL10C00B323|,|versionID|:|65542|,|description|:|323|,|ruleAttr|:||,|createTime|:|2016-09-18T06:55:50+0000|,|url|:|http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1256/g104/v65542/f1/|,|reserveUrl|:|update8.hicloud.com|,|versionType|:|1|}]}".Replace("|", "\"");
                                    //if (firmware == "EVA-AL00")
                                    //{
                                    //    str = str.Replace("EVA-TL00C01", "EVA-AL00C00");
                                    //}
                                }
                            }
                        }
                        //if (iscomit >0)
                        //{
                        //    str = "{\"status\":\"1\"}";
                        //}
                        oS.utilSetResponseBody(str);



                        //if (v2.IndexOf("EVA-AL00C00B193") > -1) {
                        //    v2 = v2.Replace("EVA-AL00C00B193", "EVA-AL10C00B193");
                        //    oS.utilSetResponseBody(v2);
                        //}

                        //AddTXT(str);


                        AddTXT("开始加载升级数据");
                        //string v1 = "{\"status\":\"0\",\"components\":[{\"name\":\"EVA-AL00C00B193\",\"version\":\"EVA-AL00C00B193\",\"versionID\":\"64011\",\"description\":\"【B192-B193差分包】EVA-AL00C00B193\",\"ruleAttr\":\"type_A\",\"createTime\":\"2016-10-18T10:48:42+0000\",\"url\":\"https://updatebeta.hicloud.com/TDS/data/FF38E764923BF183D14E26F58988076A9E4423EC65B51AE3526B4888E05AECC2/1477137653/files/p3/s15/G1434/g1433/v64011/f1/\",\"reserveUrl\":\"\",\"versionType\":\"2\"}]}";
                        AddTXT("2%");
                        //oS.utilSetResponseBody(v1);
                        AddTXT("3%");
                    }
                    catch (Exception ee)
                    {
                        AddTXT("91%");
                        AddTXT(ee.ToString());
                    }
                    #endregion
                }
            };
        }
Пример #2
0
        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());
                    }
                }
            };
        }
Пример #3
0
        private void Go()
        {
            int isconn = 0;
            //定义会话,每一个请求都将封装成一个会话
            List <Fiddler.Session> oAllSessions = new List <Fiddler.Session>();
            string newv = ""; string newdv = ""; long?newIMEI = null; long?thisIMEI = null; bool isnew = false; int newid = 0;
            string hwconfig = "";

            Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
            {
                if (isconn == 0)
                {
                    isconn++;
                    AddTXT("成功链接代理");
                }
                try
                {
                    oS.bBufferResponse = true;
                    Monitor.Enter(oAllSessions);
                    //if (oS.fullUrl.IndexOf("hicloud.com") > -1)
                    if (oS.fullUrl.IndexOf("updatebeta.hicloud.com/TDS/data/") > -1 ||
                        oS.fullUrl.IndexOf("servicesupport/updateserver/getConfig") > -1 ||
                        oS.fullUrl.IndexOf("query.hicloud.com") > -1)
                    {
                        AddTXT(oS.host);
                        //AddTXT(oS.hostname);
                        //AddTXT("10%");
                        string v = oS.GetRequestBodyAsString();
                        //AddTXT(v);



                        if (oS.fullUrl.IndexOf("servicesupport/updateserver/getConfig") > -1)
                        {
                            hwconfig = oS.GetRequestBodyAsString();
                            HwConfig hwc = JsonConvert.DeserializeObject <HwConfig>(hwconfig);
                            if (hwc != null)
                            {
                                List <condPara> cpl = hwc.condParaList;
                                if (cpl != null)
                                {
                                    condPara cp = cpl.Where(x => x.key == "IMEI").SingleOrDefault();
                                    if (cp != null)
                                    {
                                        thisIMEI = long.Parse(cp.value);
                                        AddTXT("成功获取串码:" + thisIMEI);

                                        if (User_IMEI == null)
                                        {
                                            User_IMEI = thisIMEI;
                                            UpdateIMEI(cp.value);
                                            AddTXT("串码绑定成功");
                                        }
                                    }
                                }
                            }
                        }



                        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)
                        {
                            string ipc = oS.clientIP.Replace("::ffff:", "");
                            AddTXT("您的手机IP为:" + ipc);
                            if (!PublicClass.IsLAN(ipc))
                            {
                                AddTXT("不允许网远程推送~");
                                return;
                                //myqqinfo.role
                            }



                            Mate8RequestBody rule = JsonConvert.DeserializeObject <Mate8RequestBody>(v);
                            if (resqustnum == 0)
                            {
                                newv = v;
                                //newdv = rule.rules.D_version;
                                newdv = "B" + rule.rules.FirmWare.Split('B')[1].Substring(0, 3);
                                string rsaDeviceName = RsaHelper.RSACrypto.Encrypt(PublicKey, rule.rules.DeviceName);
                                var    getlv         = HTMLHelper.Post_Http(ApiUrl + "Version/GetLatestVersion", rsaDeviceName);
                                var    getlvm        = JsonConvert.DeserializeObject <AjaxResCode>(getlv);
                                object da            = getlvm.Data;

                                if (da != null && int.Parse(da.ToString().Substring(0, 3)) <= int.Parse(rule.rules.FirmWare.Split('B')[1].Substring(0, 3)) ||
                                    da == null)
                                {
                                    string rsaFirmWare = RsaHelper.RSACrypto.Encrypt(PublicKey, v /*rule.rules.FirmWare*/);
                                    var    ref1        = HTMLHelper.Post_Http(ApiUrl + "Version/UpdateVersion", rsaFirmWare);
                                    var    ref1m       = JsonConvert.DeserializeObject <AjaxResCode>(ref1);
                                    newid = int.Parse(ref1m.Data.ToString());
                                    AddTXT("成功验证版本库");
                                    if (thisIMEI > 0)
                                    {
                                        string rsaIMEI = RsaHelper.RSACrypto.Encrypt(PublicKey, newid + "|" + thisIMEI + "|0");//IMEI
                                        var    getv    = HTMLHelper.Post_Http(ApiUrl + "Version/SetIMEI", rsaIMEI);
                                        var    getvm   = JsonConvert.DeserializeObject <AjaxResCode>(getv);
                                        AddTXT("成功验证串码");
                                    }
                                }
                                else
                                {
                                    AddTXT("开始获取在线版本");
                                    //string rsav = RsaHelper.RSACrypto.Encrypt(PublicKey, v /*rule.rules.FirmWare*/);
                                    var    getv  = HTMLHelper.Post_Http(ApiUrl + "Version/GetVersion", rsaDeviceName);
                                    var    getvm = JsonConvert.DeserializeObject <AjaxResCode>(getv);
                                    object dav   = getvm.Data;
                                    if (dav != null)
                                    {
                                        if (!string.IsNullOrEmpty(PrivateKey))
                                        {
                                            string rsaqqinfo          = RsaHelper.RSACrypto.Decrypt(PrivateKey, dav.ToString());
                                            Hw_UserVersionLibrary uvl = JsonConvert.DeserializeObject <Hw_UserVersionLibrary>(rsaqqinfo);
                                            newv    = uvl.Json;
                                            newdv   = uvl.version;
                                            newIMEI = uvl.IMEI;
                                            AddTXT("在线版本获取成功");
                                        }
                                    }
                                }
                            }
                            v = newv.Replace(newdv.Substring(0, 3), rule.rules.FirmWare.Split('B')[1].Substring(0, 3));
                            oS.utilSetRequestBody(v);
                            resqustnum++;
                        }
                        if (oS.fullUrl.IndexOf(".zip") > -1)
                        {
                            oS.bBufferResponse = false;
                        }
                        if (oS.fullUrl.IndexOf("updatebeta.hicloud.com/TDS/data/") > -1)
                        {
                            Mate8RequestBody IMEIv = JsonConvert.DeserializeObject <Mate8RequestBody>(v);
                            if (User_IMEI == null)
                            {
                                User_IMEI = long.Parse(IMEIv.rules.IMEI);
                                UpdateIMEI(IMEIv.rules.IMEI);
                                AddTXT("串码绑定成功");
                            }
                            if (newid > 0)
                            {
                                isnew = false;

                                string rsaIMEI = RsaHelper.RSACrypto.Encrypt(PublicKey, newid + "|" + IMEIv.rules.IMEI + "|1");//IMEI
                                var    getv    = HTMLHelper.Post_Http(ApiUrl + "Version/SetIMEI", rsaIMEI);
                                var    getvm   = JsonConvert.DeserializeObject <AjaxResCode>(getv);
                            }
                            //AddTXT("11%");
                            v = "{\"rules\":{\"IMEI\":\"" + newIMEI + "\"}}";
                            //AddTXT(v);
                            //AddTXT("12%");
                            oS.utilSetRequestBody(v);

                            //AddTXT("13%");
                            if (oS.fullUrl.IndexOf(".zip") > -1)
                            {
                                oS.bBufferResponse = false;
                                AddTXT("正在下载升级包...");
                            }
                            if (oS.fullUrl.IndexOf("changelog.xml") > -1)
                            {
                                AddTXT("加载日志");
                            }
                            if (oS.fullUrl.IndexOf("filelist.xml") > -1)
                            {
                                AddTXT("加载文件列表");
                            }
                        }
                    }


                    //AddTXT("51%");



                    oAllSessions.Add(oS);
                    Monitor.Exit(oAllSessions);
                    oS["X-AutoAuth"] = "(default)";
                    //AddTXT("52%");
                }
                catch (Exception ee)
                {
                    resqustnum = 0;
                    AddTXT(ee.ToString());
                }
            };
            Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS)
            {
                oS.utilDecodeResponse();

                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)
                {
                    #region 获取版本
                    if (isconn == 1)
                    {
                        isconn++;
                        if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1)
                        {
                            //ctype = 1;
                            AddTXT("正在使用WIFI代理获取升级版本");
                        }
                        else
                        if (oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1)
                        {
                            //ctype = 3;
                            AddTXT("正在使用华为手机助手获取升级版本(旧)");
                        }
                        else
                        {
                            AddTXT("路径异常");
                        }
                    }
                    try
                    {
                        string v = oS.GetResponseBodyAsString();

                        if (v.IndexOf("\"status\":\"1\"") > -1 || v.IndexOf("\"status\":\"-1\"") > -1)
                        {
                            AddTXT("版本获取完毕");
                            resqustnum = 0;
                        }

                        //if (v.IndexOf("EVA-AL00C00B193") > -1||v.IndexOf("EVA-AL00C00B195") > -1)
                        {
                            //v = v.Replace("EVA-AL00C00B193", "EVA-AL10C00B193");
                            oS.utilSetResponseBody(v);
                        }

                        //AddTXT(v);


                        AddTXT("开始加载升级数据");
                        //string v1 = "{\"status\":\"0\",\"components\":[{\"name\":\"EVA-AL00C00B193\",\"version\":\"EVA-AL00C00B193\",\"versionID\":\"64011\",\"description\":\"【B192-B193差分包】EVA-AL00C00B193\",\"ruleAttr\":\"type_A\",\"createTime\":\"2016-10-18T10:48:42+0000\",\"url\":\"https://updatebeta.hicloud.com/TDS/data/FF38E764923BF183D14E26F58988076A9E4423EC65B51AE3526B4888E05AECC2/1477137653/files/p3/s15/G1434/g1433/v64011/f1/\",\"reserveUrl\":\"\",\"versionType\":\"2\"}]}";

                        //oS.utilSetResponseBody(v1);
                    }
                    catch (Exception ee)
                    {
                        AddTXT(ee.ToString());
                    }
                    #endregion
                }
            };
        }