- 网站
aHR0cDovL2FlcmZheWluZy5jb20v - 加密参数
- 参数加密位置
方法:
1. 构造自执行函数
!function(e) {
// 加载器
}(
// 模块1;
// 模块2
)
2. 找到js的加载器
3. 把上述代码放入第一步构造的自执行函数(完整扣取一整个加载器里的代码),并用一个全局参数接收加载器,比如window.zzz = i;
自执行代码如下:
var window=global;
!function(e) {
function t(t) {
for (var r, i, l = t[0], s = t[1], u = t[2], f = 0, p = []; f < l.length; f++)
i = l[f],
Object.prototype.hasOwnProperty.call(o, i) && o[i] && p.push(o[i][0]),
o[i] = 0;
for (r in s)
Object.prototype.hasOwnProperty.call(s, r) && (e[r] = s[r]);
for (c && c(t); p.length; )
p.shift()();
return a.push.apply(a, u || []),
n()
}
function n() {
for (var e, t = 0; t < a.length; t++) {
for (var n = a[t], r = !0, l = 1; l < n.length; l++) {
var s = n[l];
0 !== o[s] && (r = !1)
}
r && (a.splice(t--, 1),
e = i(i.s = n[0]))
}
return e
}
var r = {}
, o = {
0: 0
}
, a = [];
function i(t) {
if (r[t])
return r[t].exports;
var n = r[t] = {
i: t,
l: !1,
exports: {}
};
return e[t].call(n.exports, n, n.exports, i),
n.l = !0,
n.exports
}
window.zzz = i; // 定义一个参数window.zzz接收加载器
;
var l = window.webpackJsonp = window.webpackJsonp || []
, s = l.push.bind(l);
l.push = t,
l = l.slice();
for (var u = 0; u < l.length; u++)
t(l[u]);
var c = s;
}({
// 模块1;
// 模块2
})
4. 把加密位置的代码扣取下来,放入自执行函数的模块里,然后定义一个模块名给,比如jsencrypt,自执行函数代码如下:
var window=global;
!function(e) {
function t(t) {
for (var r, i, l = t[0], s = t[1], u = t[2], f = 0, p = []; f < l.length; f++)
i = l[f],
Object.prototype.hasOwnProperty.call(o, i) && o[i] && p.push(o[i][0]),
o[i] = 0;
for (r in s)
Object.prototype.hasOwnProperty.call(s, r) && (e[r] = s[r]);
for (c && c(t); p.length; )
p.shift()();
return a.push.apply(a, u || []),
n()
}
function n() {
for (var e, t = 0; t < a.length; t++) {
for (var n = a[t], r = !0, l = 1; l < n.length; l++) {
var s = n[l];
0 !== o[s] && (r = !1)
}
r && (a.splice(t--, 1),
e = i(i.s = n[0]))
}
return e
}
var r = {}
, o = {
0: 0
}
, a = [];
function i(t) {
if (r[t])
return r[t].exports;
var n = r[t] = {
i: t,
l: !1,
exports: {}
};
return e[t].call(n.exports, n, n.exports, i),
n.l = !0,
n.exports
}
window.zzz = i; // 定义一个参数window.zzz接收加载器
;
var l = window.webpackJsonp = window.webpackJsonp || []
, s = l.push.bind(l);
l.push = t,
l = l.slice();
for (var u = 0; u < l.length; u++)
t(l[u]);
var c = s;
}(
{
// 模块名:jsencrypt
jsencrypt:function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
t.default = function(e, t) {
var n = (new Date).getTime() + 2592e6 + (t || 3e4)
, r = (e || "") + "&t=" + n;
return {
t: n,
s: Sha1.hash(r)
}
}
}},
)
5. 对上述代码new一下,然后执行jsencrypt方法,运行代码,发现报错
result = new window.zzz("jsencrypt").default()
console.log(result)
报错:
6. 然后去源码里扣取Sha1的代码
最后所有js代码如下:
var window=global;
function Sha1() {}
Sha1.hash = function(n, t) {
var w = Object.