web逆向-七猫网acw_sc__v2参数逆向分析
目标链接:https://www.qimao.com/shuku/a-a-a-a-a-a-a-click-1/
直接请求的话,没有返回网站内容,而是一大串混淆过后的js代码
重新启动一个无痕浏览器,观察一下请求时候链接的跳转、cookies的变化等
自动跳转的第二次请求就正常返回内容了,而且cookies中多了三个参数,其中acw_tc aliyungf_tc 是第一次请求返回的,这里忽略,只有 acw_sc__v2是从其他地方生成的,跳转过程中没有引入其他的js文件,所以可以肯定就是第一次请求返回的js代码生成的
话不多说,直接来上手分析代码
起手就是一个大数组,这里凭经验判断,代码是经过了 ob混淆,即 JavaScript Obfuscator
去 de4js网站做一个简单的还原
这里就是入口了,是调用 reload函数 进行赋值的,把代码放入vscode调试一下,首先找到reload调用的地方
把自执行和setInterval的无效代码去掉
直接运行代码,把我的系统卡死了 😇🐶 应该是那里进行了死循环
还是现在浏览器调试一下吧,先打开开发者模式,然后输入网址,自 ...
web逆向-css偏移实战(二)
题目看上去很简单,拿到5页的所有数字算总和就行,来分析一下
看到数字不是文本的形式,而是经过 base64编码的图片形式,有些图片的 style属性中有display: none,表示该图片不予展示,观察 ajax 接口返回的源数据,看到是直接返回 html源码,还有key、value 等字符串,暂时不明确这些的用途
对比渲染前后的html数据,有如下的不同点:
img_number 后疑似 md5编码(长度为32)的字符串不见了
style 属性多了 display
在这里猜测是根据不同的img_number值来判断该图片节点是否给予展示,因为返回的图片节点数量明显大于网页所展示的数量
直接全局搜 img_number,发现只有一个结果,加断点调试:
到这里逻辑就很清晰了,上面的操作就是:
把info即 原始html数据赋值给 $('.number')节点,也就是 <tr class="number">
根据 key 和 value 先进行 base64编码 再进行 MD5加密,计算出 j_key,只要是class值 ...
web逆向-css偏移初体验
整理一下之前做过的两道Css偏移的题,顺便巩固一下前端的知识
GlidedSky Css反爬题目:
从这里可以看到,各个小标签和显示的数字不是一一对应的,不过大标签的数量是对应的,都是12个,通过观察发现,里面混合了偏移、伪类、透明度等属性,我们一个一个来看:
伪类(::before)
这个标签里面又没任何内容,只有一个 ::before 的字样,这是个什么东西呢?
在css中,::before 是一个伪类元素,利用::before可以把需插入的内容插入到元素的其他内容之前,需要配合content属性来指定内容的值。传送门
所以只要找到 content 值就行了,直接拿 class值去搜索:
爬取的时候只要提取出 content 就行了
透明度(opacity)
有的标签只有两个数字,却有三个标签,比如上图的8透明度为0,在网页完全是不显示的,这是通过设置opacity(取值0-1)来实现的,爬取的时候需要把这些标签识别出来,然后剔除掉
偏移(left)
观察上图,按照标签地顺序,网页显示的值应该是 512 才对,但因为 left属性作了偏移,才显示为 152
看到left ...
APP逆向-知识点总结
安卓工具网站:https://www.androiddevtools.cn/index.htmlADB下载:https://blog.csdn.net/x2584179909/article/details/108319973
adb shell命令集合
adb调试夜神模拟器
打开USB调试,切换到/Nox/bin文件夹,运行 adb devices 命令就行,不行就重启模拟器
查看当前包名和主Activity
1adb shell dumpsys window | findstr mCurrentFocus
查看当前最顶层活动调用类
1adb shell dumpsys activity top
安装无签名apk(xposed模块):apk install -t xxx.apk
显示设备无权限 unauthorized:https://www.cnblogs.com/cooraa/p/15691093.html
ddms查看当前页面的调用栈
需要 Android Studio < 3.2 版本
Android Trace 分析代码流程
没什么用,不如直接Hook类下面的 ...
基于Hexo、Butterfly、Github的建站笔记
从零开始
Butterfly 官方文档
【紀錄】由零開始,Github + Hexo (Butterfly theme) 搭建個人博客 | 我的倉庫 | ouoholly
十分钟搭建个人博客(Hexo + GithubPage + AWS Route53) MartinM Blog
Hexo-Butterfly主题博客搭站记录 | 无境
Butterfly主题安装文档(三)之主题配置2_风如也的博客
2024.10 魔改
博客魔改教程总结(一) | Fomalhaut🥝
fomalhaut1998/hexo-theme-Fomalhaut: 🥝的网站源码
hexo 常用命令参考:https://segmentfault.com/a/1190000002632530
hexo init 初始化
hexo server 启动服务
hexo g -d -m "cxs" 博客发布更新
hexo clean 清除缓存,网页正常情况下可以忽略此条命令
hexo new page xxx 创建新页面
hexo new post "xxx ...
web逆向-七麦signature参数分析还原
前言想写这篇主要是七麦网的加密方式比较有趣,有挺多值得深究的地方,在文章中我会一步步用python还原,并介绍一些加密的知识,那么话不多说,let the hacking begin !
调试七麦网基本每个数据接口都需要带上 analysis参数,不然就会返回 Access Error
直接全局搜analysis基本没有线索,说明七麦把这个键值做了隐藏,直接xhr下断点
断住了,接下来就是观察变量和追踪 Call Stack了
在 promise 异步请求的 interceptors 中发现可疑点,打个断点试试
promise 是 ES6 新增的一个用于处理异步任务的javascript类,因为js代码是单线程执行的,很多浏览器事件都必须异步执行(传送门)
12// promise 执行并打印结果window.PSign.sign(cxs).then(function(e) {console.log(e.h5st)});
interceptors 即Axios(一个基于 promise 的 HTTP 库)的拦截器模式,分成两种,分别是request请求拦截器和r ...
Tortoise git 设置 v2ray 代理
github这阵子又抽风了,有时能连上有时连不上,时不时就unable to access...
想起电脑之前装了 v2ray,也有稳定的节点,就研究了一下怎么给 tortoise git 设置代理
打开 tortoise settings ,找到网络选项卡
然后根据你的 v2ray http 实际端口进行配置,记住不是socks5端口,如图:
终于连接成功:
爬虫工程师-面试日记
0701657335e84f0c327f6bba26337f2a8d2ddfaa04a524a7a3f409fdb8f60893306f4378e52756f02181b00b260e9ee617ae5105b0b98567ce27cdb2193393323752d36c6c48a3d1f6f808700873b268b1636c8f3675c1e0516370322d4ef3ffccb3fb0aa8336405c0c4a01bb79311ec9001629114a6c249d9fa5a354373e46fd0e751d8548ff42e4b9e2a9a405da64512708c704a879e4d722c5818855607774ce8e6e075fa5b97b96a00cf3f5adc3e3cd70f6ba8ff0a7f1e03c06a20fafb296d7adf13d7041761ee14ade7059382e92af2b1f9fe81921226b3e01ab2b27910bcf641d68b4680b0379b0fb9d2537701049f4ae82edfd3645 ...
《犬夜叉完结篇》,夏天的风吹尽了……
0701657335e84f0c327f6bba26337f2af691d1a3b20cfb6f9400c9b9d8af4bef46eb285526150bd15b1593284ec12495615455963a22911615d2eb40d728fbe56e2442818e539a6df7c468da9476ba83f5a71aadae1b6316bd6878fb94650a577b616c38a14b4099521866d759e53d52b2662e65f582bb97b200771092b6381dce979089e743911f09c295bc73319aca046df58d1344559795d4fc7e14b72aee5e849c8badc855fb6a98039e9a13f5e444fe36500f728739d2e95edbe18791326d3197f7d0be654c82ec1f6de099328717237b400bdb4f29ed4852c100bd5bdf43942b81dc696ec5b49bd58319f6a15e3515db9b0a1a13d05 ...
web逆向-豆瓣读书搜索接口
一直都想写这篇,但之前都太懒,久而久之成了心里的一道坎
首先来看一下原始数据,可以看到 window.DATA 里面是一大串意义不明的乱码
直接全局搜索 window.__DATA__ 然后下断点,刷新页面
进入到 Lt.dispatch 函数内部
这里很明显,r 就是 window.__DATA__,即原始数据,e(t)(n) 意思是原始数据经过了若干个函数的处理
我们进入到函数内部,看看具体做了什么,以及怎么用python来实现相同的功能
第一个函数首先是 (n) 函数
可以看到里面有好几处处理,我们一个一个来复现
a = e.from(r, “base64”)原始数据r经过e.from函数的处理后,变成了Unit8Array的数据类型,其实就是对原始数据进行 base64 解码python主要使用base64标准库实现
1a = list(base64.b64decode(data))
从上图可以看到两个的效果都是一样的
s 和 u
12s = Math.max(Math.floor((a.length - 2 * i) / 3), 0)u = a.slice(s, s + ...