private void ConnectBtn_Click(object sender, EventArgs e) { bool isCancelling = ConnectBtn.Text == "Cancel"; ConnectBtn.Text = isCancelling ? "Connect" : "Cancel"; if (isCancelling) { ResetSetup(); _main.Game.Disconnect(); return; } _main.Modulus = ModulusTxt.Text; _main.Exponent = int.Parse(string.IsNullOrEmpty(ExponentTxt.Text) ? "0" : ExponentTxt.Text); int gamePort = 0; string gameHost = GameHostTxt.Text.ToLower(); bool portConvertSuccess = int.TryParse(GamePortTxt.Text, out gamePort); if (TanjiMode.IsManual) { if (UseCustomClient) { Eavesdropper.Initiate(); } _main.Game.Connect(true, gameHost, gamePort); StatusTxt.BeginAnimation("Connecting{0} | Port: " + GamePortTxt.Text, "..."); } else { FiddlerApplication.Startup(8081, FiddlerCoreStartupFlags.Default); StatusTxt.BeginAnimation("Extracting Host/Port{0}", "..."); } }
private byte[] ProcessResponse(byte[] payload, bool isFlash) { if (UseCustomClient && isFlash && payload.Length > 3000000) { if (!_replaceKeys) { payload = _flash.ToBytes(); } else { _flash = new ShockwaveFlash(payload); ReplaceRsaKeys(_flash); payload = _flash.ToBytes(); string clientPath = Path.Combine("Patched Clients", GameData.FlashClientBuild + ".swf"); Task.Factory.StartNew(() => _flash.Save(clientPath, true)); } FiddlerApplication.Shutdown(); StatusTxt.BeginAnimation("Connecting{0} | Port: " + GameData.Port, "..."); return(payload); } else if (TanjiMode.IsManual) { return(payload); } string response = Encoding.UTF8.GetString(payload); if (response.Contains("connection.info.host") && response.Contains("connection.info.port")) { GameData = HGameData.Parse(response); if (!UseCustomClient) { string patchedClientPath = Path.Combine("Patched Clients", GameData.FlashClientBuild + ".swf"); if (!File.Exists(patchedClientPath)) { UseCustomClient = _replaceKeys = true; } else { LoadGameClient(patchedClientPath); } } if (!UseCustomClient) { FiddlerApplication.Shutdown(); StatusTxt.BeginAnimation("Connecting{0} | Port: " + GameData.Port, "..."); } else if (_replaceKeys) { StatusTxt.BeginAnimation("Modifying Client{0}", "..."); } else { StatusTxt.BeginAnimation("Replacing Client{0}", "..."); } _main.Game.Connect(true, GameData.Host, GameData.Port); response = response.Replace("/Habbo.swf", "/Habbo.swf?" + _numberGenerator.Next()); payload = Encoding.UTF8.GetBytes(response); } return(payload); }