README.md

    Альтернатива “телефонному” 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\

    Конвейеры
    0 успешных
    0 с ошибкой