如何解码Fiddler捕获的App请求并分析额外传输信息
问题描述
我用Fiddler监控一款App的流量,这款App本该只向服务器发送设备ID和当前固件版本,但实际请求体积远大于预期。以下是捕获到的两条请求示例:
示例1(对应设备ID:T491250XVPY):
Cl1YuDjQu+tK3K1S+A1gevyMuL2orViK3ViK3T8yuW8qsmHwuT8k2T8y5THv3T5i2msisvtl2mNW5m2rtKkrtWLxrnVlu+2rtMZrtM/v2mOl3T8y2Mtk5MIrtKkrtX2ZuvyIBaLluLiK3ViK2Gsi5DtlsG8k5mBVsGsksmtyuMuWsmHxuMjMsmuV5v/w2TLV2mrqujiKF0tdtW1huaQK3K1S+A1irWPQBD2o0O7rtMZrtMtk5T5k2MJi5TJo+Atd+A1Qu+uZsvLDu+1mpDPg+Atz+Atx6Msg5LiK6jiKunLvpD2V0O7rtMZrtV8o3G/l2GNsLVNu+A1PtXo=
示例2(对应设备ID:T491257SEHS):
Cl1YuDjQu+tK3K1S+A1gevyMuL2orViK3ViKunuIuTrvuWLW5D1M2TQkuMVV5GuI5vuW3D5w5GQkuTVrtKkrtWLxrnVlu+2rtMZrtM/v2mOl3Tsi3T8y5mBrtKkrtX2ZuvyIBaLluLiK3ViK5mHy3n2M2v/q5MtouG/v3GJi5GtisGsy2Mtksmsm2TuVuWsosGHq5jiKF0tdtW1huaQK3K1S+A1irWPQBD2o0O7rtMZrtMtk5T5k2MJi5TJo+Atd+A1Qu+uZsvLDu+1mpDPg+Atz+Atx6Msg5LiK6jiKunLvpD2V0O7rtMZrtV8o3G/l2GBG7OIG+A1PtXo=
我已经试过Base64解码和URL解码,但结果里找不到设备ID。想知道这些请求里还传输了哪些额外信息,以及该怎么解码这些数据?
分析与解决方案
1. 明确数据基础编码
你看到的字符串是标准Base64编码(包含+、/、=特征字符),解码后得到二进制数据而非明文——说明数据要么是加密后的结果,要么是二进制序列化(如Protobuf、Thrift)后再Base64编码,或两者结合。
2. 定位关联设备ID的差异字段
对比两个Base64样本,能快速找到差异区域:
- 示例1对应片段:
T8yuW8qsmHwuT8k2T8y5THv3T5i2msisvtl2mNW5m2rtKkrtWLxrnVlu+2rtMZrtM/v2mOl3T8y2Mtk5MIrtKkrtX2ZuvyIBaLluLiK3ViK2Gsi5DtlsG8k5mBVsGsksmtyuMuWsmHxuMjMsmuV5v/w2TLV2mrqujiKF0tdtW1huaQ - 示例2对应片段:
unuIuTrvuWLW5D1M2TQkuMVV5GuI5vuW3D5w5GQkuTVrtKkrtWLxrnVlu+2rtMZrtM/v2mOl3Tsi3T8y5mBrtKkrtX2ZuvyIBaLluLiK3ViK5mHy3n2M2v/q5MtouG/v3GJi5GtisGsy2Mtksmsm2TuVuWsosGHq5jiKF0tdtW1huaQ
这部分差异大概率和设备ID的加密/序列化结果相关,其余完全一致的部分是固定字段(如请求头部、公共参数)。
3. 解码与分析步骤
步骤1:Base64转二进制,对比差异字节
将两个Base64字符串解码为二进制文件,用二进制对比工具(如WinMerge、Hex Fiend)找出差异字节段。这些字节是关联设备ID的核心数据,后续分析围绕此展开。
步骤2:识别二进制协议
- Protobuf检测:用
protoc --decode_raw命令尝试解析二进制数据,若为Protobuf序列化,会输出字段结构(即使无.proto文件,也能看到字段类型和长度)。 - 自定义序列化排查:若不是常见协议,观察二进制是否有固定长度字段、重复字节模式,或是否包含字符串长度前缀(如先存1字节表示长度,再存字符串内容)。
步骤3:验证加密可能性
若二进制无明显结构,大概率是加密数据:
- 将设备ID转为ASCII/UTF-8字节,与差异字节对比,尝试简单加密逻辑:
- XOR加密:用固定密钥或动态密钥(如设备ID片段)做异或,看是否匹配差异字节。
- 对称加密:若App用AES、DES等对称加密,需找到密钥和加密模式(ECB/CBC等)——此步骤通常需逆向App。
- 排除哈希:设备ID长度一致,但差异字节长度与常见哈希(如MD5、SHA1)不符,基本可排除哈希可能。
步骤4:逆向App(终极方案)
若上述方法无效,直接反编译App(用Apktool、Jadx等工具):
- 定位发送请求的函数,查看参数的加密、序列化逻辑。
- 跟踪设备ID的获取与拼接流程,看它如何被打包进请求数据。
4. 额外信息推测
从请求体积来看,除设备ID和固件版本外,可能还包含:
- 设备硬件信息(型号、内存、CPU架构)
- App版本号
- 网络状态(WiFi/蜂窝网络类型)
- 本地缓存的状态数据
- 请求签名(防止篡改)
这些信息都会被加密/序列化后打包,因此直接Base64解码无法看到明文。
内容的提问来源于stack exchange,提问作者Rich8rd
相关产品推荐
相关产品推荐

