【JS逆向】某江酒店登陆密码AES加密逆向分析探索!

某酒店网登陆密码AES加密逆向,采用的是 AES cbc 模式加密方式,如果能快速定位到加密关键位置代码,加密函数的话还是比较简单,不过搜索关键字结果干扰还是比较多的,需要多尝试,测试!

网址:

代码语言:javascript
复制
aHR0cHM6Ly9ob3RlbC5iZXN0d2Vob3RlbC5jb20vTmV3TG9naW4vP2dvPWh0dHBzJTNBJTJGJTJGaG90ZWwuYmVzdHdlaG90ZWwuY29tJTJG

特征:

代码语言:javascript
复制
#123456
password: "JfYot+NjHbQacTYI6d5KMQ=="
  1. 账号登陆测试网站

2.获取到加密特征信息

3.老规矩,搜索关键字 password

4.分析搜索结果,找到最可疑的地方,这里找了许久,找到两处

经过断点登陆调试,发现不是该处

第二处,看上去很像加密,同时返回的数据格式也很一致

5.打上断点调试检验一下

6.可以看到结果已经出来了,正是此处加密

代码语言:javascript
复制
password: r.encryptAES(t),
password: 'JfYot+NjHbQacTYI6d5KMQ==', 

7.打开加密函数查看

8.可以看到关键加密函数 l

代码语言:javascript
复制
encryptAES: function(e) {
            return l(e)
        },

这里我陷入了误区,一直在找加密函数,其实就是 l !

9.不放心可以继续断点调试,下一行调试

10.打开 l 加密函数查看,很典型的 AES 加密函数

代码语言:javascript
复制
    function l(e) {
        var n = CryptoJS.enc.Latin1.parse("h5LoginKey123456")
          , a = CryptoJS.enc.Latin1.parse("h5LoginIv1234567")
          , t = e
          , o = CryptoJS.AES.encrypt(t, n, {
            iv: a,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.ZeroPadding
        });
        return o.toString()
    }

11.扣代码,参数,整理,本地运行

需要说明的是经本地 python 直接AES cbc 加密方式与本地调用js文件生成加密不一致,故方法仅供参考学习!

声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系立即删除!

参考来源:

Python爬虫进阶必备 | 关于 AES 的案例分析与总结(一)-咸鱼学Python

https://mp.weixin.qq.com/s/gup5O0K1PQRUVRm0ufwfsA