【Web逆向】某津市公共资源交易平台链接加密分析
- 声明
- 一、起因
- 二、开始分析
- 三、源码下载地址
声明
本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!
一、起因
好奇抓取 天津市公共资源交易平台 的消息列表,感觉是很简单的 get 请求就解决了,但是发现抓取的链接都不可以用。
我们手动去点击 web 端链接,发现链接和网页源代码中的链接有所出入。
网页源代码:http://ggzy.zwfwb.tj.gov.cn/jyxxcgjg/1005226.jhtml
Web 端链接:http://ggzy.zwfwb.tj.gov.cn/jyxxcgjg/seDcdFCWAJcesrD8hqP+Yw.jhtml
那就证明我们点击后,网页源代码的链接到 Web 端链接有经过转换,下面我们来一步步分析一下。
二、开始分析
选中某一条新闻的 a 标签,点击事件监听器,再点击 a 标签后面的文件跟进去看看。
再点击下面的花括号,把代码进行一下格式化,方便我们观看。
我们可以大概看出,点击后,a 标签的 href 元素传值给 hh,判断 href 是否存在或者是 #,如果不是,证明详情链接存在,再进行下面的代码。
我们在下面随便打个断点,重刷新一下,点击一个详情页,步进几步,可以看到
这些都是很正常的网页源代码的链接分解赋值,看来转换为 web 详情页链接是在下面这一段代码:
我们随便复制一段代码去搜索看看,比如:CryptoJS.enc.Utf8.parse 可以知道这段代码大概是 使用CryptoJS进行AES加密,如果对这个加密有兴趣的话参看官网文档:CryptoJS - docs
我们开始分析下面的代码,大概的意思就是先将那串数字(ccc)用 UTF8 加密成数组
再对密钥操作,问题来了,这里的 s 密钥是多少呢,打个断点测试一下:
可以看出密钥 s = ‘qnbyzzwmdgghmcnm’
再将上面的两个数组用 AES 加密:
将用 AES 加密过的 en 转为字符串:
我乍一看这种字符串像是base64加密,再将带有/符号的转为^,因为在url编码中,/符号有特殊意义
再将数据后面的[==]分割掉
最后的字符串就是需要的数据了,我们封装一下测试一下:
经过测试,没毛病,返回的这个字符与真实的一致。
三、源码下载地址
GitHub:某津市公共资源交易平台链接加密分析【麻烦客官点颗Star】
CSDN资源:某津市公共资源交易平台链接加密分析