Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите AuthMe автоматическая смена пароля.

Тема в разделе "Помощь", создана пользователем LobsterVilka, 14 апр 2017.

Статус темы:
Закрыта.
  1. Автор темы
    LobsterVilka

    LobsterVilka Новичок Пользователь

    Баллы:
    16
    Имя в Minecraft:
    431Craft
    Можно ли сделать чтобы в AuthMe менялся пароль при каждом перезаходе на сервер для определённых игроков а новый пароль отправлялся на почту?
    Сойдут варианты от командных блоков до модификаций плагина.
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    И не останется ни одного игрока с таким говном.
     
  4. Автор темы
    LobsterVilka

    LobsterVilka Новичок Пользователь

    Баллы:
    16
    Имя в Minecraft:
    431Craft
    Это для админов.
     
  5. AtomicScience

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

    Баллы:
    76
    И не останется ни одного админа с таким говном
     
  6. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    :good:
     
  7. Автор темы
    LobsterVilka

    LobsterVilka Новичок Пользователь

    Баллы:
    16
    Имя в Minecraft:
    431Craft
    Я всё ещё жду ответа на поставленный вопрос.
     
  8. AtomicScience

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

    Баллы:
    76
    Просто скачай плагин на админский пароль и не парься
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну окай сам нарвался.
    Вот те либа для одноразовых паролей.
    Код:
        public static String getQRBarcodeURL(String user, String host, String secret) {
            String format = "https://www.google.com/chart?chs=200x200&chld=M%%7C0&cht=qr&chl=otpauth://totp/%s@%s%%3Fsecret%%3D%s";
            return String.format(format, user, host, secret);
        }
    
        private static boolean check_code(String secret, long code, long t) throws Exception {
                  Base32 codec = new Base32();
                  byte[] decodedKey = codec.decode(secret);
                  int window = 1;
                  for (int i = -window; i <= window; ++i) {
                    long hash = verify_code(decodedKey, t + i);
    
                    if (hash == code) {
                      return true;
                    }
                  }
                  return false;
        }
    
        private static int verify_code(byte[] key, long t) throws Exception {
            byte[] data = new byte[8];
            long value = t;
            for (int i = 8; i-- > 0; value >>>= 8) {
                data[i] = (byte) value;
            }
            SecretKeySpec signKey = new SecretKeySpec(key, "HmacSHA1");
            Mac mac = Mac.getInstance("HmacSHA1");
            mac.init(signKey);
            byte[] hash = mac.doFinal(data);
            int offset = hash[20 - 1] & 0xF;
            long truncatedHash = 0;
            for (int i = 0; i < 4; ++i) {
                truncatedHash <<= 8;
                truncatedHash |= (hash[offset + i] & 0xFF);
            }
            truncatedHash &= 0x7FFFFFFF;
            truncatedHash %= 1000000;
            return (int) truncatedHash;
        }
    Сгенерировать секретокей так.
    byte[] buffer = new byte[10];
    new Random().nextBytes(buffer);
    Base32 codec = new Base32();
    byte[] secretKey = Arrays.copyOf(buffer, 10);
    byte[] bEncodedKey = codec.encode(secretKey);
    String encodedKey = new String(bEncodedKey);

    Отправить недоадмину QRB картинку.
    getQRBarcodeURL("example", "localhost", encodedKey);

    Проверять паролики так.
    check_code(encodedKey, verifi, new Date().getTime() / 30000);

    Через пару дней недоадмин сменит сервер.
    Пруфит"
     
Статус темы:
Закрыта.

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