首页 > 其他分享 >【Steam登录】protobuf协议逆向

【Steam登录】protobuf协议逆向

时间:2024-11-09 22:46:44浏览次数:3  
标签:逆向 account protobuf proto Account 63 序列化 data Steam

在这里插入图片描述

https://api.steampowered.com/IAuthenticationService/GetPasswordRSAPublicKey/v1

在这里插入图片描述
搜索 input_protobuf_encoded定位
在这里插入图片描述
input_protobuf_encoded的值就是 o
s = r.SerializeBody()
o = i.iI(s)

精准定位
在这里插入图片描述

打上条件断点:t == ‘Authentication.GetPasswordRSAPublicKey#1’

r是对象o里面包含了账号
在这里插入图片描述
在这里插入图片描述
经过序列化方法之后得到
Uint8Array [10, 11, 119, 101, 105, 119, 117, 120, 105, 97, 110, 52, 55]
进入r.SerializeBody

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
新建account.proto文件
定义proto结构

syntax = "proto3";

package account;

message Account {
    string account_name = 1;
}

然后执行命令:
protoc --python_betterproto_out=. account.proto

import base64
from account import Account

# 创建并序列化 Account 对象
account1 = Account(account_name='weiwuxian47')
print(f"原始对象: {account1}")  

# 序列化为二进制数据
data = account1.SerializeToString()
print(f"序列化后数据: {data}")

# 将二进制数据进行 Base64 编码
encoded_data = base64.b64encode(data).decode('utf-8')
print(f"Base64 编码后数据: {encoded_data}")

在这里插入图片描述

JS代码实现

// 导入编译文件
const proto = require('./account_pb');

// 实例化 Account 类并填充基本信息
const account = new proto.Account();
account.setAccountName("weiwuxian47");


// 打印原始对象
console.log("原始对象:", account);

// 序列化为二进制数据
const data = account.serializeBinary();
console.log('==================================================');
console.log("序列化后数据:", data);



var o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split('');
function M(e, t, n) {
    for (var r, a, p = [], i = t; i < n; i += 3)
        r = (e[i] << 16 & 16711680) + (e[i + 1] << 8 & 65280) + (255 & e[i + 2]),
        p.push(o[(a = r) >> 18 & 63] + o[a >> 12 & 63] + o[a >> 6 & 63] + o[63 & a]);
    return p.join("")
}
function iI(e) {
    for (var t, n = e.length, r = n % 3, a = [], p = 16383, i = 0, b = n - r; i < b; i += p)
        a.push(M(e, i, i + p > b ? b : i + p));
    1 === r ? (t = e[n - 1],
    a.push(o[t >> 2] + o[t << 4 & 63] + "==")) : 2 === r && (t = (e[n - 2] << 8) + e[n - 1],
    a.push(o[t >> 10] + o[t >> 4 & 63] + o[t << 2 & 63] + "="));
    return a.join("")
}

// data = new Uint8Array([10, 11, 119, 101, 105, 119, 117, 120, 105, 97, 110, 52, 55])
console.log(iI(data)); // 得到结果 Cgt3ZWl3dXhpYW40Nw==

在这里插入图片描述
在这里插入图片描述
和js代码对比一下

标签:逆向,account,protobuf,proto,Account,63,序列化,data,Steam
From: https://blog.csdn.net/qq_44990881/article/details/143649178

相关文章

  • 一种增稳加速直连 Github Steam Pixiv 等网站的全新轻量化方案 (Sheas Cealer 开发两
    由于法律风险和敏感性,本文不探讨使用代理或者混淆作为解决方案,而是研究一种更加合法合规和轻量化的无代理直连方案来加速部分网站的访问,在结尾处我编写了一个简单易用的开源桌面端程序,运用本文介绍的原理来实现部分网站的加速,如果你对原理部分不感兴趣,也可以直接跳至结尾处看我写......
  • 逆向 | linux c父子进程通信模板
    逆向|linuxc父子进程通信模板#include<stdio.h>#include<sys/types.h>#include<sys/wait.h>#include<unistd.h>#include<stdlib.h>#include<errno.h>intmain(){pid_tpid;//parent_idpid_tcid;......
  • 十五 MyBatis的逆向工程
    十五、MyBatis的逆向工程所谓的逆向工程是:根据数据库表逆向生成Java的pojo类,SqlMapper.xml文件,以及Mapper接口类等。要完成这个工作,需要借助别人写好的逆向工程插件。思考:使用这个插件的话,需要给这个插件配置哪些信息?pojo类名、包名以及生成位置。SqlMapper.xml文件名以......
  • 【js逆向】JS 逆向参数与代码混淆
    原创TtTeam一、引言随着互联网技术的不断发展,JavaScript(以下简称JS)在网页开发中扮演着越来越重要的角色。许多网站为了保护自身的数据和业务逻辑,采用了各种技术手段对JS代码进行保护,其中包括参数加密和代码混淆。这给JS逆向工程带来了很大的挑战。JS逆向工程在安全测试......
  • ModelMaker 7由pas逆向类图
    下载通过百度网盘分享的文件:ModelMaker_v7.20.rar链接:https://pan.baidu.com/s/1-jc39uRv5X96HqrkeDs5ZA提取码:i9pb逆向工程逆向工程在MM中十分简单。但是要提醒,先备份一下你的旧代码。1.【单元视图】(Units)选“ImportUnit..”2.选择你要导入的.pas文件。3.ok后你在【......
  • 归龙潮程序逆向笔记 (不定期更新)
    Unity游戏啊,先分析一下文件,Unity2021.3,AB包没加密,Lua看着像异或加密,还有HybridCLR的dll应该是AES之类的看到了libNetHTProtect.so和libmsaoaidsec.so两位老朋友,上frida一把梭!果不其然一开frida就闪退,看闪退的时机大概率在il2cpp前就已经检测了…搜一下msaoaidsec,果然在java层有......
  • bazel build protobuf
    bazelbuildprotobufWORKSPACEload("@bazel_tools//tools/build_defs/repo:http.bzl","http_archive")http_archive(name="com_google_protobuf",sha256="acb71ce46502683c31d4f15bafb611b9e7b858b6024804d6fb84b85......
  • 快手协议/逆向开发ks协议
    在计算机网络中,协议是一组规则和标准,用于定义通信双方之间的数据传输方式。快手协议是指快手短视频平台使用的通信协议,它规定了快手客户端和服务器之间数据传输的格式、加密方式、校验规则等内容。快手协议采用了多种加密技术来保护用户数据的传输和存储。其中,最基本的加密......
  • 2024 强网杯逆向 Writeups
    最心有余而力不足的一集,做完vm颈椎病犯了,第二天根本打。最后,加上学弟学妹打的,最后剩一个Android逆向没AK,要是没有颈椎病这一说肯定AK了。感觉快退役了...mips编译一个qemu-6.2.0mips-linux-userbindiff一下恢复符号,怀疑修改了ELFloader或者syscall,最后发现是后者......
  • 猿人学web端爬虫攻防大赛赛题第16题——js逆向 - window蜜罐
    题目网址:https://match.yuanrenxue.cn/match/16解题步骤看触发数据包。明显m是经过特殊处理的,需要知道它的加密逻辑。看Initiator模块的window.request。m和t的赋值就在上面,打断点。先分析t。r.t=p_s=Date[e(496)](newDate)[e(517)]()将其中跟e相关的进行还原后,r.......