逆向js混淆 解密食行生鲜的js加密函数

起因

在csdn里面看到这篇文章
(https://blog.csdn.net/bruce_6/article/details/81452796),想要试试逆向混淆js

登陆页面

食行生鲜手机登陆地址 https://wechatx.34580.com/mart/#/sign/in
逆向js混淆 解密食行生鲜的js加密函数_第1张图片
注册了一个账号 密码为 sxsxceshi

抓包

逆向js混淆 解密食行生鲜的js加密函数_第2张图片

POST的信息和返回信息
body的内容

 {
        "SourceType": "9",
        "Phone": "XXXXXXXXX",
        "PassWord": "5630a34faba98ebd1859909955301616",
        "ZhuGeDeviceMd5": "165608b8269af-0bcd173795bd2f-9393265-144000-165608b826ae7d",
        "DeviceId": ""
}


返回的内容,accesstoken 和 customerguid为我们要取的内容

{
        "Error": 0,
        "Message": "返回正确",
        "Data": {
            "CustomerGuid": "ce4846e8-e08d-4485-94e9-4ba6b7605509",
            "Phone": "XXXXXXX",
            "AccessToken": "a3451cb785aa4928"
        }
} 

前端逆向过程

那么原始的密码 sxsxceshi 被加密成了5630a34faba98ebd1859909955301616,要如何来进行模拟呢?
在上面的抓包中我们可以看到,POST的url 为
https://wechatx.34580.com/sz/Sign/SignInV2
先打开开发者工具,查看网页结构:
逆向js混淆 解密食行生鲜的js加密函数_第3张图片

可以看到,下面两个是前端的工具,对我们来说没什么卵用,所以右键第一个文件夹,搜索我们的关键字,也就是POST 的url 当中的 SignInV2(注意大小写)
逆向js混淆 解密食行生鲜的js加密函数_第4张图片

跳转到结果,格式化代码打上断点
逆向js混淆 解密食行生鲜的js加密函数_第5张图片

接下来输入用户名及密码 点击提交
逆向js混淆 解密食行生鲜的js加密函数_第6张图片

我们的密码已经被加密了,别急,先看一下调用栈
逆向js混淆 解密食行生鲜的js加密函数_第7张图片

可以看到这儿的值也被修改了,所以就在调用栈里一直往前追溯,(vue之类的框架源码我们可以直接跳过)
逆向js混淆 解密食行生鲜的js加密函数_第8张图片

往前看了一两个函数之后我们可以发现能够在65.b06e950747274a3056ef.js文件找到我们的原来的密码 sxsxceshi,
而此处的函数执行后结果如下:
这里写图片描述
可以断定密码便是在这里加密的,传入的两个参数分别为我们的密码sxsxceshi,还有一个字符串8D54E5D0,我们后面会用到它,先在此处打上断点。
查看这个k,可以跳转到k的函数所在的区域
逆向js混淆 解密食行生鲜的js加密函数_第9张图片
逆向js混淆 解密食行生鲜的js加密函数_第10张图片
上图的断点处便是前面的k函数,而 这里的 n 返回的又是a 函数的功能,我们看看a函数传入的参数
逆向js混淆 解密食行生鲜的js加密函数_第11张图片
两个参数,分别为密码,和之前的object 传入的 "8D54E5D0"
逆向js混淆 解密食行生鲜的js加密函数_第12张图片
这个函数执行完会执行i函数,也就是在a前边的一个函数。
逆向js混淆 解密食行生鲜的js加密函数_第13张图片
传入的参数 分别为

e t 1 1 e 1
8D54E5D0 sxsxceshi 1 1 8D54E5D0 1

我们把这 XJcS 里的头两个函数都丢到node或者console里面去执行
逆向js混淆 解密食行生鲜的js加密函数_第14张图片
结果为压缩后的密码,撒花~

源码地址

摸我

你可能感兴趣的:(逆向js混淆 解密食行生鲜的js加密函数)