app逆向实战:某瓣7.18.0版本_sig参数抓包与破解

本篇博客旨在记录学习过程,不可用于商用等其它途径

入口

小组里面全部讨论数据列表
在这里插入图片描述

抓包

根据抓包结果,_sig参数是动态生成的,需要破解
在这里插入图片描述

查克

使用PKID查壳工具发现app并没有加固
在这里插入图片描述

参数源码定位

使用jadx打开apk,全局搜索_sig参数,下图是搜索结果
在这里插入图片描述
这个参数使用的地方不多,仔细观察找到具有赋值作用的代码行并逐个进去观察,根据RequestFormBody_ts_sig确定这是具体加密位置
在这里插入图片描述

源码分析

接下来找到a2.first怎么来的,看下图确定a2是通过ApiSignatureHelper.a(request)得到的,双击a进入它的具体实现代码
在这里插入图片描述
大家看下图,实际调用是第一个a,不过它重载了另一个a方法,这个才是具体的加密位置
在这里插入图片描述
第一个a传递的三个参数分别是:
request.url().toString():请求url
request.method():请求方式
header:请求头的Authorization参数,如果有则取前七个字符
其实在抓包时就能知道这三个的内容了,所以这点不难
在这里插入图片描述

第二个a直接看到最后一行,最后返回了new Pair<>(HMACHash1.a(str4, sb.toString())String.valueOf(currentTimeMillis))两个值,其中第二个值是时间戳,对应上_ts,所以_sig是通过new Pair<>(HMACHash1.a(str4, sb.toString())得到的
把代码修整一下方便阅读,其中StringPool.AMPERSAND就是&,可以知道加密文本就是对url, methood, authorization三个参数与时间戳进行判断拼接处理,其中url截取的是路径,不包含后缀参数,按本案例来加密文本就是GET&%2Fapi%2Fv2%2Fgroup%2F721771%2Ftopics&1721737945

public static Pair<String, String> a(url, methood, authorization) {
   
   
    
<think>用户遇到了一个编码错误:LookupError: unknown encoding: utf_sig。我需要先分析这个错误的原因。首先,utf_sig不是一个标准的编码名称,通常Python中常用的UTF编码是utf-8、utf-16等。可能用户代码中使用了错误的编码参数。 在代码中,保存CSV文件的部分使用了encoding='utf_sig'。正确的应该是utf-8-sig,因为utf-8-sig包含了BOM(字节顺序标记),这在处理某些系统生成的CSV文件时可能更兼容,比如Excel。而utf_sig可能是拼写错误或者误解。 所以,解决方案应该是将编码参数从utf_sig改为utf-8-sig。这样就能正确处理带有BOM的UTF-8编码,避免编码错误。同时,需要确保在读取CSV文件时也使用相同的编码,但在这个代码中,读取部分可能没有指定编码,不过根据上下文,用户可能已经处理了读取部分,或者问题只出现在写入时。 此外,用户可能需要确认其他部分的编码处理是否正确,比如网页请求和解析过程中是否正确处理了编码。但根据错误信息,问题集中在保存CSV文件时的编码参数设置错误。因此,修改该参数即可解决问题。 最后,需要验证修改后的代码是否能够正确运行,不再出现编码错误,并且生成的CSV文件能被正确读取和显示。</think>LookupError错误通常由编码参数拼写错误导致。在Python中,正确的带BOM的UTF-8编码应为`utf-8-sig`而非`utf_sig`。修改CSV保存部分代码: ```python # 修改前(错误编码) df.to_csv('江西天气数据.csv', index=False, encoding='utf_sig') # 修改后(正确编码) df.to_csv('江西天气数据.csv', index=False, encoding='utf-8-sig') ``` **原因解析**: 1. `utf_sig`不是Python标准库支持的编码标识符 2. 包含BOM的UTF-8在Python中应使用`utf-8-sig` 3. 该编码会在文件开头添加EF BB BF字节,确保Excel等软件正确识别中文 **其他注意事项**: - 读取CSV时建议显式指定编码:`pd.read_csv('江西天气数据.csv', encoding='utf-8-sig')` - 如果网站响应头声明了其他编码(如GBK),需在requests请求时添加:`response.encoding = response.apparent_encoding`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月镇灵将

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值