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

网址:

aHR0cHM6Ly9ob3RlbC5iZXN0d2Vob3RlbC5jb20vTmV3TG9naW4vP2dvPWh0dHBzJTNBJTJGJTJGaG90ZWwuYmVzdHdlaG90ZWwuY29tJTJG

特征:

#123456
password: "JfYot+NjHbQacTYI6d5KMQ=="
  1. 账号登陆测试网站

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

2.获取到加密特征信息

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

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

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

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

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

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

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

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

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

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

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

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

password: r.encryptAES(t),
password: 'JfYot+NjHbQacTYI6d5KMQ==',

7.打开加密函数查看

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

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

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

encryptAES: function(e) {
            return l(e)
        },

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

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

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

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

【JS逆向】某江酒店登陆密码AES加密逆向分析探索!_开发语言_11

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.扣代码,参数,整理,本地运行

【JS逆向】某江酒店登陆密码AES加密逆向分析探索!_开发语言_12

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