网站建设需求方案推广软文模板
🤵♂️ 个人主页:@rain雨雨编程
😄微信公众号:rain雨雨编程
✍🏻作者简介:持续分享机器学习,爬虫,数据分析
🐋 希望大家多多支持,我们一起进步!
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
目录
一、数据接口分析
1. 抓包分析
2. 加密参数检查
二、加密位置定位
1. 启动器分析
三、JavaScript代码提取与分析
JavaScript源码分析
本文通过细致的步骤分析,展示了如何对“某某学堂”网站进行爬虫逆向工程。这个过程包括了加密参数的识别、加密位置的定位、JavaScript代码的提取与分析等多个关键环节。
一、数据接口分析
1. 抓包分析
主页地址:某某学堂
-
抓包:通过抓包,确定了网站的关键数据接口为
Account/LoginPost
,这是用户登录请求的接口。
2. 加密参数检查
-
请求参数加密:在请求的“载荷”部分发现
pass
参数是加密的,这意味着密码在传输过程中被加密。 -
请求头加密:没有发现请求头被加密。
-
响应加密:没有发现响应数据被加密。
-
Cookie加密:没有发现Cookie被加密。
二、加密位置定位
1. 启动器分析
-
调用堆栈:通过查看启动器中的
Login
函数调用堆栈,找到了可能的加密位置。
-
加密位置确认:在可能的加密位置打上断点,重新获取数据抓包,进一步分析发现,
pass
参数的加密确实发生在发送ajax请求的位置。
三、JavaScript代码提取与分析
-
encryptByDES
方法:通过调试进入encryptByDES
方法,发现网站使用的是DES加密算法。 -
密钥和IV:DES加密的密钥(key)和初始化向量(iv)在代码中是硬编码的,这简化了加密过程的复制。
-
调试验证:在返回加密数据的位置打上断点,再次登录获取数据,返回密文处断住
-
控制台输出查看:通过控制台输出查看,对比network负载中的pass数据
JavaScript源码分析
在定位到的加密位置,通过调试进入encryptByDES方法可以发现,网站是使用的DES加密,key和iv都在上方写死的,所以可以直接使用标准模块进行加密。
-
密钥和IV设置:函数中使用了固定的密钥
_key = 'k1fsa01v'
和IV_iv = 'k1fsa01v'
。 -
加密过程:密码通过DES算法和指定的密钥、IV进行加密,使用的模式是ECB(电子密码本模式),填充方式是Pkcs7。
-
返回值:函数返回加密后的字符串,这是登录请求中
pass
参数的值。
var CryptoJS = require('crypto-js')function get_pwd(pwd) {var _key = 'k1fsa01v';var _iv = 'k1fsa01v';var keyHex = CryptoJS.enc.Utf8.parse(_key);var encrypted = CryptoJS.DES.encrypt(pwd, keyHex, {iv: CryptoJS.enc.Utf8.parse(_iv),mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});return encrypted.toString();
}
文章持续跟新,可以微信搜一搜公众号 [ rain雨雨编程 ],第一时间阅读,涉及数据分析,机器学习,Java编程,爬虫,实战项目等。