Beispiel #1
0
        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);
                }
            }
        }
Beispiel #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
            {
            }
        }