From d8883917584300b7bb87baadbb720fc03f8da3f7 Mon Sep 17 00:00:00 2001 From: 1415ddfer <1783488228@qq.com> Date: Fri, 22 Mar 2024 19:45:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E7=BB=86?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Manager/EngineManager.cs | 90 +++++++++---------- Manager/LoginManager.cs | 161 +++++++++++----------------------- dialog/UseAccDataTextAdd.xaml | 2 +- 3 files changed, 100 insertions(+), 153 deletions(-) diff --git a/Manager/EngineManager.cs b/Manager/EngineManager.cs index 9416362..284a40a 100644 --- a/Manager/EngineManager.cs +++ b/Manager/EngineManager.cs @@ -24,11 +24,11 @@ namespace Zerolauncher.Manager MessageBox.Show("正在更新游戏数据,请等待1-3秒。\n 请检查网络", "错误", MessageBoxButton.OK, MessageBoxImage.Warning); return true; } - if (UpDateManager.state) - { - UpDateManager.DoUpdate(); - return true; - } + //if (UpDateManager.state) + //{ + // UpDateManager.DoUpdate(); + // return true; + //} var key = AccToKey(account); if (mGame.ContainsKey(key)) { return false; } if (CacheSha.errorCode != 0) { @@ -241,45 +241,47 @@ namespace Zerolauncher.Manager public static Process CheckEngineSafe(string mod) { bool is_first_luancher = EngineManager.CheckEmpy(); - if (mod == StaticHandleA.UpdateMode) - { - if (DataStream.dataStream.ecs.Length > 10) - { - string? now_bit; - using (SHA256 sha256 = SHA256.Create()) - { - using (FileStream fileStream = File.OpenRead(engine_file)) - { - byte[] hashBytes = sha256.ComputeHash(fileStream); - now_bit = BitConverter.ToString(hashBytes).Replace("-", string.Empty); - } - } - if (DataStream.dataStream.ecs != now_bit) - { - Trace.WriteLine("lalalala" + DataStream.dataStream.ecs); - throw new FileReadException("error esu1!"); - } - } - } - else if (!is_check && is_first_luancher) - { - string? now_bit; - using (SHA256 sha256 = SHA256.Create()) - { - using (FileStream fileStream = File.OpenRead(engine_file)) - { - byte[] hashBytes = sha256.ComputeHash(fileStream); - now_bit = BitConverter.ToString(hashBytes).Replace("-", string.Empty); - } - } - if (CacheSha.GetE() != now_bit) - { - Trace.WriteLine("lalalala1"); - throw new FileReadException("error esu0!"); - } - if (DataStream.dataStream.ecs != now_bit) { DataStream.dataStream.ecs = now_bit; DataStream.write(); } - is_check = true; - } + #region 检测代码 + //if (mod == StaticHandleA.UpdateMode) + //{ + // if (DataStream.dataStream.ecs.Length > 10) + // { + // string? now_bit; + // using (SHA256 sha256 = SHA256.Create()) + // { + // using (FileStream fileStream = File.OpenRead(engine_file)) + // { + // byte[] hashBytes = sha256.ComputeHash(fileStream); + // now_bit = BitConverter.ToString(hashBytes).Replace("-", string.Empty); + // } + // } + // if (DataStream.dataStream.ecs != now_bit) + // { + // Trace.WriteLine("lalalala" + DataStream.dataStream.ecs); + // throw new FileReadException("error esu1!"); + // } + // } + //} + //else if (!is_check && is_first_luancher) + //{ + // string? now_bit; + // using (SHA256 sha256 = SHA256.Create()) + // { + // using (FileStream fileStream = File.OpenRead(engine_file)) + // { + // byte[] hashBytes = sha256.ComputeHash(fileStream); + // now_bit = BitConverter.ToString(hashBytes).Replace("-", string.Empty); + // } + // } + // if (CacheSha.GetE() != now_bit) + // { + // Trace.WriteLine("lalalala1"); + // throw new FileReadException("error esu0!"); + // } + // if (DataStream.dataStream.ecs != now_bit) { DataStream.dataStream.ecs = now_bit; DataStream.write(); } + // is_check = true; + //} + #endregion var process = new Process { diff --git a/Manager/LoginManager.cs b/Manager/LoginManager.cs index 11e263a..3960514 100644 --- a/Manager/LoginManager.cs +++ b/Manager/LoginManager.cs @@ -1,14 +1,12 @@ -using Newtonsoft.Json.Linq; -using System.Diagnostics; +using System.Diagnostics; using System.Net; using System.Net.Http; -using System.Runtime.ConstrainedExecution; -using System.Text.RegularExpressions; namespace Zerolauncher.Manager { internal class LoginManager { + //private static readonly HttpClient client = new HttpClient(); public static async Task SendPostRequest() @@ -45,15 +43,19 @@ namespace Zerolauncher.Manager Console.WriteLine(responseString); } - public static void GameTest() + public static async Task AssetNet(HttpClient client, SingleGame game, string url, FormUrlEncodedContent? content =null) { - //Account account = new Account - //{ - // userName = "b1783488228", - // userPWD = "565656", - // serverId = "179" - //}; - //SingleGame game = new SingleGame(account); + try + { + var response = content != null? await client.PostAsync(url, content): await client.GetAsync(url); + return await response.Content.ReadAsStringAsync(); + } + catch (Exception ex) + { + game.Send($"{StaticHandleS.HintText} 网络发生错误,类型:{ex.GetType().Name},消息:{ex.Message}"); + return null; + } + } public static async Task DoLogin(SingleGame game) @@ -61,121 +63,64 @@ namespace Zerolauncher.Manager var client = new HttpClient(); string? need_web = null; client.Timeout = TimeSpan.FromSeconds(3); - switch (game.account.providerId) + switch (game.account.providerId) { case 0: game.Send($"{StaticHandleS.HintText} 尝试登玩家{game.account.nickName}到{ServicesStaticInfo.ServicesName[game.account.providerId]}的1服"); - { - HttpResponseMessage response; - try - { - response = await client.GetAsync("http://180.97.189.249:2023"); - } - catch (Exception ex) - { - game.Send($"{StaticHandleS.HintText} 网络发生错误,类型:{ex.GetType().Name},消息:{ex.Message}"); - need_web = $"http://180.97.189.249:2023"; - break; - } - var responseString = await response.Content.ReadAsStringAsync(); - int count = 0; - while (responseString.Contains("adfwkey")) - { - if (count++ <= 10) - { - game.Send($"{StaticHandleS.HintText} 网络被服务器拦截多次,请重试或联系管理员"); - need_web = $"http://180.97.189.249:2023"; - break; - } - var key = responseString.Split("adfwkey=")[1].Split("\"", 2)[0]; - game.Send($"{StaticHandleS.HintText} 被服务验证拦截-验证码key:{key}"); - try - { - response = await client.GetAsync("http://180.97.189.249:2023"); - } - catch (Exception ex) - { - game.Send($"{StaticHandleS.HintText} 网络发生错误,类型:{ex.GetType().Name},消息:{ex.Message}"); - need_web = $"http://180.97.189.249:2023"; - break; - } - responseString = await response.Content.ReadAsStringAsync(); - } - } + need_web = $"http://web.4399.com/stat/togame.php?target=ddt&server_id=S{game.account.serverId}"; { var values = new Dictionary + { + { "loginFrom", "uframe" }, + { "postLoginHandler", "default" }, + { "layoutSelfAdapting", "true" }, + { "externalLogin", "qq" }, + { "displayMode", "popup" }, + { "layout", "vertical" }, + { "appId", "www_home" }, + { "mainDivId", "popup_login_div" }, + { "includeFcmInfo", "false" }, + { "userNameLabel", "4399用户名" }, + { "userNameTip", "请输入4399用户名" }, + { "welcomeTip", "欢迎回到4399" }, + { "username", game.account.userName }, + { "password", game.account.userPWD } + }; + var responseString = await AssetNet(client, game, "http://ptlogin.4399.com/ptlogin/login.do?v=1", new FormUrlEncodedContent(values)); + // eventHandles.__errorCallback('密码错误'); + if (responseString == null) break; + if (responseString.Contains("eventHandles.__errorCallback")) { - { "lUsername", game.account.userName }, - { "lPassword", game.account.userPWD } - }; - var content = new FormUrlEncodedContent(values); - HttpResponseMessage response; - try - { - response = await client.PostAsync("http://180.97.189.249:2023/form/login.php", content); - } - catch (Exception ex) - { - game.Send($"{StaticHandleS.HintText} 网络发生错误,类型:{ex.GetType().Name},消息:{ex.Message}"); - need_web = $"http://180.97.189.249:2023"; + game.Send($"{StaticHandleS.HintText} 登录异常:{responseString.Split("eventHandles.__errorCallback('")[1].Split("'")[0]}"); break; } - var responseString = await response.Content.ReadAsStringAsync(); - JObject jsonObj = JObject.Parse(responseString); - game.Send($"{StaticHandleS.HintText} {jsonObj["title"]}"); - game.Send($"{StaticHandleS.HintText} {jsonObj["content"]}"); - if ((int)jsonObj["type"] != 0) - { - need_web = $"http://180.97.189.249:2023"; - break; - } - if(!game.Send($"{StaticHandleS.HintText} 登录成功,开始解析iframe")) return; + if (!game.Send($"{StaticHandleS.HintText} 登录成功,开始解析iframe")) return; } { + var responseString = await AssetNet(client, game, $"http://web.4399.com/stat/togame.php?target=ddt&server_id=S{game.account.serverId}"); + if (responseString == null) break; + if (!responseString.Contains("name=\"game_box\"")) + { + game.Send($"{StaticHandleS.HintText} 解析异常:服务器返回数据不正确"); + break; + } + responseString = responseString.Split("name=\"game_box\"")[1].Split("src=\"")[1].Split("\"")[0]; HttpResponseMessage response; try { - response = await client.GetAsync("http://180.97.189.249:2023/Play/Play.php?id=1"); + response = await client.PostAsync(responseString, null); } catch (Exception ex) { - game.Send($"{StaticHandleS.HintText} 网络发生错误,类型:{ex.GetType().Name},消息:{ex.Message}"); - need_web = $"http://180.97.189.249:2023"; + game.Send($"{StaticHandleS.HintText} 网络发生错误,类型:{ex.GetType().Name.Replace(" ", "_")},消息:{ex.Message.Replace(" ", "_")}"); break; } - var responseString = await response.Content.ReadAsStringAsync(); - if (!responseString.Contains("var swfPath")) - { - game.Send($"{StaticHandleS.HintText} 解析异常:服务器返回数据不正确1"); - need_web = $"http://180.97.189.249:2023"; - break; - } - //responseString = "" + responseString.Split("var swfPath")[1].Split("};")[0] + "};"; - string pattern = @"var swfPath = ""(.*?)"";(.*?){(.*?)};"; - Match match = Regex.Match(responseString, pattern, RegexOptions.Singleline); - - if (!match.Success) - { - game.Send($"{StaticHandleS.HintText} 解析异常:服务器返回数据不正确2"); - //Trace.WriteLine($"---------{responseString}|"); - need_web = $"http://180.97.189.249:2023"; - break; - } - string url = match.Groups[1].Value; - string parameters = match.Groups[3].Value; - - string patternParams = @"(\w+): ""(.*?)"""; - MatchCollection matches = Regex.Matches(parameters, patternParams); - - url += "?"; - foreach (Match m in matches) - { - url += $"{m.Groups[1].Value}={WebUtility.UrlEncode(m.Groups[2].Value)}&"; - } - url = url.TrimEnd('&'); - Trace.WriteLine(url); - game.Send($"{StaticHandleS.GameSa} {url}"); + responseString = await response.Content.ReadAsStringAsync(); + responseString = "http://" + response.RequestMessage.RequestUri.ToString().Split("/")[2] + "/" + responseString.Split("movie\" value='")[1].Split("'")[0]; + //Trace.WriteLine(responseString); + game.Send($"{StaticHandleS.GameSa} {responseString}"); } + need_web = null ; break; default: game.Send($"{StaticHandleS.HintText} 错误。未适配的运营商:{game.account.serverId}"); diff --git a/dialog/UseAccDataTextAdd.xaml b/dialog/UseAccDataTextAdd.xaml index 02010b3..f5c8279 100644 --- a/dialog/UseAccDataTextAdd.xaml +++ b/dialog/UseAccDataTextAdd.xaml @@ -6,7 +6,7 @@ mc:Ignorable="d" d:DesignHeight="169" d:DesignWidth="290"> - +