某藏品网站的加密参数(二)

相关藏品信息
在这里插入图片描述
这里会发现会有两个请求
在这里插入图片描述
这里会返回一个data 类似秘钥的东西 先不管 后续再看
在这里插入图片描述
这个v2 这个请求就是获取数据的接口了 接着看下它的请求头

在这里插入图片描述
这里有一个sig 应该就是签名了
接着再看下请求的参数

在这里插入图片描述可以发现 发送post请求的参数sig也在这里面 那么这个就必须要解了

接着跟进调用栈
在这里插入图片描述这个 就顾名思义了哈
进去看看 打个断点

在这里插入图片描述
找到了 ~ 就在这里生成的.

dataResultFun = dataresult.split(",")[0].substr(4),
dataResultId = dataresult.split(",")[1].split("=")[1],
sigresult = eval(dataResultFun),
sigData = _utils_aes__WEBPACK_IMPORTED_MODULE_25__["a"].encryptSelf(dataResultId, sigresult)),

可以发现 sig是通过encryptSelf这个函数传了两个参数生成的
而这两个参数又是通过一个字符串通过split切分出来的

那么关键点就要找到这个字符串dataresult怎么来的
接着分析

sig.data.code && (dataresult = _utils_aes__WEBPACK_IMPORTED_MODULE_25__["a"].decrypt(sig.data.data),

在这里插入图片描述
这里发现 这个字符串是通过 把第一次get请求返回的data通过decrypt函数解密出来的

那么就来看看这个decrypt函数
在这里插入图片描述
很明显 这是个AES解密
在这里插入图片描述
在这里插入图片描述
可以发现 这个data通过aes解密出来是一段 字符串代码
这就迎刃而解了

sigresult这个参数则是通过eval这段代码出来的 dataResultId是通过切分字符串来的

好了接着看下这个encryptSelf 函数
在这里插入图片描述
这也是个AES加密

这里其实早可以发现 这个o.a其实就是js引入的crypto-js这个包

CryptoJS = require("crypto-js");
window = global;

window.deciphering = function(e,t){t=t||32;for(var n="ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",a=n.length,c=0;c<t;c++)n.charAt(Math.floor(Math.random()*a));return e}

function get_eval_str(e ,key){

t = CryptoJS.enc.Base64.parse(key)
res1 = CryptoJS.AES.decrypt(e, t, {
                    mode: CryptoJS.mode.ECB,
                    padding: CryptoJS.pad.Pkcs7
                }).toString(CryptoJS.enc.Utf8)

return res1
}

function get_num(str){
    rs = eval(str)
    return rs
}

function encryptSelf(t, n) {
                var a = CryptoJS.enc.Base64.parse("4tBlCLWFZ3eD93CvDE2lpw==")
                  , c = JSON.stringify({
                    id: t.substr(0, t.length - 1),
                    sum: n
                })
                  , i = CryptoJS.enc.Utf8.parse(c)
                  , s = CryptoJS.AES.encrypt(i, a, {
                    mode: CryptoJS.mode.ECB,
                    padding: CryptoJS.pad.Pkcs7
                });
                return s.toString()
            }


re = encryptSelf("a3bc847b6172c436272e5826efbf94f9}", 86957757392)
//ss = get_num('(function(){let a=782;let b=158;let x=597;let y=748;let result=x*a - y*b ;return window.deciphering(result)})();')
console.log(re)

好了 我们直接在本地通过node 还原这部分代码 计算下签名
接着用py模拟试下

在这里插入图片描述
ok !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数字藏品是一个用Java编写的数字收藏和展示平台。该平台允许用户上传和展示各种数字藏品,如图片、音频、视频等。用户可以创建自己的藏品库,并将自己喜欢的数字藏品进行展示和分享。 在数字藏品的Java源码中,主要包括了用户管理、数字藏品管理、展示功能和分享功能等模块。用户管理模块包括用户注册、登录、个人信息管理等功能,用户可以通过这些功能进行个性化管理。数字藏品管理模块包括上传、编辑、删除数字藏品等功能,用户可以通过这些功能管理自己的数字藏品库。展示功能包括按照分类、时间线等方式展示数字藏品,用户可以根据自己的需求浏览和展示数字藏品。分享功能包括将数字藏品分享到社交媒体平台或者生成分享链接,用户可以通过这些方式与他人分享自己喜欢的数字藏品。 在Java源码中,还会使用一些常见的框架和技术,如Spring框架、MyBatis、Maven等,这些技术可以帮助开发者更高效地完成数字藏品平台的开发工作。此外,还会用到数据库存储技术,如MySQL或者MongoDB,用来存储用户信息和数字藏品数据。 综上所述,数字藏品的Java源码包括用户管理、数字藏品管理、展示功能、分享功能等模块,还会使用一些常见的框架和技术来辅助开发。通过这些源码,开发者可以快速搭建一个数字收藏和展示平台。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值