Гость stibs

Защита аккаунта игрока - Google Authenticator

В теме 6 сообщений

Переходим к заключению циклу уроков,

посвященных защите аккаунта игрока. Это третий финальный урок. И мы начинаем. 

Сегодня будем защищать аккаунт игрока с помощью еще одного нехитрого способа - Google Authenticator. Данная штука генерирует временный пароль, в кодировке BASE32. Соответственно даже если злоумышленник будет знать основной пароль от вашего аккаунта, временный он уже НИКАК не получит. 

Приступаем к самой сути. 

Скачиваем эту папку (плагин с инклудом):

TOTP-plugin-1.0.0.zip

В ней есть версия плагина под windows и linux, также содержится инклуд. 

А теперь переходим к коду:
Ко всем #include / в начало мода:

#include <TOTP>

Ну и теперь для примера создадим команду, которая будет генерировать код в base32 (все заглавные английские буквы от A до Z и цифры от 2 до 7), после чего пользователь введет данный код в приложение Google Authenticator и ему выдаст второй код, который он должен будет ввести уже в диалог собственно. 

В начало мода:
 

new code[17];

Ко всем командам (zcmd / dc_cmd) (если уберете шапку команды, то можно куда угодно :))

CMD:secretcode(playerid)
{
    new base_encoding[32][] =
    {
        "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y","Z","2", "3", "4", "5", "6", "7"
    }
    ;
    for(new i; i < 17; i++) strcat(code, base_encoding[random(sizeof(base_encoding))]); // генерируем наш код в кодировке BASE32
    SendClientMessage(playerid, -1, "Введите код, который сейчас появится на экране в приложение Google Authenticator, а затем введите в поле для ввода код, которое вам выдало приложение");
    static const fmt_str[] = "{BEBEBE}Код, который необходимо ввести в приложение GoogleAuthenticator: {FFFFFF}%s\n{BEBEBE}Введите код, который выдало приложение:";
    new str[sizeof(fmt_str)+ (-2+sizeof(base_encoding))];
    format(str, sizeof(str), fmt_str, code); // форматируем строку
    ShowPlayerDialog(playerid, 1302, DIALOG_STYLE_INPUT, "Подтверждение Гугл Аутентификатор", str, "Ввести", "Отмена");
    return true;
}

Далее напишем действие для нашего диалога:
 

if(dialogid == 1302)
{
    if(!strlen(inputtext)) return Kick(playerid); // ничего не ввел
    new codegoogle = GoogleAuthenticatorCode(code, gettime()); //получаем код от гугл (из цифр)
    if(strval(inputtext) != codegoogle) return Ban(playerid); // ввел неверно код, баним IPшник
    SendClientMessage(playerid, -1, "Код введен верно, вход на сервер разрешен!"); // если все норм
    SpawnPlayer(playerid); // спавним игрока или что вам там надо делаем тут
}

Ну и в принципе все. 

Автор данного кода и текста: @stibs

Автор идеи: Games. 

Автор плагина: Games. 

При копировании на другие ресурсы обязательно указывайте авторство и ссылку на источник. Если локальные правила форума не позволяют выкладывать ссылки на посторонние ресурсы, тогда материал к публикации запрещается.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Куда кидать это?:

if(dialogid == 1302)
{
    if(!strlen(inputtext)) return Kick(playerid); // ничего не ввел
    new codegoogle = GoogleAuthenticatorCode(code, gettime()); //получаем код от гугл (из цифр)
    if(strval(inputtext) != codegoogle) return Ban(playerid); // ввел неверно код, баним IPшник
    SendClientMessage(playerid, -1, "Код введен верно, вход на сервер разрешен!"); // если все норм
    SpawnPlayer(playerid); // спавним игрока или что вам там надо делаем тут
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Дима Нисанский, в OnDialogResponse.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поправьте: 

DIALOG_STLYE_INPUT
ShowPlayerDialog(playerid, 1302, DIALOG_STYLE_INPUT, "Подтверждение Гугл Аутентификатор", str, "Ввести", "Отмена");

 

Ошибку выдаёт:

error 001: expected token: ",", but found ";"

Строка:

for(new i; i < 17; i++) strcat(googlecode, base_encoding[random(sizeof(base_encoding))]; 

 

Заметка от DEST , создано

Поправил, спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Zishka,

for(new i; i < 17; i++) strcat(googlecode, base_encoding[random(sizeof(base_encoding))]); 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как активировать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • KAIF
      От KAIF


      Скачать файл GTA RolePlay-МОД,СБОРКА
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
      Добавил KAIF Добавлено 01.01.2024 Категория Моды Автор Aleksandr  
    • KAIF
      От KAIF
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите