python 接入GoogleAuth

经常会用到GoogleAuth作为二次验证码,就扒了代码看看这块逻辑如何实现的,做个笔记。

import hmac
import struct
import time
from hashlib import sha1
from urllib.parse import urlencode, quoteif __name__ == '__main__':# account会作为标识显示在身份验证器上account = input("please enter your account: ")# secret用于生成秘钥secret = input("please enter your secret: ")# label会作为标识显示在身份验证器上label = input("please enter your label: ")# 将secret转换成bytess = secret.encode()# 获取时间片(1990年1月1日0时开始计时,30秒为一个单位)c = struct.pack(">Q", int(time.time()) // 30)# 根据secret和时间片指定sha1算法计算hash值,返回bytes类型hash值hmac_hash = hmac.new(s, c, sha1).digest()print("hmac_hash:", len(hmac_hash))# 取出hmac_hash的第19位和0xf做”与“运算offset = hmac_hash[19] & 0xfprint("offset:", offset)# 从hmac_hash中取出4个16进制字节转换为正整数(I)并取索引为[0],再与16进制0x7fffffff做与运算,最后除以10的六次方google_code = (struct.unpack(">I", hmac_hash[offset: offset + 4])[0] & 0x7fffffff) % 10 ** 6print(google_code)# 若计算后结果不足6位, 则在左侧补0google_code = f'{google_code:>06}'print(google_code)prefix = labelprefix += f':{account}'ends = {'secret': secret,'label': label}base_uri = 'otpauth://totp/{prefix}?{ends}'# 调用草料二维码生成apicaoliao_qrcode_url = 'https://api.pwmqr.com/qrcode/create/?url={qr_content}'qr_uri = base_uri.format(prefix=prefix, ends=urlencode(ends))print(caoliao_qrcode_url.format(qr_content=quote(qr_uri)))

 使用谷歌身份验证器扫描链接生成的二维码即可绑定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/54973.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yolo-v5学习(使用yolo-v5进行安全帽检测错误记录)

常见错误 跑YOLOv5遇到的问题_runtimeerror: a view of a leaf variable that requi_Pysonmi的博客-CSDN博客 python train.py --img 640 --batch 16 --epochs 10 --data ./data/custom_data.yaml --cfg ./models/custom_yolov5.yaml --weights ./weights/yolov5s.pt 1、梯度…

elementui Cascader 级联选择使用心得

相信大家对于elementui并不陌生,作为适配Vue的优秀UI框架之一,一直被所有的开发者痛并快乐着。今天要记录的就是里边的主角之一Cascader。 首先先介绍一下Cascader ---> 当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择…

解密Redis:应对面试中的缓存相关问题2

面试官:Redis集群有哪些方案,知道嘛? 候选人:嗯~~,在Redis中提供的集群方案总共有三种:主从复制、哨兵模式、Redis分片集群。 面试官:那你来介绍一下主从同步。 候选人:嗯&#xff…

检测文本是否由AI生成,GPT、文心一言等均能被检测

背景 目前很多机构推出了ChatGPT等AI文本检测工具,但是准确率主打一个模棱两可,基本和抛硬币没啥区别。 先说结论,我们对比了常见的几款AI检测工具,copyleaks检测相比较而言最准确。 检测文本 AI文本片段1 来源:G…

Windows上安装 jdk 环境并配置环境变量 (超详细教程)

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

Spring IOC

◆ 传统Javaweb开发的困惑 ◆ IoC、DI和AOP思想提出 ◆ Spring框架的诞生 Spring | Home IOC控制反转:BeanFactory 快速入门 package com.xiaolin.service.Impl;import com.xiaolin.dao.UserDao; import com.xiaolin.service.UserService;public class UserServic…

vue2-diff算法

1、diff算法是什么? diff算法是一种通过同层的树节点进行比较的高效算法。 其有两个特点: 比较只会在同层级进行,不会跨层级进行。 在diff比较的过程中,循环从两边向中间比较。 diff算法在很多场景中都有应用,在vue中&…

TabR:检索增强能否让深度学习在表格数据上超过梯度增强模型?

这是一篇7月新发布的论文,他提出了使用自然语言处理的检索增强Retrieval Augmented技术,目的是让深度学习在表格数据上超过梯度增强模型。 检索增强一直是NLP中研究的一个方向,但是引入了检索增强的表格深度学习模型在当前实现与非基于检索的…

react工程化配置

道阻且长,行而不辍,未来可期 1.安装react yarn create react-app demo --template typescript cd demo yarn start2.配置蓝图模版 2.1安装blueprint插件 https://github.com/shredor/blueprint-templates-cli#readme yarn add blueprint-templates-c…

浏览器同源策略

浏览器同源策略 同源策略:是一个重要的浏览器的安全策略,用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互 它能帮助阻隔恶意文档,减少可能被攻击的媒介 例如:被钓鱼网站收集信息,使用ajax发起…

工业控制系统安全控制应用指南

工业控制系统安全控制应用 指南 工业控制系统(ICS)(包括监控和数据采集系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)等产品)在核设施、航空航天、先进制造、石油石化、油气管网、电力系统、交…

安全加固服务器

根据以下的内容来加固一台Linux服务器的安全。 首先是限制连续密码错误的登录次数,由于RHEL8之后都不再使用pam_tally.so和pam_tally2.so,而是pam_faillock.so 首先进入/usr/lib64/security/中查看有什么模块,确认有pam_faillock.so 因为只…