首页
社区
课程
招聘
[已解决] [求助]题库接口响应结果解密 10雪币
发表于: 2024-10-19 19:31 3282

[已解决] [求助]题库接口响应结果解密 10雪币

2024-10-19 19:31
3282

各位大佬好,
本人碰到了一个题库软件,想抓它的搜题接口来使用
最近几天刚刚接触逆向方面,望大佬帮忙解惑

这是我抓包到的接口,发现sign参数可以为空
图片描述

curl -H 'requestId: 7c016d8e9e1243c673837f2e66ef76f1' -H 'timestamp: 1729241545686' -H 'user-agent: Mozilla/5.0 (Linux; Android 12; LGE-AN10 Build/V417IR; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Mobile Safari/537.36 uni-app Html5Plus/1.0 (Immersed/24.0)' -H 'Content-Type: application/json' -H 'Host: app.itihey.com' --data-binary '{"word":"计算机","pageNo":0,"pageSize":10,"sign":"8b947bf3670e"}' --compressed 'https://app.itihey.com/app-service/api/queryAnswer'

然后我通过jadx反编译这个APP,搜索queryAnswer关键字找到assets/apps/__UNI__0933EAD/www/app-service.js,文件在附件中

小弟怀疑这个文件像是对响应结果result的解密文件,但无奈知识短浅,如果真是这个文件作用于解密,想麻烦大佬帮忙解惑一下其中的知识,如果不是想问问下一步该怎么办,谢谢大家了


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-10-19 19:32 被mb_yovzftwz编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 633
活跃值: (1198)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
应该是的,那个FormatAndDecrypt函数应该就是解密的,
2024-10-20 10:29
1
雪    币: 284
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
git_91357jnabnsn 应该是的,那个FormatAndDecrypt函数应该就是解密的,

好的,谢谢大佬

请问下一步我该怎么去获取这个函数的定义

我在jadx中搜索FormatAndDecrypt这个函数并没有找到它的定义

然后我发现在这个js的目录下,有个名为app-confusion的js文件加密了,会不会是在这个js文件里面定义了这个方法,我该往那些方向去实现解密这个js文件


2024-10-20 14:44
0
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
加壳了吧
2024-10-27 20:40
0
雪    币: 1373
活跃值: (6271)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
.KK
5
给个应用看看
2024-10-29 11:21
1
雪    币: 284
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
.KK 给个应用看看
这是APP的下载地址:https://app.itihey.com/share/index.html
2024-10-30 15:53
0
雪    币: 1373
活跃值: (6271)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
.KK
7

把时间戳的算法弄出来就差不多了

2024-10-31 17:52
1
雪    币: 284
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
.KK 把时间戳的算法弄出来就差不多了

感谢大佬,大佬我有几个问题,如果方便的话可以指点一下嘛

这个解密函数里的参数是以下这些吗?
参数e是 响应结果返回的result
参数t是 1730366597951|1730366597951b3f

(e, t){
    r = n.enc.Utf8.parse(t),
    o = n.AES.decrypt({ciphertext:n.enc.Base64.parse(e)}, r, {iv:n.enc.Utf8.parse(i), mode:n.mode.CBC, padding:n.pad.Pkcs7});
    o.toString(n.enc.Utf8)
}



参数t =1730366597951|1730366597951b3f 
下面这个参数e是现行时间戳还是响应结果返回的result咧?
KRT 的具体定义我该如何去寻找


(e){
    e + (e){
        e[K[]+R[]+T[]+T[]+T[]](-)
    }((e){
        e[T[]+K[]+K[]+R[]+K[]+R[]+T[]+T[]]()
    }(e))
}


2024-10-31 20:37
0
雪    币: 1373
活跃值: (6271)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
.KK
9

2024-11-1 09:47
0
雪    币: 284
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
.KK

哥,首先感谢您的耐心解答,小弟也有尝试着去分析理解但小弟是真的看不懂,如果您有空且方便的话可否帮小弟弄出最后的成品代码,小弟愿意将所有雪币奉上,下面这段代码是根据大佬提供的思路进行编写的不知可否正确

function a(e, t) {
    // IV
    var iv = CryptoJS.enc.Utf8.parse("1.9.9.82057");

    // var key = CryptoJS.enc.Utf8.parse(t);
    var ciphertext = CryptoJS.enc.Base64.parse(e);

    // CryptoJS AES var decrypted = CryptoJS.AES.decrypt(
        { ciphertext: ciphertext },
        key,
        { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }
    );

    // return decrypted.toString(CryptoJS.enc.Utf8);
}

// var encryptedText = "L2eRcGOp+dSCuI5bydSH79DRbm1dxDvINOKe50GCp/l6vO8nkTfzCM6ESok2aLeJwEEMAgp1e/7McdOTYEmye5EXPWElK+czITU4LyFMVnqjmHzopclNur5bR+WwxmRLtGZCXKH5Fe9NtOX69Jg7t4D3n3vfBUvcH1sx8WijYHA="; // 密文
var key = "1730438713834|1730438713834b3f"; // 最后三位由算法算出
console.log(a(encryptedText, key));
2024-11-1 13:31
0
游客
登录 | 注册 方可回帖
返回
//