睿学在线studyRecord js逆向代码
本篇js逆向代码适用网站:ytetc.cep.webtrn.cn
加密方式:AES
密钥:learnspaceaes123
var CryptoJS = require("crypto-js");
function timeFormat(r, s) {
return (Array(s).join("0") + r).slice(-s)
}
function millisecondToTime(s) {
if (s !== null && !isNaN(s)) {
if (s > 0) {
var u = Math.floor((s / 1000) % 60);
var t = Math.floor((s / (1000 * 60)) % 60);
var r = Math.floor((s / (1000 * 60 * 60)));
return timeFormat(r, 2) + ":" + timeFormat(t, 2) + ":" + timeFormat(u, 2)
} else {
return "00:00:00"
}
}
}
function timeToSeconds(f) {
var b = f.split(":");
var d = parseInt(b[0]);
var a = parseInt(b[1]);
var c = parseInt(b[2]);
var e = d * 3600 + a * 60 + c;
return e
}
function formatStr(c, a) {
var l = "";
var k = (c + "").length;
if (k > 0) {
if (k + 2 > a) {
return c + ""
} else {
var g = a - k - 2;
var h = 1;
for (var e = 0; e < g; e++) {
h = h * 10
}
var b = parseInt(Math.random() * h);
var f = (b + "").length;
if (f < g) {
for (var d = f; d < g; d++) {
b = b * 10
}
}
if (k >= 10) {
l += k
} else {
l += "0" + k
}
l += c + (b + "")
}
} else {
return c + ""
}
return l
}
function getParams(r) {
var s_param = {
courseId: r.courseId,
itemId: r.itemId,
time1: formatStr((new Date()).getTime(), 20),
time2: formatStr(parseInt(r.startTime), 20),
time3: formatStr(timeToSeconds(r.videoTotalTime), 20),
time4: formatStr(parseInt(r.endTime), 20),
videoIndex: r.videoIndex || 0,
time5: formatStr(r.studyTimeLong, 20),
terminalType: r.terminalType || 0,
recordType: r.recordType
};
return s_param
}
function _encrypt(e) {
var c = "learnspaceaes123";
var f = CryptoJS.enc.Utf8.parse(c);
var d = CryptoJS.AES.encrypt(e, f, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return d.toString()
}
function get_studyRecord(z) {
z.studyTimeLong = z.endTime - z.startTime;
z.startTimeStr = millisecondToTime(z.startTime * 1000);
z.endTimeStr = millisecondToTime(z.endTime * 1000);
var v = getParams(z);
var studyRecord = _encrypt(JSON.stringify(v))
return studyRecord
};
function generate_param(videoTotalTime, itemId) {
let end_time = timeToSeconds(videoTotalTime)
let param = {
"async": false,
"courseId": "f9589c3abce74bdc901e9cb6d0863655___",
"endTime": end_time,
"endTimeStr": videoTotalTime,
"interval": false,
"itemId": itemId,
"playComplete": true,
"position": end_time,
"recordType": "playComplete",
"startTime": 0,
"startTimeStr": "00:00:00",
"studyTimeLong": end_time,
"videoTotalTime": videoTotalTime,
}
console.log(param)
return param
}
var all_time = "00:10:50" //视频总时长
var item_id = "8a838093838cb10e01838f25775b4b9e" //视频itemid
var lwd = generate_param(all_time, item_id)
console.log(get_studyRecord(lwd))
有时间再补充逆向分析全过程