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

Статус
Закрыто для дальнейших ответов.

LobsterVilka

Активный участник
Пользователь
Баллы
61
Ник в Minecraft
PluginsInstaller
Можно ли сделать чтобы в AuthMe менялся пароль при каждом перезаходе на сервер для определённых игроков а новый пароль отправлялся на почту?
Сойдут варианты от командных блоков до модификаций плагина.
 
Ну окай сам нарвался.
Вот те либа для одноразовых паролей.
Java:
    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);

Через пару дней недоадмин сменит сервер.
Пруфит"
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх Низ