我试图使用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
来自于扫描QR代码/密钥,并且是格式的
"otpauth://totp/namehere?secret=16digitsecrethere&issue=issuerhere&algorithm=SHA1&digits=6“
当我运行此代码段并与我的身份验证程序中的6位代码进行比较时,我的应用程序中生成的代码和身份验证程序中的代码不一致。这些代码也不会在延迟时间上重叠(使用重复执行后两行的while循环进行测试)。
对于如何使TOTP函数返回与我的身份验证程序中相同的代码,有什么建议吗?提前谢谢。
发布于 2022-01-21 18:11:52
我现在和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() )
希望仍然支持你的需求
最好的
麦金妮
https://stackoverflow.com/questions/66297852
复制相似问题