Альтернатива “телефонному” Google Authenticator для компа.
Зачем?
Для использования функционала Google Authenticator на компе. Тыкнул в иконку - получил TOTP код в буфере обмена.
Сборка:
gcc main.c -Wall -Wextra -O2 -s -lcrypto -o totp-authenticator
Скрипт для запуска (проверено в Debian 12, XFCE)
to_clipboard.sh
Извлечение ключа из телефонного приложения Google Authenticator (в приложении ключ тоже останется):
В меню приложения выбираем “Перенести аккаунты” -> “Экспорт аккаунтов”, выбрать нужный аккаунт и нажать “Далее”, на экране будет QR-код. Этот QR-код надо преобразовать в текст практически любым приложением для сканирования QR-кодов. Должно получиться что-то типа:
\
otpauth-migration://offline?data=Ci4KEFAAAAAAAAAAAAAAAAAAApESFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwE=
Далее, декодируем кусок из base64
$ echo “Ci4KEFAAAAAAAAAAAAAAAAAAApESFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwE=” | base64 -d | hexdump -v -C
00000000 0a 2e 0a 10 50 00 00 00 00 00 00 00 00 00 00 00 |….P………..|
00000010 00 00 02 91 12 14 00 00 00 00 00 00 00 00 00 00 |…………….|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…………….|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 |…………….|
00000040 01 |.|
00000041
16 байтов, начиная с адреса 0x00000004 и есть ключ (50 00 00 00 00 00 00 00 00 00 00 00 00 00 02 91)
Далее, перекодируем его в base32 и получаем строку ключа для нашей утилиты:
$ echo -n “50 00 00 00 00 00 00 00 00 00 00 00 00 00 02 91” | xxd -r -p | base32
KAAAAAAAAAAAAAAAAAAAAAACSE======
Соответственно, чтобы получить одноразовый пароль, нужно запустить утилиту с ключом:
$ ./tools/authenticator.exe –key KAAAAAAAAAAAAAAAAAAAAAACSE
KEY: ‘KAAAAAAAAAAAAAAAAAAAAAACSE’
HASH: ‘SHA1’
TIME: 1682340609
last: 21
TOTP: 821204\