试图从网站源代码中了解 javascript 中的此功能
Trying to understand this function in javascript from a website sourcecode
好吧,我正在做这个兵棋推演挑战,我对 HTML 和 JS 几乎一无所知。
我在源代码中找到了这个函数
"your flag is:"
然后是一堆乱码。我认为这个函数应该在这个长字符串中有意义,但我无法理解它应该如何执行或如何独立执行此函数(如果需要的话)。我知道这不应该真的很难。
这是函数:
function r(){for(var r=0,e=0,a="",l=0;l<n.length;l++)if(n[l].toLowerCase()!=n[l]&&(r+=1),8==++e){if(!t)return;a+=String.fromCharCode(r),r=0,e=0}else r<<=1;return a}var e=!1,t=!1,a=setInterval(function(){e&&(t=!0,alert("Your flag is: "+r()),clearInterval(a));t=!1},1e3),n="xVJvyNQdcLEqIUwenRNdnawBhSNqcVABvERRGlQOiVKlnlwJdINtSRfrxZJnYDsntIzKBOFQzMTBXioIbKGkDJZYoTFWqCzSbWIKsvPxlHaPHEVRiTIiltXqtKEjwzkDkGHEbnMPnFNrnWyLcOlBOVSWtOZxmjdIhRFXugEotQRmyHwZpGnKSDSRaZCrniYgcQVkiFaIgFScWAevgWDkQZALgSWwQDFkkDWlaYOKkDcRGUNSxJlLlRnnfROzNFGSrNcEECFDxZEVeAeVwSEQvxMOxBRGLKlS";
and this is the whole web page:
请帮帮我自己:)
您查看的js代码是minified/compressed代码
这意味着实际代码是通过将所有真实变量名替换为 (a, b, c,...) 来转换的,这使得其他人难以复制并在网站上更快地加载它。
展开缩小后的函数如下所示...
function r() {
for (var r = 0, e = 0, a = '', l = 0; l < n.length; l++) if (n[l].toLowerCase() != n[l] && (r += 1), 8 == ++e) {
if (!t) return;
a += String.fromCharCode(r),
r = 0,
e = 0
} else r <<= 1;
return a
}
var e = !1,
t = !1,
a = setInterval(function () {
e && (t = !0, alert('Your flag is: ' + r()), clearInterval(a));
t = !1
}, 1000),
n = 'xVJvyNQdcLEqIUwen...etc...';
虽然缩小后的代码加载速度更快,但这仍然显示了在开发我们自己的应用程序时为变量和函数提供有用的描述性名称的实用性。
好吧,我正在做这个兵棋推演挑战,我对 HTML 和 JS 几乎一无所知。 我在源代码中找到了这个函数
"your flag is:"
然后是一堆乱码。我认为这个函数应该在这个长字符串中有意义,但我无法理解它应该如何执行或如何独立执行此函数(如果需要的话)。我知道这不应该真的很难。
这是函数:
function r(){for(var r=0,e=0,a="",l=0;l<n.length;l++)if(n[l].toLowerCase()!=n[l]&&(r+=1),8==++e){if(!t)return;a+=String.fromCharCode(r),r=0,e=0}else r<<=1;return a}var e=!1,t=!1,a=setInterval(function(){e&&(t=!0,alert("Your flag is: "+r()),clearInterval(a));t=!1},1e3),n="xVJvyNQdcLEqIUwenRNdnawBhSNqcVABvERRGlQOiVKlnlwJdINtSRfrxZJnYDsntIzKBOFQzMTBXioIbKGkDJZYoTFWqCzSbWIKsvPxlHaPHEVRiTIiltXqtKEjwzkDkGHEbnMPnFNrnWyLcOlBOVSWtOZxmjdIhRFXugEotQRmyHwZpGnKSDSRaZCrniYgcQVkiFaIgFScWAevgWDkQZALgSWwQDFkkDWlaYOKkDcRGUNSxJlLlRnnfROzNFGSrNcEECFDxZEVeAeVwSEQvxMOxBRGLKlS";
and this is the whole web page:
请帮帮我自己:)
您查看的js代码是minified/compressed代码 这意味着实际代码是通过将所有真实变量名替换为 (a, b, c,...) 来转换的,这使得其他人难以复制并在网站上更快地加载它。
展开缩小后的函数如下所示...
function r() {
for (var r = 0, e = 0, a = '', l = 0; l < n.length; l++) if (n[l].toLowerCase() != n[l] && (r += 1), 8 == ++e) {
if (!t) return;
a += String.fromCharCode(r),
r = 0,
e = 0
} else r <<= 1;
return a
}
var e = !1,
t = !1,
a = setInterval(function () {
e && (t = !0, alert('Your flag is: ' + r()), clearInterval(a));
t = !1
}, 1000),
n = 'xVJvyNQdcLEqIUwen...etc...';
虽然缩小后的代码加载速度更快,但这仍然显示了在开发我们自己的应用程序时为变量和函数提供有用的描述性名称的实用性。