PC端google OTP验证码获取器

感觉在安全的路上走远了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()

  

原文地址:https://www.cnblogs.com/2rsh0u/p/15698520.html