数据量非常大时该如何解密
This_is_Y Lv6

记录一下当数据量非常大时,解密数据的一个思路,方法比较呆,但是主打一个能用就行

image-20250324133947467

加解密分析

先看数据包

image-20250321114635910

可以看到请求和响应都加密了,不过运气比较好,请求中有关键字helloworld。顺着这个查应该就能找到加密函数了

image-20250321114930972

两个地方,下面这个地方仔细看一下代码可以发现并不是我们目标的post数据包的加密过程,看第一个config,是把decodePre变量的值赋值为helloworld,所以找一下decodePre就好了。

image-20250321115230596

轻松找到,配合jsrpc很简单就写完了解密脚本

问题

第二天晚上,同事和我说有个接口返回的数据量特别大,有达到了几十MB甚至100MB,用jsrpc解密直接卡死,

image-20250324130609048

最开始我想的是把js下载下来,用nodejs运行解密函数,简单分析了一下代码构造了一下js,修改了一点报错。

1
2
3
window.Int32 = {
^
ReferenceError: window is not defined

这种报错,只需要把window.给删掉就行了,然后在最前面加上const crypto = require('crypto');即可。

image-20250324131358835

image-20250324131309730

最后也那一点普通的加密数据试了一下,发现很快就解出来了,但是尝试去解密那个几个大的数据的时候,解了十几分钟都没反应,

image-20250324132044252

image-20250324131717097

image-20250324131912976

所以转换思路,把解密算法改写为python,当然这种活我自己肯定干不出来,或者说短时间内干不出来,所以我丢给ai来干,但是4000行的代码,从通义到copilot再到deepseek,都歇逼了。所以想到一个比较呆的办法:手动优化这个sm.js文件,就只保留解密部分,最后把解密部分的代码丢给ai,让他用python给我解决

看了一下代码的结构,大部分都是函数和定义,但是手动去找函数的结构有些麻烦,所以先用vscode的全部折叠功能(),把所有的函数全部折叠起来,然后一部分一部分的删,删一部分就运行一下代码,确保删掉的部分不影响正常解密。

image-20250324132747406

image-20250324133027661

最后在删了十来分钟后,得到一个200多行的代码,这时候把这个代码丢给deepseek,成功生成了python版本的,

image-20250324133324102

最后用这个python版本的代码,跑了几分钟就把几个大文件全部解密出来了,最后获取到一批敏感数据

image-20250324133726343

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
访客数 访问量