1

我正在尝试使用 python 对 TOTP 的支持以编程方式获取 Microsoft 身份验证器应用程序中可用的 MFA/2FA 代码。我的代码如下所示:

import pyotp
import base64
secret = "mysecretkeyhere".encode( "UTF-8" )
b32Secret = base64.b32encode( secret )
totp = pyotp.TOTP( b32Secret ).now()
print( totp )

来自mysecretkeyhere扫描二维码/密钥,格式为

"otpauth://totp/ namehere ?secret= 16digitsecrethere &issue= issuerhere &algorithm=SHA1&digits=6"

当我运行此代码段并与身份验证器应用程序中的 6 位代码进行比较时,我的应用程序和身份验证器应用程序中生成的代码不一致。代码也不会在时间延迟上重叠(使用 while 循环测试,该循环重复执行底部两行)。

关于如何让 TOTP 函数返回与我的身份验证器应用程序中相同的代码的任何建议?提前致谢。

4

1 回答 1

0

我目前正在处理 pyotp 的另一个问题-因此发现了您的问题。

你有一个秘密,那就是一个 OTP-URI,它应该被简单地解析。根据文件

#!/usr/bin/env python

import pyotp

otp_uri = 'otpauth://totp/namehere?secret=16digitsecrethere&issue=issuerhere&algorithm=SHA1&digits=6'
otp     = pyotp.parse_uri( otp_uri )

print( otp.now() )

希望仍然支持您的需求 =)
Best
macwinnie

于 2022-01-21T18:11:52.013 回答