【发布时间】:2018-01-25 02:33:05
【问题描述】:
我正在尝试使用 pyotp 以编程方式生成 OTP 代码,以使用无头浏览器登录,但我不确定如何处理共享密钥的格式。
通常共享密钥的格式如下: ABCDEFGHIJKLM123
但是对于我尝试登录的网站,格式是: ABCD EFGH IJKL MNOP QRST UVWX YZ01 1234 5678 9ABC DEFG HIJK LMNO
我如何使用这个与 pyotp 共享的密钥来生成 OTP 代码以登录网站?
我已尝试将其转换为 base32,但要么我在转换时出现问题,要么它不起作用。
谢谢!
代码:
import pyotp
import time
totp = pyotp.TOTP("ABCDEFGHIJKLM123")
while True:
print('current otp:', totp.now())
time.sleep(1)
【问题讨论】:
-
你说你尝试过 - 你尝试了什么,它是如何失败的?
-
I encoded "ABCD EFGH IJKL MNOP QRST UVWX YZ01 1234 5678 9ABC DEFG HIJK LMNO" to base32 ("IFBEGRBAIVDEOSBAJFFEWTBAJVHE6UBAKFJFGVBAKVLFOWBALFNDAMJAGEZDGNBAGU3DOOBAHFAUEQZAIRCUMRZAJBEUUSZAJRGU4TY=") using emn178.github.io/online-tools/base32_encode.html it didn't work as in that the OTP code generated is不正确。
-
也许尝试删除空格?如果这不起作用,我想我们需要有关您的代码的更多详细信息。
-
删除空格无效。我在帖子中添加了代码。详细说明;对于许多网站,我得到一个像“ABCDEFGHIJKLM123”这样的 2FA 密钥,对于那些代码工作正常并生成正确的代码。但是从亚马逊我得到了一个不同格式的共享密钥(“ABCD EFGH IJKL MNOP QRST UVWX YZ01 1234 5678 9ABC DEFG HIJK LMNO”),但我不确定如何在上面的代码中使用这个密钥。
-
看看是否有人对更长的共享密钥有解决方案。一直在做一些研究和试验自己无济于事。想法?