JS逆向入门篇2-根据点击事件扣代码
网站:https://www.appmiu.com/key/
遇见的难题

这里直接点击事件加密,事件监听器是没反应的

补充 格式化代码

观察代码 开始扣代码

最终代码
点击查看代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//网站 : https://www.appmiu.com/key/
var h = "富强民主文明和谐自由平等公正法治爱国敬业诚信友善"
o = function(t) {
var n = /[A-Za-z0-9\-\_\.\!\~\*\'\(\)]/g,
r = t.replace(n, function(t) {
return t.codePointAt(0).toString(16)
});
return encodeURIComponent(r).replace(/%/g, "").toUpperCase()
}
c = function(t) {
e("string" == typeof t);
var n = [],
r = !0,
o = !1,
u = void 0;
try {
for (var c, f = t[Symbol.iterator](); !(r = (c = f.next()).done); r = !0) {
var a = c.value,
s = Number.parseInt(a, 16);
s < 10 ? n.push(s) : i() ? (n.push(10),
n.push(s - 10)) : (n.push(11),
n.push(s - 6))
}
} catch (t) {
o = !0,
u = t
} finally {
try {
!r && f.return && f.return()
} finally {
if (o)
throw u
}
}
return n
}
a = function(t) {
return t.map(function(t) {
return h[2 * t] + h[2 * t + 1]
}).join("")
}
l = function(t) {
return a(c(o(t)))
}
var e = function() {
for (var t = arguments.length, n = Array(t), r = 0; r < t; r++)
n[r] = arguments[r];
var e = n.length
, i = "string" == typeof n[e - 1] ? n[e - 1] : "Assert Error"
, o = !0
, u = !1
, c = void 0;
try {
for (var f, a = n[Symbol.iterator](); !(o = (f = a.next()).done); o = !0) {
if (!f.value)
throw new Error(i)
}
} catch (t) {
u = !0,
c = t
} finally {
try {
!o && a.return && a.return()
} finally {
if (u)
throw c
}
}
}
console.log(l('12')); //和谐民主和谐文明
// function get_enc(args){
// return l(arg);
// }
</script>
</body>
</html>
python调用js代码
需要安装nodejs py安装execjs库
以下为python调用的模板
点击查看代码
import execjs
with open("test.js","r",encoding='utf-8') as f: //test.js是你js的名字
ctx = execjs.compile(f.read())
enc = ctx.call("get_enc",'123456')
print(enc)
这里注意下函数return中需要调用l(arg)这个函数,arg是py传入的

以下是js的最终代码
点击查看代码
var h = "富强民主文明和谐自由平等公正法治爱国敬业诚信友善"
o = function(t) {
var n = /[A-Za-z0-9\-\_\.\!\~\*\'\(\)]/g,
r = t.replace(n, function(t) {
return t.codePointAt(0).toString(16)
});
return encodeURIComponent(r).replace(/%/g, "").toUpperCase()
}
c = function(t) {
e("string" == typeof t);
var n = [],
r = !0,
o = !1,
u = void 0;
try {
for (var c, f = t[Symbol.iterator](); !(r = (c = f.next()).done); r = !0) {
var a = c.value,
s = Number.parseInt(a, 16);
s < 10 ? n.push(s) : i() ? (n.push(10),
n.push(s - 10)) : (n.push(11),
n.push(s - 6))
}
} catch (t) {
o = !0,
u = t
} finally {
try {
!r && f.return && f.return()
} finally {
if (o)
throw u
}
}
return n
}
a = function(t) {
return t.map(function(t) {
return h[2 * t] + h[2 * t + 1]
}).join("")
}
l = function(t) {
return a(c(o(t)))
}
var e = function() {
for (var t = arguments.length, n = Array(t), r = 0; r < t; r++)
n[r] = arguments[r];
var e = n.length
, i = "string" == typeof n[e - 1] ? n[e - 1] : "Assert Error"
, o = !0
, u = !1
, c = void 0;
try {
for (var f, a = n[Symbol.iterator](); !(o = (f = a.next()).done); o = !0) {
if (!f.value)
throw new Error(i)
}
} catch (t) {
u = !0,
c = t
} finally {
try {
!o && a.return && a.return()
} finally {
if (u)
throw c
}
}
}
//console.log(l('12')); //和谐民主和谐文明
function get_enc(args){
return l(arg);
}
python调用js结果
注意需要把python和js代码放在一个文件夹
要不py调用时就写js文件的绝对路径


浙公网安备 33010602011771号