KN航司 JS逆向 登录 AES加密 图形验证码

发布时间:2026/8/19 22:54:39
KN航司 JS逆向 登录 AES加密 图形验证码 技术文章大纲KN航司JS逆向登录AES加密与图形验证码分析目标网址aHR0cHM6Ly93d3cuYWlya3VubWluZy5jb20vIy91c2VyL2xvZ2lu逆向目标分析KN航司登录流程概述用户输入账号密码、图形验证码校验、加密数据传输核心安全机制AES加密算法应用、图形验证码动态加载策略KN主要接口mlogin(获取Aes秘钥)getPhotoCode(获取验证码),doLogin(登录)JS逆向分析流程流程分析打开目标网址输入账号密码点击登录会触发doLogin接口里面带解码的字段有password,sign,token,uid. photoCode是图形验证码打上断点分析具体逻辑监听doLogin接口重新触发。会发现此时已经生成待解码数据。继续跟栈找到memberLogin这里是登录的逻辑打上断点重新触发明文密码经过o.a.encrypt加密生成值进入该方法明显看到是一个AESPkcs7填充方式。秘钥是固定秘钥UIDTOKENUID和TOken是同一个值通过l.o.getGraphCodeId()方法获取这里通过SessionStorage来存放获取值删除浏览器缓存打上断点重新获取可以看到这个值是验证码操作返回的观察验证码接口返回值确定uid是验证码接口下发Signature搜索Signature并打上断点重新触发这里是signature的方法。跟栈进入这里将刚才的数据做了字符串拼接并进行AES加密验证码接口搜索getPhotoCode打上断点刷新并触发这里是带上当前时间戳进行sign加密token获取进去sign的方法里面会调用this._getToken()来获取进去方法是从缓存中获取删除浏览器缓存并搜索set方法打上断点触发此时已经生成。继续跟栈是mLogin接口返回的值mLogin接口搜索mLogin并打上断点参数是a()方法生成进入该方法扎一看是uuid仔细跟栈会发现跟uuidV1有出入标准的uuidv1会使用真实mac地址但是这里是随机的不使用mac地址。这里的逻辑是先生成一个16的随机数使用前六位。然后再生成随机的7.8位。然后把时间戳放进去。一句话总结就是。browserId 当前时间 同毫秒流水号 随机辅助号 随机设备编号aes接口aes:这个接口是把mLogin下发的token去向服务端注册然后才能使用搜索aes并打上断点这里已经生成所需要值是在checkRSA里面然后搜索这个变量并重新断点进入该方法这一部分是进行RAS来获取aeskey参数python解码mLogin接口参数的生成部分截图aes接口的key生成代码def encrypt_aes_key() - str: public_key RSA.import_key(base64.b64decode(PUBLIC_KEY)) encrypted PKCS1_v1_5.new(public_key).encrypt(AES_KEY) return base64.b64encode(encrypted).decode(ascii)signature部分截图代码验证码接口登录接口图形验证码破解使用ddddocr即可还原结果验证法律与伦理声明强调技术研究边界注明实际应用需获得授权个人观点禁止商业行为侵权请联系下架