Python本地计算steam手机令牌码

首先获取时间戳除以30取整,得到8个数,再补成8个字节的长度。
 
之后要有一个密钥,这个密钥是steam和我们约定好的 用来计算令牌码
 
安卓手机可以在/data/data/com.valvesoftware.android.steam.community/files/目录下找到
 
文件中的shared_secret就是我们所需的密钥(需要ROOT权限才可以查看)
 
这个密钥是steam和我们约定好的,用来计算令牌码
 
如果你的手机未被ROOT,你将无法访问到这部分的数据,即使你安装了根目录文件管理器 在该文件中,你将找到如下的一个变量,其####的部分就是你所需的秘钥 "shared_secret":"#############################"
 
更换验证设备,那么原有的serect_key就将会失效.
 
密钥作为key,处理过的时间戳作为信息进行哈希运算,得到一串16进制的数
 
取最后一位去掉高四做为偏移,在这串数中取四个字节,除26取余数5次得到5个数。从字母表中找到对应的值合起来就是我们要的令牌验证码
 
 1 import hmac
 2 import hashlib
 3 from base64 import b64decode
 4 from time import time,sleep
 5 import struct
 6 from tkinter import *
 7 
 8 ###########################################
 9 #                                         #                                   
10 #                                         #
11 #       Python本地计算steam手机令牌码       #
12 #                                         # 
13 #                            by:冷溪凌寒   #
14 ###########################################
15 
16 def get_steam_auth_code(secret: str, t: int = None) -> str:
17     if not t:
18         t = int(time()/30)
19     msg = struct.pack(">Q", t)
20     key = b64decode(secret)
21     mac = hmac.new(key, msg, hashlib.sha1).digest()
22     offset = mac[-1] & 0x0f
23     binary = struct.unpack(>L, mac[offset:offset+4])[0] & 0x7fffffff
24     codestr = list(23456789BCDFGHJKMNPQRTVWXY)
25     chars = []
26     for _ in range(5):
27         chars.append(codestr[binary % 26])
28         binary //= 26
29     code = ‘‘.join(chars)
30     return code
31 
32 #print(get_steam_auth_code(‘‘,))
33 grad=get_steam_auth_code(‘‘,)#在此填入steam密钥
34 r = Tk()
35 r.withdraw()
36 r.clipboard_clear()
37 r.clipboard_append(grad)
38 r.update()
39 sleep(.2)# 一直在占用,需要销毁,添加个0.2秒延迟自动销毁
40 r.update()
41 r.destroy()

 

运行程序后,自动复制到剪切板,之后只需ctrl+v即可

Python本地计算steam手机令牌码

上一篇:android studio & intellj idea禁用文件拖动和代码拖动


下一篇:Android 11 拍照问题