mouyandianying signKey 分析及页面字体反爬
Follow your instincts and do what you think right. ——《吸血鬼日记》
听从自己的直觉,做正确的事。
PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。
请求分析
本次目标站点
aHR0cHM6Ly93d3cubWFveWFuLmNvbS9maWxtcy8xMzY2Njk2
请求加密
字体加密
JS 分析
全局搜索大法,搜索关键词 signKey,最终定位到下图所示位置
我们看一下这一块需要的参数都是什么。可以看到每次的加密结果一致,参数 u 是:请求方式 + 时间戳 + UA + 请求参数,参数 f 是个字符串(经多次测试为定值)
再来详细分析下加密值,这是由数字和字母的32位组合,那么现在有理由怀疑这是 md5,让加密方法对字符串 ‘1’ 进行加密,熟悉 md5 的小伙伴应该已经知道这是什么了,这是标准的 md5,没有经过魔改。
好家伙,既然这样的话,都不用扣 js 代码了,nice!😊,不过访问频繁的话会出现滑块验证码
运行效果
字体分析
字体文件每次请求都会变动,链接就 ...
mouhongshu Web 端 x-s 逆向分析
The most ordinary person can change the world. ——《神秘博士》
平凡之人亦能改变世界。
PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。
请求分析
本次目标站点
aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29tL2V4cGxvcmU=
可以明显看到有三个参数:分别是 x-b3-traceid(未知)、x-s(未知)、x-t(明显是时间戳)。将链接以 cURL 格式复制出来,经过测试只需要将 x-s 搞定就行了。
JS 分析
全局搜索大法,搜索关键词 x-s,可以看到 sign 方法就是我们需要的。挨个看一下需要的参数,主要的两个参数是 t(请求路径)、i(请求参数)
进入 sign 方法内部,在开头打个条件断点,取消掉其他断点,刷新页面,成功断上
将 sign 方法完整扣下来,简单观察下发现了控制流平坦化,加密生成的地方在 case “9”:
还缺几个方法分别是 a0_0x4dee00、a0_0x5c27、a0_0x543e,扣下来放在合适的位置。运 ...
Wireshark 选择网卡时出错。 The capture session could not be initiated on capture device "en0" (You don't have permission to capture on that device).
Sometimes your whole life boils down to one insane move.——《阿凡达》
人生的转机有时就得靠一次疯狂的举动。
前情提要
系统 MacBook Air M1 2020 macOS Ventora 13.2
Wireshark 4.0.3
打开 Wireshark,在选择网卡时出现了错误:The capture session could not be initiated on capture device “en0” (You don’t have permission to capture on that device).
解决办法
错误提示为没有足够的权限,搜索下,可以用以下命令添加权限来解决
1sudo chmod o+r /dev/bpf*
当 Selenium 遇上 iframe 内嵌#document
Don’t let anyone stop you from getting what you want. ——《灵书妙探》
别让任何人阻挡你得到想要的东西。
前情提要
Selenium 在加载页面时,默认情况下的焦点保持在顶部窗口上,顶部窗口包含其他 iframe 和框架集。当你直接使用 Xpath 或其他方式进行定位时,就会找不到元素。
解决方法
所以当我们需要与 iframe 中的元素交互时,必须先切换到目标 iframe 元素中,才能执行进一步的操作。我们可以通过三种方式切换到 iframe。
通过 iframe 的 name 属性
1driver.switch_to.frame("iframe_name")
通过 iframe 的 id 属性
1driver.switch_to.frame("iframe_id")
通过 iframe 的 索引
1234# 第一个 iframedriver.switch_to.frame(0)# 第二个 iframedriver.switch_to.frame(1)
切回主框架
1drive ...
树莓派折腾记(三)-- 远程启动 Windows 电脑
Trust your own strengths.——《指环王1:护花使者》
相信自己的力量。
PS: 阅读这篇文章前请确认你的主板支持网络唤醒功能!!!
前言
最近搞了下 Selenium 自动化,需要将代码打包成可执行程序,搜索了一番发现 Pyinstaller 还挺好用,在我电脑上打包执行没什么问题。但是在进一步折腾的过程中发现,这玩意不太跨平台呀!我上班使用的电脑是 Mac M1 的,打包的可执行程序只能在我自己电脑上运行,搜索了一下发现,什么系统及架构打包的程序,只能在同样的系统及架构上运行,这就好尴尬了。
解决方案
研究了一下,发现可以用 etherwake 这个软件,在知晓目标机器的 MAC 地址的情况下,发送魔术封包(Magic Packet)就可以远程唤醒机器。很早之前我的树莓派就通过有公网 IP 的服务器做了内网穿透,家里的 Windows 台式机和树莓派在同一局域网内。那么只要把家中的电脑搞定相关配置,就可以远程通过树莓派唤醒 Windows,然后再由远程控制软件操作 Windows。
Windows 设置
我的 Windows 台式机主板是某硕的 ...
mouchezhijia CSS 伪元素混淆
Self-improvement is a lifelong process. ——《我爱上的人是奇葩》
自我提升是一个终生的过程。
PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。
请求分析
本次目标站点
1aHR0cHM6Ly9jYXIuYXV0b2hvbWUuY29tLmNuL2NvbmZpZy9zcGVjLzU3NjA2Lmh0bWw=
从上面两图可以看出,数据并不在标签中,而是在CSS伪元素的content属性中。
看一下网页源码,未经过渲染的数据被包裹在 script 标签中,config 变量中,span 标签的 class 属性均以 hs_kw*_config* 的格式存在,这些并不是固定的,会随着网页刷新而变化,变量 keyLink 以及变量 option 类似,分别是 hs_kw*_baike* 和 hs_kw*_option*。
JS 分析
全局搜索大法,经过多次测试,搜索 '_config,可以仅搜索到一个结果,这里便是生成属性的地方
将这一行全部复制出来,去掉 script 标签,发现是两个自执行函数,分别是 ...
mouzhunwang webpack 逆向分析
You konw more than you think you do. ——《了不起的麦瑟尔夫人》
你远比自己想象的要出色。
PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。
请求分析
本次目标站点
aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vZmlybS93YWdlLzFuVl8ydGt+Lmh0bWw/a2E9Y29tLXNhbGFyeS1tb2R1bGUtZXhwb3Nl
经过分析可以明显看到该请求的参数以及响应都是加密过的。
JS 分析
全局搜索大法,搜索关键词 kiv,最终仅有一个文件含有该关键词,进入该文件,再次搜索 kiv,发现共出现15次,好像有点多,继续往下看
在第二次出现 kiv 的地方发现了 400 和 200,这俩怎么看怎么像响应状态码,但是这里仅有参数 kiv 没有 参数 b,指定不是发请求的地方,继续往下看
经过多次寻找与测试,最终在1万3千来行附近找到了构造请求参数的地方,同样也是发请求的地方
为了方便调试,如下图所示打上一个条件断点
这个站点直接刷新是断不上断点的,需要 ...
moumouhu x-zse-96 加密逆向 V3.0 算法还原
You can’t just walk away from things. ——《夜行动物》
逃避解决不了问题。
PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。
请求分析
本次目标站点
aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD90eXBlPWNvbnRlbnQmcT1weXRob24=
JS 分析
全局搜索大法,搜索关键词 x-zse-96,只有一个文件中包含该关键词,该文件中共搜索到2条匹配结果,全部在合适的位置打上断点,最终在12685处成功断上。
通过上图可以看出加密就是 T 方法中 signature 的值
1signature: (0,F(r).encrypt)(f()(s))
简化一下
1signature: F(r).encrypt(f()(s))
在合适的位置打上断点刷新页面,成功断上后在控制台观察
接下来让我们一步步分析
s
回到源代码处,向上观察
123456i = n.zse93 // 固定值o = n.dc0 // cookie 中 dc0 的 值a = n.xZs ...
mouchacha请求头加密逆向分析
People shouldn’t brood around their past. ——《最后的巫师猎人》
不要沉溺于过往之中。
PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。
请求分析
本次目标站点
aHR0cHM6Ly93d3cucWNjLmNvbS9maXJtLzU3NmMyMWUzNDY4YTZiMTc4YmJmMjkxZTQ4MjBlODk2Lmh0bWw=
形如上图这种,该网站很多链接的请求头中都有类似的加密,key:value 都不固定。
JS 分析
既然是在请求头中的加密,那么较大概率是在 js 中生成的。全局搜索大法,搜索关键词 headers,经测试,main.be3416fa.js 文件就是我们要寻找的。这个文件超过20万行,不能莽,打上断点慢慢来。
成功断上,主要代码如下
12var n = (0, i.default)(t) , r = (0, s.default)(t, e.data);e.headers[n] = r
将这两句转成容易看懂的,可以看到 headers 的 key 是 n,value 是 r。 ...
error: RPC 失败。HTTP 413 curl 22 The requested URL returned error: 413
You have a chance to write your own story. ——《坏蛋联盟》
你的故事由你书写。
错误复现
记录下今天遇到的一个问题,在使用 git push 时,出现了 error: RPC 失败。HTTP 413 curl 22 The requested URL returned 错误。
错误分析
找一下 HTTP的 413 是什么状态码。这是因为请求实体过大出的错。
解决问题
我的 Git 私服是由 Nginx 反向代理过的,那么应该是 Nginx 的问题,无法处理实体过大的请求。可以在三个地方修改,以避免这个问题。
http
全局配置,会作用于所有请求
123http { client_max_body_size 100M;}
server
当前配置,仅会作用于当前请求
123server { client_max_body_size 100M;}
location
当前匹配,仅会作用于当前匹配的请求
123location xxx { client_m ...
