大家好,我是十一姐,b站十一姐时一,知识星球时光漫漫
提示!本文章仅供学习交流,严禁用于非法用途,文章如有不当可联系本人删除!
三、抓某头条小程序逆向分析
2.右上角打开三个点,然后打开devTools
3.如图,先切换到Devtools的Network页面,并且点击资讯页面,这时候右边已经抓到数据流接口包
4.定位数据接口,我们直接点击任意一个接口,ctrl+f搜索左侧文字内容,比如“故事征集”, 然后右边定位到index.php接口里面包含了目标的数据资讯内容
5.重放模拟请求,鼠标右击目标index接口,鼠标右击Copy as curl
6.打开https://spidertools.cn/#/curl2Request 复制curl转python-requests , 同时把它复制到pycharm里面
7.运行pycharm里面的python代码,运行结果正常
8.测试反爬参数是哪个,改掉请求参数state或者_ut或者sign,再次运行代码,都报错URL签名验证失败,需要研究这三个参数
9.采用搜索式定位的方法,寻找加密位置,比如可以尝试搜索sign= , state=, sign: state: 等等等,找到疑似的加密位置进行打断点,比如我这里尝试搜索到了sign=定位到了两处可疑的位置,并打上了比如12897行断点
10.我们再点击头条新闻,触发接口请求,如图断住了, 我们右上角点击进入,去看看getSign函数是干啥的
11.如图我们进入到getSign函数里面了,分析e,t, n简单看了下,分别对应请求链接,请求参数,和undefined, 直接跳到12827行return打断点,把r()函数看成一个整体,c + (n = n || getApp().siteInfo.token) 这个看成一整个参数传参,输出加密结果r(加密明文)发现是32位结果,浅浅猜测下是否是标准md5加密
12.将加密明文复制到在线md5在线加密验证下,http://www.jsons.cn/md5/s/ 发现加密结果一样,由此确定r()函数是标准的md5加密,现在只需要看明文是怎么组成的了
13.回到步骤11,观察前面的代码逻辑,发现明文,除了时间戳是动态变化的,其它都是固定值,换个微信号,session_user_id会改变,至此,逆向加密逻辑已完结
14.我们开始编写python代码, from hashlib import md5 和时间戳, 注意框出红色的部分保持传参一致,运行代码,正常出结果
from hashlib import md5
def md5_encrypt_text(decrypt_text: str) -> str:
"""
md5加密
:param decrypt_text: 明文
:return: 密文
"""
return md5(decrypt_text.encode('utf8')).hexdigest()
往期推荐
The End~ 扫码加vx进交流群
原文始发于微信公众号(逆向OneByOne):小程序逆向案例-某新闻sign之md5加密
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论