之前用py写的提交有点问题,这次来从头分析一下协议
这个布局排版不会,凑合看一下吧
答题和问卷的协议几乎一样
工具:edge浏览器,fiddle
使用语言:python
为了保证所有cookies和其他缓存不会影响接下来的抓包,这里新建一个InPrivate窗口(无痕)
这里有个小技巧vj的会进行debug处理但是vm不会,可以直接修改地址,省去一些步骤
例如:ks.wjx.top/vj/xxxxx.aspx
改成:ks.wjx.top/vm/xxxxx.aspx
先提交一次看需求的参数
url附加参数如下
[Python] 纯文本查看 复制代码
shortidstarttimesourcesubmittypektimeshlvrnjqpramjcnnwjwtjpmtjqnoncejqsign
post附带的data需求参数
[Python] 纯文本查看 复制代码
submitdata
我们分析参数来源当然要看参数怎么生成的,但是直接去搜索参数发现搜不到,于是查看发起程序,第一个是jq的不用看,直接点第二个jqmobo2.js
简单获得和固定的的参数:
shortid : ks.wjx.top/vm/xxxxx.aspx
starttime : HTML页面内获取 <input type="hidden" value="2022/4/21 12:10:55" id="starttime" name="starttime">
source : directphone
submittype : 1
ktimes : 操作时间 可随机
hlv : 1
rn : HTML页面内获取 var rndnum="607374188.63586548";
nw : 1
jwt : 4
jpm : 70
t : 现在时间戳
jqnonce : HTML页面内获取 var jqnonce="d0c9ba05-56ab-4938-9b6f-8844f114d279";
接下来还有jqsign,jcn,jqpram 三个参数是通过加密或者运算得来的
jqsign
通过代码观看发现,jqsign是有jqnonce经过dataenc获得,直接断点跳过去,把代码拿出来
[JavaScript] 纯文本查看 复制代码
function dataenc(a) { var c, d, e, b = ktimes % 10; for (0 == b && (b = 1), c = [], d = 0; d < a.length; d++) e = a.charCodeAt(d) ^ b, c.push(String.fromCharCode(e)); return c.join("")}
函数内用到ktimes,所以我们把代码改改,把ktimes传进去
function dataenc(a,ktimes) {
var c, d, e, b = ktimes % 10;
for (0 == b && (b = 1),
c = [],
d = 0; d < a.length; d++)
e = a.charCodeAt(d) ^ b,
c.push(String.fromCharCode(e));
return c.join("")
}[/mw_shl_code]
jcn
jcn通过断点发现传入的是填表的姓名,算法与jqsign一致,而且后期测试发现有没有都行,那就不管了
jqpram
从代码中得到 [JavaScript] 纯文本查看 复制代码
window.jqParam && (w += "&jqpram=" + encodeURIComponent(jqParam)),
jqpram是通过encodeURIComponent(jqParam)
当前JS内并没有关于jqParam的来源,我们全局搜索,发现来源于一个混淆的js,用的是ob混淆
1. 具有大数组的情况
2. 数组移位(有内存泄露风险、建议不格式化),自执行函数,进行移位操作,有明显的 push、shift 关键字
3.解密函数(有内存泄露风险、建议不格式化)------可能有定时器--------(看加密的开关开启数量)
4.实际代码+控制流平坦化(整体ob的强度几乎完全取决于这段的代码强度,这里面是加密前的逻辑)
5.控制流平坦化+无限debugger自执行函数+死代码注入。一般情况下不会有业务逻辑所以不要问,ob、sojson如何破解。这些东西只是一层壳,破解强度完全取决于第四段代码,也就是其他网站作者写的代码强度!
6.函数名和变量名通常以 _0x 或者 0x 开头,后接 1~6 位数字或字母组合;
内容来源:https://www.cnblogs.com/YuanEven/p/15719932.html
0.0
查阅github找到了可以通过这个来解混淆
下载好node环境,git文件,配制好系统环境后执行
并把文件用fd映射到网页去,方便调试和了解代码,刷新网页
断点测试
[JavaScript] 纯文本查看 复制代码
var _0x4b9009 = rndnum["split"](".")[0]; //分隔rn 获取前置 给予_0x4b9009 var _0x37348b = abcd1(parseInt(_0x4b9009));//abcd1处理_0x4b9009 给予_0x37348b var _0x307a46 = (_0x37348b + "")["split"]("");//_0x37348b 给予_0x307a46 var _0x2f4e03 = $("#starttime")["val"]() || window["initstime"];//获取starttime 给予_0x2f4e03 var _0x17071c = abcdu(new Date(_0x2f4e03["replace"](new RegExp("-", "gm"), "/"))); //转换时间戳通过abcdu处理 给予_0x17071c var _0x12e25a = _0x17071c + ""; if (_0x17071c % 10 > 0) _0x12e25a = _0x12e25a["split"]("")["reverse"]()["join"](""); //_0x17071c%10>0 处理 var _0x24bc24 = parseInt(_0x12e25a + "89123"); //时间戳 1650522320+89123 结果:165052232089123 var _0x307a46 = (_0x24bc24 + "" + (_0x37348b + ""))["split"]("");//分隔上面 var _0xd36323 = abcd4(_0x307a46, "kgESOLJUbB2fCteoQdYmXvF8j9IZs3K0i6w75VcDnG14WAyaxNqPuRlpTHMrhz");//abcd4处理_0x307a46 var _0xc23193 = _0x24bc24 + _0x37348b + parseInt(activityId);//值得一提activityId打开页面的时候就处理了 jqParam = abcd3(_0xc23193, _0xd36323); var _0x16feb7 = abcd5(jqParam); jqParam = _0x16feb7;
activityId :页面获取
[JavaScript] 纯文本查看 复制代码
function DecodeId(input) { return input ^ 2130030173; } var activityId =2035206417; activityId = DecodeId(activityId);
这里已经分析完了,然后处理一下逆向后的js发出来
[JavaScript] 纯文本查看 复制代码
function abcd1(_0xd7a12a) { return abcd2(_0xd7a12a, 3597397);}function abcd2(_0x5d3f51, _0x2da958) { if (!abcdx()) return; var _0x17fe67 = 2147483648; var _0x330f76 = 2147483647; var _0x8c2ab2 = ~~(_0x5d3f51 / _0x17fe67); var _0x33045d = ~~(_0x2da958 / _0x17fe67); var _0xa5b0b1 = _0x5d3f51 & _0x330f76; var _0x352369 = _0x2da958 & _0x330f76; var _0x3f97b8 = _0x8c2ab2 ^ _0x33045d; var _0x4307f8 = _0xa5b0b1 ^ _0x352369; return _0x3f97b8 * _0x17fe67 + _0x4307f8;}function abcd3(_0x2a839f, _0x29778) { if (_0x2a839f - 62 < 0) { var _0x47bf41 = _0x29778["substr"](_0x2a839f, 1); return _0x47bf41; } var _0x5aa264 = _0x2a839f % 62; var _0xf91ae6 = parseInt(_0x2a839f / 62); return abcd3(_0xf91ae6, _0x29778) + _0x29778["substr"](_0x5aa264, 1);}function abcd4(_0x2d1e33, _0x4ccbfe) { if (!abcdx()) return; var _0x39c799 = _0x4ccbfe["split"](""); var _0x368c45 = _0x4ccbfe["length"]; for (var _0x2faa11 = 0; _0x2faa11 < _0x2d1e33["length"]; _0x2faa11++) { var _0x1e44d9 = parseInt(_0x2d1e33[_0x2faa11]); var _0x172ebc = _0x39c799[_0x1e44d9]; var _0x939174 = _0x39c799[_0x368c45 - 1 - _0x1e44d9]; _0x39c799[_0x1e44d9] = _0x939174; _0x39c799[_0x368c45 - 1 - _0x1e44d9] = _0x172ebc; } _0x4ccbfe = _0x39c799["join"](""); return _0x4ccbfe;}function abcd5(_0x30fc22) { if (!abcdx()) return; var _0x416034 = 0; var _0x39f6f7 = _0x30fc22["split"](""); for (var _0x3a1139 = 0; _0x3a1139 < _0x39f6f7["length"]; _0x3a1139++) { _0x416034 += _0x39f6f7[_0x3a1139]["charCodeAt"](); } var _0x33f508 = _0x30fc22["length"]; var _0x51436b = _0x416034 % _0x33f508; var _0xd1d5ab = []; for (var _0x3a1139 = _0x51436b; _0x3a1139 < _0x33f508; _0x3a1139++) { _0xd1d5ab["push"](_0x39f6f7[_0x3a1139]); } for (var _0x3a1139 = 0; _0x3a1139 < _0x51436b; _0x3a1139++) { _0xd1d5ab["push"](_0x39f6f7[_0x3a1139]); } return _0xd1d5ab["join"]("");}function abcdu(_0x32b9a8) { var _0x4ba9ab = -480; var _0x1ce339 = new Date()["getTimezoneOffset"](); var _0x2ab335 = _0x4ba9ab - _0x1ce339; return _0x32b9a8["getTime"]() / 1000 + _0x2ab335 * 60;}function abcdx() { if (navigator["webdriver"]) return ![]; if (document["$cdc_asdjflasutopfhvcZLmcfl_"]) return ![]; if (/PhantomJS/ ["test"](window["navigator"]["userAgent"])) return ![]; if (window["callPhantom"] || window["_phantom"]) return ![]; return !![];}function _0x156205(rndnum, starttime, activityId) { var _0x4b9009 = rndnum["split"](".")[0]; //分隔rn 获取前置 给予_0x4b9009 var _0x37348b = abcd1(parseInt(_0x4b9009)); //abcd1处理_0x4b9009 给予_0x37348b var _0x307a46 = (_0x37348b + "")["split"](""); //_0x37348b 给予_0x307a46 var _0x2f4e03 = starttime; //获取starttime 给予_0x2f4e03 var _0x17071c = abcdu(new Date(_0x2f4e03["replace"](new RegExp("-", "gm"), "/"))); //转换时间戳通过abcdu处理 给予_0x17071c var _0x12e25a = _0x17071c + ""; if (_0x17071c % 10 > 0) _0x12e25a = _0x12e25a["split"]("")["reverse"]()["join"](""); //_0x17071c%10>0 处理 var _0x24bc24 = parseInt(_0x12e25a + "89123"); //时间戳 1650522320+89123 结果:165052232089123 var _0x307a46 = (_0x24bc24 + "" + (_0x37348b + ""))["split"](""); //分隔上面 var _0xd36323 = abcd4(_0x307a46, "kgESOLJUbB2fCteoQdYmXvF8j9IZs3K0i6w75VcDnG14WAyaxNqPuRlpTHMrhz"); //abcd4处理_0x307a46 var _0xc23193 = _0x24bc24 + _0x37348b + parseInt(activityId); //值得一提activityId打开页面的时候就处理了 jqParam = abcd3(_0xc23193, _0xd36323); var _0x16feb7 = abcd5(jqParam); jqParam = _0x16feb7; return jqParam;}var rndnum = "607374188.44535993";var starttime = "2022/4/21 14:25:20";var activityId = "129722188";console.log(_0x156205(rndnum, starttime, activityId))
至于post的参数,应该都能看懂
到此所有参数分析完毕,如有遗漏或不解,可以回帖问我
标签:
问卷星(答题)协议全参数分析
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“问卷星(答题)协议全参数分析”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
2024年12月24日
2024年12月24日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]