public static void ConnectToServer(ref ENetPeer peer, UserData userData = null, bool FirstInitialUseOfBot = false) { Console.WriteLine("Internal proxy client is attempting a connection to server..."); string ip = globalUserData.Growtopia_IP; int port = globalUserData.Growtopia_Port; if (peer == null) { peer = client.Connect(new IPEndPoint(IPAddress.Parse(ip), port), 2, 0); } else { if (peer.IsNull) { peer = client.Connect(new IPEndPoint(IPAddress.Parse(ip), port), 2, 0); } else if (peer.State != ENetPeerState.Connected) { peer = client.Connect(new IPEndPoint(IPAddress.Parse(ip), port), 2, 0); } else { // peer = client.Connect(new IPEndPoint(IPAddress.Parse(ip), port), 2, 0); globalUserData.awaitingReconnect = true; peer.Disconnect(0); //In this case, we will want the realPeer to be disconnected first // sub server switching, most likely. peer = client.Connect(new IPEndPoint(IPAddress.Parse(ip), port), 2, 0); } } }
private void Peer_OnReceive_Client(object sender, ENetPacket e) { try { // this is a specific, external client made only for the purpose of using the TRACK packet for our gains/advantage in order to check all accounts quick and efficiently. byte[] packet = e.GetPayloadFinal(); Console.WriteLine("RECEIVE TYPE: " + packet[0].ToString()); updatestatus("Received:" + packet[0].ToString(), 1); switch (packet[0]) { case 1: // HELLO server packet. { PacketSending packetSender = new PacketSending(); packetSender.SendPacket(2, CreateLogonPacket(animaTextBox4.Text, animaTextBox3.Text), eNetP); updatestatus("Loginning: " + packet[0].ToString(), 1); break; } case 2: case 3: { Console.WriteLine("[ACCOUNT-CHECKER] TEXT PACKET CONTENT:\n" + Encoding.ASCII.GetString(packet.Skip(4).ToArray())); string game = Encoding.ASCII.GetString(packet.Skip(4).ToArray()); if (game.Contains("suspend")) { updatestatus("Account Suspended!", 3); eNetP.Disconnect(0); } if (game.Contains("ban")) { updatestatus("Account Banned!", 3); eNetP.Disconnect(0); } if (game.Contains("maint")) { updatestatus("Growtopia servers f**k!", 3); eNetP.Disconnect(0); } if (game.Contains("play.sfx")) { updatestatus("Account Bug!", 3); eNetP.Disconnect(0); } if (game.Contains("UPDATE REQUIRED")) { game.Replace("msg|`4", ""); game = Regex.Match(game, @"\d+").Value; game = game.Insert(1, "."); ACCOUNTCHECK.Properties.Settings.Default.gamever = game; ACCOUNTCHECK.Properties.Settings.Default.Save(); ACCOUNTCHECK.Properties.Settings.Default.gamever = game_version; Console.WriteLine("fuckchecker:" + game); updatestatus("Restart need!", 1); } if (game.Contains("password is wrong")) { updatestatus("Wrong Password!", 3); eNetP.Disconnect(0); } //Incorrect logon token.. if (game.Contains("Incorrect logon token")) { VariantList ad = new VariantList(); byte[] tankPacket = ad.get_struct_data(packet); VariantList.VarList vList = ad.GetCall(ad.get_extended_data(tankPacket)); vList.netID = BitConverter.ToInt32(tankPacket, 4); // add netid vList.delay = BitConverter.ToUInt32(tankPacket, 20); // add keep track of delay modifier string ip = (string)vList.functionArgs[4]; if (ip.Contains("|")) { ip = ip.Substring(0, ip.IndexOf("|")); } int port = (int)vList.functionArgs[1]; userID = (int)vList.functionArgs[3]; token = (int)vList.functionArgs[2]; lmode = (int)vList.functionArgs[5]; Growtopia_IP = ip; Growtopia_Port = port; ConnectCurrent(); updatestatus("Peer Reset Success!", 1); Thread.Sleep(10); } //Incorrect logon token.. break; } case 4: { VariantList ad = new VariantList(); byte[] tankPacket = ad.get_struct_data(packet); if (tankPacket[0] == 1) { VariantList.VarList vList = ad.GetCall(ad.get_extended_data(tankPacket)); vList.netID = BitConverter.ToInt32(tankPacket, 4); // add netid vList.delay = BitConverter.ToUInt32(tankPacket, 20); // add keep track of delay modifier // Console.WriteLine(VarListFetched.FunctionName); if (vList.FunctionName == "OnSendToServer") { string ip = (string)vList.functionArgs[4]; if (ip.Contains("|")) { ip = ip.Substring(0, ip.IndexOf("|")); } int port = (int)vList.functionArgs[1]; userID = (int)vList.functionArgs[3]; token = (int)vList.functionArgs[2]; lmode = (int)vList.functionArgs[5]; Growtopia_IP = ip; Growtopia_Port = port; ConnectCurrent(); updatestatus("Peer Reset Success!", 1); } // variant call, just rn used for subserver switching } break; } case (byte)NetTypes.NetMessages.TRACK: // TRACK packet. { Console.WriteLine("[ACCOUNT-CHECKER] TRACK PACKET CONTENT:\n" + Encoding.ASCII.GetString(packet.Skip(4).ToArray())); File.AppendAllText("s.temp", Encoding.ASCII.GetString(packet.Skip(4).ToArray())); Growtopia_Port = Growtopia_Master_Port; // todo auto get port Growtopia_IP = Growtopia_Master_IP; PacketSending asd = new PacketSending(); asd.SendPacket(2, "action|enter_game", eNetP); if (Encoding.ASCII.GetString(packet.Skip(4).ToArray()).Contains("Gem")) { File.AppendAllText("d.temp", Encoding.ASCII.GetString(packet.Skip(4).ToArray())); eNetP.Disconnect(0); } break; } default: break; } } catch { } }