Google Authenticator

因为公司的服务器有双因子登录,每次都需要输入Token,这就很麻烦了,于是就打算抽空做一个实体化的Token出来。
话说最核心的部分就是需要利用Secret Key计算出当前时间的Token, Google已经开源了这套算法,看了一下不难,就用python改写了一个出来,打算给树莓派或者MicroPython的板子用。

import hmac, base64, struct, hashlib, time
def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    h = struct.pack(">Q", intervals_no)
    o = hmac.new(key, h, hashlib.sha1).digest()
    t = ord(o[19]) & 15
    p = (struct.unpack(">I", o[t:t+4])[0] & 0x7fffffff) % 1000000
    return p
def get_token(secret):
    return get_hotp_token(secret, intervals_no=int(time.time())//30)

其实一直想做一个辉光管的显示器的,但是上某宝看了一下价格后想想还是算了…然后打算找个贴片的数码管做,又觉得效果不会太好。现在想到的方案是用MicroPython来做主控,上个集成的数码管就好。
另外,经过无数次被国产的板子坑的经历,我强烈建议如果你想要入门学习硬件,千万不要图便宜选一个国产的仿制版。真的是一分价钱一分货,我当时因为原装的MicroPython没有办法及时拿到货,就偷懒买了淘宝上的仿制品,结果坑多到让你怀疑人生。

Leave a Reply

Your email address will not be published. Required fields are marked *