前言
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:
- 密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。
- AES支持三种长度的密钥:128位,192位,256位
- 平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。
- AES的工作模式,体现在把明文块加密成密文块的处理过程中。AES加密算法提供了五种不同的工作模式:ECB、CBC、CTR、CFB、OFB
当然,以上内容主要是为了让大家对AES算法有一个较为简单的概念,我们在正常情况做逆向,并非需要一定理解算法的方方面面,但是要有一个相对而言的概念信息
声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关。
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除,请各位自觉遵守相关法律法规。
逆向分析
- 目标:搜狐网
主页:aHR0cHM6Ly93d3cuc29odS5jb20vYS83NDQ4NjYwMzdfMTE1NTEwP3NjbT0xMTAyLnhjaGFubmVsOjMyNToxMDAwMDIuMC42LjAmc3BtPXNtcGMuY2hhbm5lbF8yNDguYmxvY2szXzMwOF9ORGRGYm1fMV9mZC4xLjE3MDI4NjI4MTA4MzZFYnU3aGNlXzMyNA==
接口:aHR0cHM6Ly93d3cuc29odS5jb20vYS83NDQ4NjYwMzdfMTE1NTEwP3NjbT0xMTAyLnhjaGFubmVsOjMyNToxMDAwMDIuMC42LjAmc3BtPXNtcGMuY2hhbm5lbF8yNDguYmxvY2szXzMwOF9ORGRGYm1fMV9mZC4xLjE3MDI4NjI4MTA4MzZFYnU3aGNlXzMyNA==
对其网站进行爬取,发现我们所需要的内容就在这个文档里面,而且基本上来说,我分析时候没有发现头部和载荷有什么加密的情况,既然如此,直接进行一个模拟请求测试一下
也很正常的获取到了相应的文字内容,但是对其进行爬取时候发现,该网页的图片信息是加密的
检查对应图片位置,在浏览器里面是这样的,很正常的url图片地址
但是使用BeautifulSoup进行数据提取,进行请求后发现,在响应的位置里面,获取到的图片url是如下长相
所以其对该位置图片url进行了加密处理,所以对其进行逆向算法分析
因为暂时没有什么思路,打下XHR断点跟着看看是什么逻辑(对于加密,或者直接搜索data-src关键字或者decrypt,分析一下加密位置),进行刷新,确认位置如下
发现i的值就是我们所需要的解密后的图片值
在这里进行逆向即可,把这一部分拿下来,然后对其进行跟逻辑
想要获取到i值,先得分析o值,然后看这个模式,基本上可以确定为是对称加密算法,然后o值需要先分析i = c.a.parse(i),以及传入的o值,该值就是加密后的参数,可以在最开始时候响应请求,所以在i = c.a.parse(i)打下断点,进行分析i值怎么来的
大概就是以上几步逻辑,扣下来稍微改一改就能得到正确的i值了,一个四位数组
然后分析算法,进行跟算法时候,很明显就很像AES加密,测试一下看看是不是,如果是的话,直接在node.js中进行模拟
最后一步分析这里时候
这一步的逻辑和分析i值得逻辑基本上差不多,也进行单步调试看一下就可以了
结果展示
对其进行python请求测试
写在最后:
本人写作水平有限,如有讲解不到位或者讲解错误的地方,还请各位大佬在评论区多多指教,共同进步.如有需要代码和讲解交流,可以加本人微信18847868809