web逆向-知乎新版x96逆向分析
调试断点什么的废话就不说了,直接扣代码,搜 __g._encrypt 就行
还是按以前一样,修改函数名,运行看看
可以运行,而且每次结果都不一样,这里我就不去校验了,直接下结论,这结果是错误的,和网页的有差别 🥶🥶🥶
补充了 atob 函数后,还是只能在浏览器环境运行,node环境运行不了,看来是检测了环境
参考大神文章:https://blog.csdn.net/zjq592767809/article/details/126512798
产生的是随机结果,看看能不能 hook 随机数 或 时间戳
123Math.random = function(){ return 0.50};
算法的分析还原过程,大佬的博客已经写的很清楚了,我这里来写一下 搜索接口 /api/v4/search_v3 的注意点
注意点 一请求主链接,获取 _xsrf 参数
注意点 二访问 /udid 接口时,请求头要带上 x-xsrftoken 参数
没有上面的步骤的话,请求就会触发知乎的验证码机制
x96.py
12345678910111213141516171 ...
web逆向-猿人学第二十题-WASM进阶
目标是 sign 参数的生成,直接搜
进入sign函数内部查看
这里 _index_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ 名字很长,其实就是 wasm 模块的意思
前面已经写过文章介绍了三种方法,python如何调用wasm文件,直接上代码试试:
文件地址:https://match.yuanrenxue.com/api/match20/wasm
123In [1]: import pywasmIn [2]: runtime = pywasm.load('wasm.wasm')
报错:Exception: pywasm: missing import ./index_bg.js.__wbg_instanceof_Window_434ce1849eb4e0fc
果然没那么简单 😅 看一下源码,从外部js导入了其他函数
没办法,只能硬着头皮去肝wasm源码了,先上一段wasm 基础
1234567891011121314151617181920212223242526272829303132333435 ...
web逆向-B站弹幕protobuf协议的逆向分析
目标是B站弹幕的数据还原,随便打开一个视频,直接三连
能看到真实文本,但也有一些乱码,看一下 content-type
1content-type: application/octet-stream
参考这篇可知,这是一个字节流文件,但浏览器也不知道如何处理
算了,直接google 就可知,这是一个使用了protobuf协议编码 的文件,使用这种协议的好处就是数据量小,传输快,坏处也显而易见,就是使用麻烦!!!
配置这里统一选的版本是:3.20.0
先下载两个压缩包:https://github.com/protocolbuffers/protobuf/releases/tag/v3.20.0
再安装相关库:pip install protobuf==3.20.0
最后把 protoc.exe 配置到环境变量
protobuf 初体验然后可以写一个小demo玩一玩,首先是自定义 .proto文件
123456789syntax = "proto3";message Person { string name = 1; int32 age = 2; ...
web逆向-jsvm实战-知乎旧版x86.md
这其实也是我之前做过的一个逆向,本来想先写今日头条的signature的,结果网站直接把反爬给下了,一点含金量都没有 😅😅😅
还是来写知乎吧,之前的过程忘得也差不多了,一边逆向一边记录咯 🧔🧔🧔
目标是知乎的搜索接口,其他问答文章专栏接口什么的也大同小异,老规矩,先fiddler抓包分析,找到搜索接口返回的数据:
请求头里面的参数太多了,哪些是必要的也不清楚,把请求拖到组合器,一个一个删除来测试:
最后确定了,x-zse-93 x-zse-96 Cookie里面的d_c0 这三个是必须的
第一个不用看,每次都是固定的值 101_3_2.0
d_c0的话则是**/udid**接口返回的,在每次请求前先访问一次拿到就行
重点来说说x-zse-96这个参数,直接搜索关键词,有两个结果,都打上断点,然后刷新页面
从图中可以看到 x-zse-96 其实就是 signature 的值,而signature的生成点在这里:
1234567891011121314151617T = function (e, t, n, r) { var i = n.zse ...
web逆向-猿人学第十八题-jsvm初体验
一直有听说jsvmp的大名,但这玩意具体是什么呢?
首先是vmp,即 Virtual Machine Protection 虚拟机保护技术 原理这里有篇介绍:
VMP加壳(二):VMP的虚拟化原理 - 第七子007 - 博客园
jsvmp,顾名思义,就是用来保护js代码的,通过自定义一个js虚拟机,将原始的指令转化为自定义的指令,运行时将该函数放到虚拟机中运行,从而整体逻辑无法被跟踪与逆向
这样说你可能还是一头雾水,还是边实战边体验虚拟机的奇妙之处吧
题目地址:https://match.yuanrenxue.com/match/18
这里只有v参数是不确定的,追栈追到cback函数,很明显这里是处理拿到后的数据,生成一些html节点
我们直接在 xml.open 函数这里打上断点,然后F11进入函数内部看一下
不出意外的话,就是这里面生成了v和t两个参数,F10一步一步向下执行,直到生成完整的链接
调试到这里的时候,v和t就已经生成完毕了,所以可以判断生成点在这里
注意到函数的末尾,有一大串乱码的字符串,那其实就是 jsvmp,很多重要的逻辑都在那一大串里面,想调试几乎不可 ...
web逆向-wasm初体验
WASM的全称是WebAssembly,是一种使用浏览器运行非javascript代码的技术,常见的一般是用javascript调用C/C++文件,执行其中的方法
要逆向的话,就得找到 .wasm 后缀的文件,找到加密逻辑,然后用python进行调用,来看两个案例,方便理解
spa14题目地址:https://spa14.scrape.center/
直接在 network 中找到 wasm文件,然后保存到本地
那要怎么打开wasm文件呢,直接以文本形式打开的话,是一大串乱码
这里有一个专门解析wasm源码的网站:https://webassembly.github.io/wabt/demo/wasm2wat/, 点击upload上传文件
源码看不懂的话,先放一边,来分析一下原网站
要获取数据的话,就得找到sign的生成逻辑,打xhr断点追栈(也可以直接搜 **sign:**)
来看看 sign的生成逻辑:
12n = (this.page - 1) * this.limit;e = this.$wasm.asm.encrypt(n, parseInt(Math.round ...
Python编程-执行js代码的三种方式
js2py ( Released: Apr 2, 2021 )Github: https://github.com/PiotrDabkowski/Js2Py
官网:http://piter.io/projects/js2py
基本操作1234567891011121314151617181920212223242526272829In [1]: import js2py# 执行单行语句In [3]: js2py.eval_js("console.log('abcd')")'abcd'In [8]: context = js2py.EvalJs({}, enable_require=True)In [9]: context.execute("console.log(123)")'123'# 返回js函数In [5]: add_fun = js2py.eval_js("function add(a, b) {return a + b};&qu ...
web逆向-字体反爬(三)
来写一下这道,地址:https://match.yuanrenxue.com/match/7
目标就是要拿到所有的胜点数据,然后进行比对筛选
看一下网络抓包
看到没有直接返回数据,而是 뒃   뒃 等数据,底下也有一个 woff的base64文件
先把字体文件解析下来,然后打开看看:
这里就很明显了, unib483 和 뒃 一样是对应数字2的,所以关键是如何拿到小标题和数字的映射关系
这道题不像 字体反爬(一),数字不是是按顺序,而是乱序的,测试的时候发现接口每次返回的数字顺序都不一样
这就需要我们深入到文件的源码里面去探索,首先把woff文件转换成 xml,用的是 TTFont.saveXML 方法
123In [7]: from fontTools.ttLib import TTFontIn [9]: tt = TTFont("test.woff")In [10]: tt.saveXML("test.xml")
打开xml文件,查 ...
爬虫工程师-网页内容通用解析方案对比
文章:http://www.qdaily.com/articles/65298.html
列表页:http://www.qdaily.com/
newspaper(Released: Jun 14, 2017)安装:pip3 install newspaper3k
github地址:https://github.com/codelucas/newspaper
123456789101112131415161718192021222324252627282930# 传入url,指定 language的效果比较好from newspaper import ArticleIn [10]: article = Article(url, language='zh')In [11]: article.download()In [12]: article.parse()In [21]: article.htmlOut[21]: '<!DOCTYPE html><html><head> <meta charset="UT ...
Python框架-Scrapy笔记
初始配置1234567891011121314download_delay = 20 # 下载延迟custom_settings = { "HTTPERROR_ALLOWED_CODES": [404], # 允许404 "COOKIES_ENABLED": True, "DOWNLOAD_DELAY": 5, "DOWNLOAD_TIMEOUT": 5, "REFERER_ENABLED": False, # 关闭自动refer "REDIRECT_ENABLED": False, # 禁跳转 "RETRY_HTTP_CODES": [429, 401, 403, 408, 414, 500, 502, 503, 504], # 重试http码 "DEFAULT_REQUEST_HEADERS": { ...... &qu ...