Если вам нужно сгенерировать одноразовые пароли по алгоритму Mobile-OTP/mOTP, из командной строки, не возясь с телефоном.
Это самопровозглашенный «стандартный» алгоритм одноразовых паролей. Он сбивает с толку, кажется почти устаревшим и, по-видимому, в основном используется в немецкоязычных странах. Вы не захотите использовать это, если только вас не заставят взаимодействовать с существующей системой, которая использует такие коды для 2FA.
Мобильные приложения, которые поддерживают его:
Swiss SafeLab OTP-аутентификатор для iOS: в iTunes
Swiss SafeLab OTP-аутентификатор для Андроид: скачать APK
Приложение для Android, поддерживающее этот алгоритм: DroidOTP в магазине Google Play.
Принцип алгоритма плохо объяснен и запутанно реализован, но он очень прост: у вас есть секрет токена (строка ASCII, обычно шестнадцатеричная или буквенно-цифровая) и PIN-код (строка ASCII, обычно 4 цифры), и он преобразуется в 6-значный код с использованием:
counter = ASCII((UNIX epoch time) / 10s) digest = MD5HEX(counter || secret || pin) code = LEFT(digest, 6 characters)
Вот и все. ¯_(ツ)_/¯
Требуется Python 3.x.
$ ./motp.py SECRET PIN a1b329
Более подробно:
$ ./motp.py -v SECRET PIN Epoch time: 1549323786 Counter: 154932378 a1b329 (current)
Все доступные варианты:
$ ./motp.py --help usage: motp.py [-h] [-s SECONDS] [-l LENGTH] [-w WINDOW] [-v] secret pin positional arguments: secret mOTP secret value (often hex or alphanumeric digits) pin mOTP PIN value (usually 4 digits) optional arguments: -h, --help show this help message and exit -s SECONDS, --seconds SECONDS Duration of mOTP codes in seconds (default 30 seconds) -l LENGTH, --length LENGTH Length of mOTP output (default 6 characters) -w WINDOW, --window WINDOW Number of counter values before and after current one to show (for testing time-skew) -v, --verbose
Массачусетский технологический институт