Комментаторам выше предлагаю прочитать
спецификацию TOTP и перестать гадать, зависит оно от времени или нет.
Внутре
у ней неонка у физического брелка именно аппаратная реализация TOTP. У мобильного приложения тоже TOTP, но параллельно с этим при попытке логина от сервера (через интернет) прилетает запрос "тут это, кто-то логинился, ты ли это?" и можно одобрить нажатием кнопки. Точно так же, как сделан сейчас вход в аккаунт Google. Какой способ использовать, выбирает пользователь.
Например, я просто выдрал secret из приложения и загнал его в
FreeOTP, потому что FreeOTP генерирует мне коды для всех онлайн-сервисов, поддерживающих TOTP, а держать для каждого конкретного сервиса его конкретное приложение нахрен не упёрлось. Именно для этого и нужна стандартизация, чтобы каждый сервис не изобретал свой велосипед.
Сбрутить TOTP.... удачи. Secret там длинный, а количество попыток, если сервис вменяемый и заблокирует вход на N минут после M неудачных попыток, у вас ограничено. Придумаете способ быстро и без проблем сбрутить - мировая слава на конференциях по безопасности вам обеспечена.