前情提要
现在导出steam令牌数据是真的麻烦
https://keylol.com/t900854-1-1
(出处: 其乐 Keylol)
论坛之前一些大佬已经发过了许多方式的教程,比如
[ROOT ANDROID] STEAM 3.0 导出令牌的思路
https://keylol.com/t854675-1-1
(出处: 其乐 Keylol)
【Android】从3.0以上版本的steam app中获取令牌文件经验小结
https://keylol.com/t901003-1-1
(出处: 其乐 Keylol)
本文就安卓模拟器+frida python调试的令牌导出提供一个比较详细的教程
优点:不需要一台root的手机只需要电脑即可实现导出,且相比一些别的方法相对安全。
缺点:繁琐,且要将令牌转移到模拟器上,吃2天cd。
准备知识
本教程使用安卓模拟器 + adb frida 调试 + python脚本导出令牌数据。
操作前须知:
- 转移提取后令牌将存在于模拟器上,**原有的手机上的令牌将失效,**不能使用官方客户端扫码登录、确认交易等功能
- 转移后有两天左右的市场CD
需要的工具:
- python 以及frida库
- adb调试工具
- 安卓模拟器(教程使用雷电模拟器)
- frida-server
工具安装
安卓模拟器
模拟器安装后请自行下载并安装steam客户端备用。
安装steam客户端只需将下载的apk文件拖入即可。
python安装及配置
如果已经安装过并配置了环境变量,可以跳转到安装frida依赖部分。
安装frida依赖:
pip install frida frida-tools
adb调试工具安装
本教程使用一键安装脚本进行安装,GitHub
安装时如果提示要安装.NET,点击安装即可。
等待安装结束,打开命令提示符,输入以下代码
adb --version
如果出现类似输出,则说明已经安装完成。
Android Debug Bridge version 1.0.41
Version 34.0.4-10411341
Installed as C:\Program Files\platform-tools\adb.exe
Running on Windows 10.0.19045
开始调试
安卓模拟器打开设置,打开root权限
打开后记得按提示重启模拟器
重启后打开模拟器里内置的设置应用程序,找到关于平板电脑>版本号,连续点击7次打开开发者模式
返回,进入"系统",展开“高级”,进入开发者选项,找到并开启USB调试
打开后在命令提示符里输入以下代码:
adb devices
如果出现类似输出,说明可以正常检查到模拟器
以使用雷电模拟器为例,在命令提示符输入以下代码:
adb connect 127.0.0.1:5555
出现 `connected to 127.0.0.1:5555`,说明连接成功
[!info]+
一些其他模拟器的连接端口:
夜神模拟器:adb connect 127.0.0.1:62001
逍遥安卓模拟器: adb connect 127.0.0.1:21503
天天模拟器:adb connect 127.0.0.1:6555
海马玩模拟器 :adb connect 127.0.0.1:53001
网易MUMU模拟器:adb connect 127.0.0.1:7555
命令提示符输入:
adb root
现在来到你下载并解压(如果在GitHub上下载的是压缩包)frida-server-16.1.3-android-x86_64后的文件目录
[!note]
雷电模拟器使用的是x86_64架构,别的模拟器不一定是,要依据架构选择所需的frida-server,可在GitHub上下载
在导航栏输入cmd回车,在该目录打开命令提示符,分别输入回车以下三行代码
adb push frida-server-16.1.3-android-x86_64 /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server-16.1.3-android-x86_64"
adb shell "/data/local/tmp/frida-server-16.1.3-android-x86_64 &"
输入后,打开新的命令提示符窗口,输入
frida-ps -U
如果出现类似输出,说明连接成功。
打开steam移动端应用,登录要提取令牌的账号,然后点底部导航栏中间添加令牌,点击恢复令牌(如果你是已有令牌)
接受短信验证码,如果出现让你记录恢复码,那么说明令牌就转移到模拟器里了。
接着运行steamguard.py文件
import json
import frida
import sys
package = "com.valvesoftware.android.steam.community"
cmd = """
'use strict;'
if (Java.available) {
Java.perform(function() {
//Cipher stuff
const Cipher = Java.use('javax.crypto.Cipher');
Cipher.doFinal.overload('[B').implementation = function (input) {
var result = this.doFinal.overload('[B').call(this, input);
send(result);
}
}
)}
"""
def parse_hook(cmd_):
print('[*] Parsing hook...')
script = session.create_script(cmd_)
script.on('message', on_message)
script.load()
def on_message(message, _):
try:
if message:
if message['type'] == 'send':
result = "".join(chr(i) for i in message['payload'])
print(json.dumps(json.loads(result), indent=2, ensure_ascii=False))
except Exception as e:
print(e)
if __name__ == '__main__':
try:
print('[*] Spawning ' + package)
pid = frida.get_usb_device().spawn(package)
session = frida.get_usb_device().attach(pid)
parse_hook(cmd)
frida.get_usb_device().resume(pid)
print('')
sys.stdin.read()
except KeyboardInterrupt:
sys.exit(0)
except Exception as e:
print(e)
现在在你的保存了steamguard.py的目录,像之前一样在导航栏输入cmd打开命令提示符,并输入以下代码
python steamguard.py
如果你成功输出了类似结果
则说明提取成功。
将黄色标记部分之间的大括号部分复制来,新建一个txt文件,粘贴进去保存,.txt后缀改为.mafile,你就获得一个可以导入其他第三方软件的令牌了。
如果想用Steam网页的一键确认脚本,直接将复制的内容导入即可。
本文原发布在其乐论坛,Steam 安卓模拟器+frida python调试的令牌导出教程 - 平台工具 - 其乐 Keylol
标题:改版后Steam令牌导出教程
作者:shiquda
地址:https://shiquda.link/articles/2023/11/29/1701219538802.html
除非特别说明,本博客上的所有内容均在CC BY-SA 4.0许可下提供。 如需转载请注明作者与来源,谢谢!