感觉在安全的路上走远了qwq,把安全的东西用得不怎么安全了。
import PySimpleGUI as sg import hmac import base64 import struct import hashlib import time import sys import requests def get_hotp_token(secret, intervals_no): key = base64.b32decode(secret) msg = struct.pack(">Q", intervals_no) h = hmac.new(key, msg, hashlib.sha1).digest() o = h[len(h)-1] & 0x0f h = (struct.unpack(">I", h[o:o + 4])[0] & 0x7fffffff) % 1000000 return h def get_totp_token(secret): intervals_no = int(time.time()) // 30 totp_token = get_hotp_token(secret, intervals_no) return totp_token if __name__ == '__main__': Sec1 = 'xxx' #自己更换需要的key Sec2 = 'xxx' Sec3 = 'xxx' Sec1 = Sec1.replace(' ', '').upper() Sec2 = Sec2.replace(' ', '').upper() Sec3 = Sec3.replace(' ', '').upper() #if len(Sec1) % 8 != 0 and len(Sec2) % 8 != 0 and len(Sec3) % 8 != 0: #print('Illegal base32 data at input byte %d' % ((len(Sec)//8+1)*8)) #exit(1) sg.SetOptions(text_justification='center') layout = [ # key 值代表了是这个输入框输入的值,以字典的 键 值来表示,这个用于找到输入框并跟新它的值 [sg.Text('xxxx', size=(15, 1)), sg.Input(key='HIDSCODE')],#自己设置显示 [sg.Text('xxx4A', size=(15, 1)), sg.Input(key='HK4ACODE')], [sg.Text('xxx4A', size=(15, 1)), sg.Input(key='SS4ACODE')], [sg.Button('GET')] ] # 创建窗口及设置标题 window = sg.Window('简易谷歌验证码获取器', layout) # 循环按钮元素的值 while True: event, values = window.read() #if read == True: if event == 'GET': validation_code1 = get_totp_token(Sec1) validation_code2 = get_totp_token(Sec2) validation_code3 = get_totp_token(Sec3) hidscode = '%06d [!]%02d后秒过期' % (validation_code1, 30 - int(time.time()) % 30) baoleijicode = '%06d [!]%02d后秒过期' % (validation_code2, 30 - int(time.time()) % 30) baoleijicode2 = '%06d [!]%02d后秒过期' % (validation_code3, 30 - int(time.time()) % 30) new_hidscode = window['HIDSCODE'].update(hidscode) new_4acode = window['HK4ACODE'].update(baoleijicode) new_4acode2 = window['SS4ACODE'].update(baoleijicode2) if event in (None, 'Exit'): break # 显示窗口 window.read() window.close()