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即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM