Sign in to follow this  
Followers 0
Guest stibs

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

6 posts in this topic

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

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

Сегодня будем защищать аккаунт игрока с помощью еще одного нехитрого способа - 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. 

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

 

Share this post


Link to post
Share on other sites

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

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); // спавним игрока или что вам там надо делаем тут
}

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Поправьте: 

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 , создано

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

Share this post


Link to post
Share on other sites

@Zishka,

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

 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Джеймс
      By Джеймс
      Здравствуйте Ув.Участиники PAWNO-RUS,
      Столкнулся с проблемой - *Транспорт сломанный при загрузке на сервер* То есть загружаешь Т.С после покупки с 50% состоянии
      С исправлением затрудняюсь, может вы можете как то помочь.
      Заранее спасибо!
       
       
       
       
    • Раксон Фаркрай
      By Раксон Фаркрай


      Просмотр файла ARIZONA RP V PODAROK LOGS + FORUM + SITE 1.0.0
      Переписал такие систему квестов, кладов, начальных работ, смерти.
      Скрины обновлений, скину чуть позже.
      Глобальная оптимизация таймеров, циклов, сохранений, старых систем.
      Полностью отказались от плагина fmt.
      Фикс всех багов, которые нашли игроки.
      Отображение новых скинов, машин в инвентаре/донате будут заменяться на стандартные, если игрок без лаунчера отображение скинов свыше 311 ид будет заменяться на дефолтный(визуально). Отображение 3д текстов на автомобиле без лаунчера(визуально).
      Заточки аксессуаров
      Перевод аккаунтов с других серверов(MYSQL и с одобрением администрации и проверки аккаунта ботом).
      История наказаний с нуля
      Написаны новые анти читы(dgun, teleport car, rvanka, teleport for mark).
      Рекон с нуля(фулл копия) + переписаны сертификаты на читабельный код
      Система биткоинов написана
      Редактор для дома/бизнеса
      Секондхенд
      Сампбет
      ТестДрав машин
      LauncherAddon crack (by legendver)
      и Все это за 150 рублей !
      ВСЕ ОБНОВЛЕНИЯ БЕСПЛАТНО
      Добавил Раксон Фаркрай Добавлено 21.07.2021 Категория Моды Автор Я