1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Защита от взлома сервер. V.1 (Plugins)

Тема в разделе "Оффтопик", создана пользователем TopGammer, 17 янв 2017.

  1. Автор темы
    TopGammer

    TopGammer Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Gammer
    Всем привет дамы и господа, с вами снова TopGammer и сегодня я хочу рассказать о одном свеже разработанном плагине. Возможно я сам наступаю себе на хвост но плагин очень эффективный.
    И так в чем суть плагина:
    В конфиге устанавливается пароль.
    При входе на сервер у пользователя проверяется наличие прав /gm 1 /op
    Если у пользователя есть опка или gamemode его просят ввести пароль установленный в конфиге.
    Данная система защищает от ForseOp ForgeOMB
    Да и многого другого, возможности обойти ее просто нет.
    Как вам?
     
  2. CnoWes

    CnoWes Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    CnoWes
    Никак, такие плагины уже есть.
     
  3. Автор темы
    TopGammer

    TopGammer Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Gammer
    Готов поспорить, что мой плагин гораздо лучше)
     
  4. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    И в чём же он лучше?
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Дыра в онлайн моде уже давно пофикшена. ТС возвращайся в свою берлогу обратно.
     
  6. book777

    book777 Старожил Пользователь

    Баллы:
    123
    наличием шеллов
     
  7. Автор темы
    TopGammer

    TopGammer Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Gammer
    Да я уже знаю что давно, но суть в том что при допустим бруте пароля администратора и заходе на сервер, помогает и выручает плагин. Это очень даже хорошо? Или есть альтернативы?
     
  8. SimMiMo

    SimMiMo Активный участник Пользователь

    Баллы:
    76
    Хакают дедики и бд - защищаемся от опок.
    Надо зреть в корень и фиксить на корню возможности глубоко проникнуть в инфраструктуру проекта.
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Для этого делают задержки или капчу.
     
  10. XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Код:
    
    package ru.xtime.protects;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerKickEvent;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.event.player.PlayerMoveEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Protect extends JavaPlugin implements Listener
    {
        HashMap<Player, Integer> login = new HashMap<Player, Integer>();
        Protect helper = this;
        ArrayList<String> ips = new ArrayList<String>();
        public void onEnable() {
            login.clear();
            this.saveDefaultConfig();
            Bukkit.getScheduler().scheduleSyncRepeatingTask(helper, new Runnable() {
                @Override
                public void run() {
                    for (Player p : Bukkit.getOnlinePlayers()) {
                        if (p.isOp() || p.hasPermission("serverprotector.protect")) {
                            if (!ips.contains(p.getAddress().getAddress().getHostAddress())) {
                                login.put(p, 0);
                            }
                        }
                    }
                    for (Player p : login.keySet()) {
                        p.sendMessage(getConfig().getString("msg").replace('&', '§'));
                    }
                }
            }, 20, 20);
            Bukkit.getPluginManager().registerEvents(helper, helper);
        }
        public void onDisable() {
            Bukkit.getScheduler().cancelTasks(helper);
            login.clear();
            ips.clear();
        }
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void onBreak(BlockBreakEvent event) {
            if (login.containsKey(event.getPlayer()) ){
                event.setCancelled(true);
            }
        }
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void onPlace(BlockPlaceEvent event) {
            if (login.containsKey(event.getPlayer()) ){
                event.setCancelled(true);
            }
        }
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void onPlayerInteract(PlayerInteractEvent event) {
            if (login.containsKey(event.getPlayer()) ){
                event.setCancelled(true);
            }
        }
    
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void AsyncPlayerChatEvent(AsyncPlayerChatEvent event) {
            if (login.containsKey(event.getPlayer()) ){
                event.setCancelled(true);
            }
        }
    
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void OnJoin(PlayerJoinEvent event) {
            if (event.getPlayer().isOp() || event.getPlayer().hasPermission("serverprotector.protect")) {
                if (!ips.contains(event.getPlayer().getAddress().getAddress().getHostAddress())) {
                    login.put(event.getPlayer(), 0);
                }
            }
        }
    
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = true)
        public void OnLogin(PlayerLoginEvent event) {
            if (event.getPlayer().isOp() || event.getPlayer().hasPermission("serverprotector.protect")) {
                if (!ips.contains(event.getAddress().getHostAddress())) {
                    login.put(event.getPlayer(), 0);
                }
            }
        }
    
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void OnLeave(PlayerQuitEvent event) {
            if (login.containsKey(event.getPlayer())){
                login.remove(event.getPlayer());
            }
        }
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void OnKick(PlayerKickEvent event) {
            if (login.containsKey(event.getPlayer())){
                login.remove(event.getPlayer());
            }
        }
        @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false)
        public void Command(PlayerCommandPreprocessEvent event) {
            if (login.containsKey(event.getPlayer()) ){
                String[] mess2 = event.getMessage().split(" ");
                if (mess2.length >= 1) {
                    if (mess2[0].equalsIgnoreCase("/pas")){
                        if (mess2[1].equals(this.getConfig().getString("pass"))) {
                            login.remove(event.getPlayer());
                            ips.add(event.getPlayer().getAddress().getAddress().getHostAddress());
                        }
                    }
                }
                event.setCancelled(true);
            }
        }
        @EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled = false)
        public void onMove(PlayerMoveEvent event) {
            if (login.containsKey(event.getPlayer()) ){
                event.setTo(event.getFrom());
            }
        }
    }
    
    конфиг:
    Код:
    msg: "§7[§fПрефикс§7]§f Оппа... Не по понятиям живем, чувак. Вводи админ пароль: §c/pas <пароль> (Пароль указывать в /plugins/ServerProtector/config.yml)"
    pass: "рубакит"
    
     
  11. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Ура, мой говнокод :)
     
  12. Автор темы
    TopGammer

    TopGammer Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Gammer
    А как-же защита? От поломки блоков, написание в чат, во время входа и тд)[/
     
  13. InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Слушай, я тут немного затупил, но что значит массив ips? Чем заполняется и для чего используется?
     
  14. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Типо если ввел пароль, то после перезахода его не нужно вводить с данного айпи.
    Какбы там все есть это.
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Так и быть динозавры дырявые, жуйте https://dev.bukkit.org/projects/loginsecurity.
    Специально для этого писался плагин, когда Force OP был рабочим.
     
  16. XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Это есть там, если ты не видел

    упс не видел что slavik тоже самое написал XD
     
  17. mitya

    mitya Активный участник Пользователь

    Баллы:
    66
    А чем плох обычный permissions?
    Код:
    
      @EventHandler
        public void gm(final PlayerGameModeChangeEvent a)
        {
           final Player p = a.getPlayer();    
           if (a.getNewGameMode() == GameMode.CREATIVE)
           {
              if ( ! p.hasPermission("fixperm.creative.bypass"))
              {
               if ( ! this.getConfig().getBoolean("UsePerWorldCreative"))
                 {
                    a.setCancelled(true);
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("NoPermMsg").replace("%p", String.valueOf(a.getNewGameMode()))));
                 }
                 else
                 {
                    final String playerWorld = p.getWorld().getName();
                    final List<String> s = this.getConfig().getStringList("WorldsCreative");
    
                    for (final String world : s)
                    {
                        if (this.getServer().getWorld(world) == null || ! playerWorld.equalsIgnoreCase(this.getServer().getWorld(world).getName()))
                        {
                           continue;
                        }
                           
                        a.setCancelled(true);
                        p.sendMessage(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("NoPermMsgW").replace("%p", String.valueOf(a.getNewGameMode()))));
                    }
                 }
              }
           }
    
        }
    
    
     
    Последнее редактирование: 19 янв 2017
  18. XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    что это?
     
  19. mitya

    mitya Активный участник Пользователь

    Баллы:
    66
    Фигня одна - не заморачивайся )
     
  20. Автор темы
    TopGammer

    TopGammer Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Gammer
    1. @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = true)
    2. public void OnLogin(PlayerLoginEvent event) {
    3. if (event.getPlayer().isOp() || event.getPlayer().hasPermission("serverprotector.protect")) {
    4. if (!ips.contains(event.getAddress().getHostAddress())) {
    5. login.put(event.getPlayer(), 0);
    6. }
    7. }
    8. } Разве это обязательно?
     

Поделиться этой страницей