python mOTP
1.0.0
휴대폰을 조작할 필요 없이 명령줄에서 Mobile-OTP/mOTP 알고리즘을 사용하여 일회용 비밀번호를 생성해야 하는 경우.
이는 일회용 비밀번호에 대한 자칭 "표준" 알고리즘입니다. 그것은 혼란스럽고 거의 쓸모없어 보이며 독일어권 국가에서 주로 사용되는 것으로 보입니다. 2FA에 해당 코드를 사용하는 기존 시스템과 강제로 상호 작용하지 않는 한 이 기능을 사용하고 싶지 않습니다.
이를 지원하는 것으로 보이는 모바일 앱:
iOS용 Swiss SafeLab OTP 인증자: iTunes에서
Android용 Swiss SafeLab OTP 인증기: APK 다운로드
이 알고리즘을 지원하는 Android 앱: Google Play 스토어의 DroidOTP
알고리즘의 원리는 잘못 설명되고 혼란스럽게 구현되지만 매우 간단합니다. 토큰 비밀(ASCII 문자열, 일반적으로 16진수 또는 영숫자)과 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
MIT