栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

boss直聘

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

boss直聘

1.前言:

本分析过程仅供学习交流使用,切勿用于非法行为

关注公众号可以加我微信,加入群聊等,了解更多关于网络爬虫与逆向工程的知识

2.准备工具

python版本:python3.7
最新版nodeJs
目标站点:aHR0cHM6Ly93d3cuemhpcGluLmNvbS9jMTAxMjgwMTAwLXAxMDAxMDEv

3.协议分析

本文只针对__zp_stoken__的加密分析

3-1.寻找加密点



一顿操作可以看到我们要找的函数入口是在这里

code = (new ABC).z(seed, parseInt(ts) + (480 + (new Date).getTimezoneOffset()) * 60 * 1e3)

经过本人的分析后面这段(480 + (new Date).getTimezoneOffset()) * 60 * 1e3的值为0没啥用,所以本次的函数入口就是

code = (new ABC).z(seed, parseInt(ts))

这也太短了吧,是不是有点瞧不起人

别着急他其实很长,我们追进去就是映入眼帘的js控制流平坦化

3-2.应对js控制流平坦化

应对js控制流平坦化有两种方法:
第一种是将那些几万行的垃圾代码全部转为短小的代码(代码阉割)
第二种方法是直接硬刚,调试进去(不就是读代码吗有啥难的)
现在我们选择硬刚,就是干

3-3.硬刚控制流平坦化

追进去后就是密密麻麻的代码,这代码写的连他妈都不认得,一个switch写了两千多行
本文到此结束!!!!!

遵循的原则是缺啥补啥,下面我们来说一下补环境中需要注意的点
利用Js Proxy吐出一部分环境

window = new Proxy(window, {
    get: function (x, y) {
        console.log(y)
        return x[y]
    },
    set(target, p, value, receiver) {
        target[p] = value
    }
})
hook一下常用的Math和Date函数
因为参数__zp_stoken__是动态的所以时间戳必定在里面
全局搜索typeof 
全局搜索try catch
正则搜索.*[.*](.*)

通过以上几步的操作能将90%的环境搞定,但是生成出来的__zp_stoken__依旧不能百分百有效,这证明还是有缺漏,如果想要知道具体原因,关注公众号可以获取这部分

Js代码里面有webdriver和PhantomJS的检测

有对screen的检测

有对nodejs的检测(这个很骚)
除此之外还有__filename,Buffer等等
在浏览器里面这个是undefined,而在nodejs里面这是个特定的模块


最后看一下结果百分百成功

4.总结

如果觉得本文有用可以赞赏作者,如果你对操作有疑问,或者需要我编写的源码进行辅助分析,请关注公众号在页面加我微信
欢迎关注"python网络爬虫大数据与逆向工程"公众号,一起学习更多关于网络爬虫和逆向工程方面的知识

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号