【问题标题】:pyotp OTP secret key formatpyotp OTP 密钥格式
【发布时间】: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”),但我不确定如何在上面的代码中使用这个密钥。
  • 看看是否有人对更长的共享密钥有解决方案。一直在做一些研究和试验自己无济于事。想法?

标签: python one-time-password


【解决方案1】:

以下代码对我有用

import pyotp
totp = pyotp.TOTP("MY CODE WITH SPACES".replace(' ',''))
print("Current OTP:", totp.now())

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多