python mOTP
1.0.0
如果您需要使用 Mobile-OTP / mOTP 算法从命令行生成一次性密码,而无需摆弄手机。
这是一种自称为一次性密码的“标准”算法。它令人困惑,看起来几乎已经过时,并且似乎主要在德语国家使用。您不想使用此代码,除非您被迫与使用此类代码进行 2FA 的现有系统进行交互。
似乎支持它的移动应用程序:
适用于 iOS 的 Swiss SafeLab OTP 身份验证器:在 iTunes 上
适用于 Android 的 Swiss SafeLab OTP 验证器:APK 免费下载
支持该算法的Android应用程序:Google Play Store上的DroidOTP
该算法的原理解释得很糟糕,实现也很混乱,但它非常简单:你有一个令牌秘密(一个 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
麻省理工学院