Як згенерувати 2FA програмою ZennoPoster

Автентифікація за допомогою одноразових кодів базуються на проміжках часу є популярним способом, який використовуюється на багатьох сервісах. Інколи код може генеруватись за допомогою застосунка для браузера чи телефона, а інколи просто відправляється на електронну пошту, соціальну мережу чи за допомогою бота у сервісі чатів ( наприклад Telegram, Viber ). Особливістю може бути те, що користувач самостійно може вибрати який спосіб йому більше подобається. Після чого, він завжди зможе згенерувати потрібний 2FA код наприклад застосунком, а самому сервісу не потрібно буде нести затрати на відправку і обробку повідомлень на email (які інколи можуть не доходити вчасно і попадати в папку spam).

Я записував відео про те, як проходити 2FA програмою ZennoPoster, спочатку зчитуючи QR код, потім генеруючи потрібне значення.

В цьому відео мова йде про використання двух бібліотек, посилання на репозиторії приведу тут:

github.com/zxing/zxing
github.com/glacasa/TwoStepsAuthenticator

Код, який зчитує QR код я вже розміщував у цій публікації. Але його можна інколи просто скопіювати на сайті в буфер обміну. В такому випадку, маючи секретне слово ми можемо прочитати його звідти використовуючи таку інструкцію:

string secret = System.Windows.Forms.Clipboard.GetText().Trim();

Тепер коли наша змінна містить секретне слово – можна виконати інструкції, які на його основі згенерують 2FA одноразовий код:

string code = string.Empty;
try {
var token = new TwoStepsAuthenticator.TimeAuthenticator();
code = token.GetCode(secret);
}
catch {
code = string.Empty;
}
return code;

Одержавши згенерований код, його можна помістити в буфер обміну наприклад такою інструкцією:

System.Windows.Forms.Clipboard.SetText(code);

Остається тільки вставити 2FA в потрібному полі на потрібному сайті. Такий проєкт просто добавляємо собі в ZennoPoster, і запускаємо завжди коли потрібно одержати одноразовий код (перед виконанням в буфер обміну необхідно помістити секрет), і одноразовий код буде згенеровано і встановлено в буфер обміну.

Використовував я автоматизацію цього процесу колись для авторизації на криптовалютних біржах. Для входу в аккаунти в криптовалютні казіно, де роздавали бонуси за вхід (було колись таке 999dice). А зараз використовую для входу в онлайн кошелька на блокчейні WAX. Мені здається, що генерація таких тимчасових кодів автентифікації проєктом в ZennoPoster більш беспечне, ніж використання сторонніх застосунків, адже в такому випадку приходиться довіряти їм секретне слово, на основі якого генеруються потрібні коди. Власне самі застосунки можуть бути беспечними, просто зловмисники знають про них, і можуть знаходити способи як за допомогою вірусів одержати доступ до цих секретних даних.

Зараз, коли я знову повернувся до теми автентифікації, то чітко розумію, що з цілью безпеки, можна створити таблицю в MySQL, і на PHP написати простеньке API, документуючи його наприклад використовуючи Swagger. В табличці просто можна зберігати ідентифікатор акаунта і секретне слово. Після чого, відправляючи відомий ідентифікатор у відповідь одержувати готовий 2FA код. Перевага такого способу очевидна – секретне слово однозначно не буде передаватись по мережі більше ніж один раз (в момент добавлення в базу даних). А використовувати можна не тільки в ZennoPoster, але і створити можна для себе TelegramBot, через якого просто одержувати доступ до актуальних кодів 2FA.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *