JS逆向入门篇2-根据点击事件扣代码

网站:https://www.appmiu.com/key/

遇见的难题

image

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

image

补充 格式化代码

image

观察代码 开始扣代码

image

最终代码

点击查看代码
<!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)
## 修改js代码 首先py代码中有get_enc这个函数,我们需要用py传值,js接受值,所以需要js定义一个get_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文件的绝对路径
image

posted @ 2022-09-02 22:59  学习中ingg  阅读(342)  评论(0)    收藏  举报