gpt4 book ai didi

javascript - 了解复杂的 JavaScript 密码算法

转载 作者:行者123 更新时间:2023-12-02 17:03:13 25 4
gpt4 key购买 nike

这是一个 JavaScript 练习,我需要知道正确的密码是什么。你能明白吗?它让我发疯!

我需要将该值与某些生成的字节码进行比较吗?

我想当正确的密码猜到“Congratz!”时消息将会弹出。

<script type="text/javascript">
</script>
Password: <input /><br />
<button>Check</button>

<script id="urchin">

(function() {
var h = [
function() {alert("booo")},
function() {alert(":(")},
function() {alert("Congratz!")},
function() {alert("almost there")},
function() {alert("alert(b[a]);")},
function() {alert("nahh")},
function() {alert("not even close")}
]
var g = function(d) {
var a, f, e, g, k, b = [];
for(a = 0;256 > a;a++) {
b[a] = a
}
f = "click"
e = 0;
d = "input";
g = document[("getElementsByTagName")]("input")["0"][("value")];
for(a = 0;256 > a;a++) {
e = (e + b[a] + f.charCodeAt(a % f[("length")])) % 256, b[a] ^= b[e], b[e] ^= b[a], b[a] ^= b[e]
}
a = e = 0;
f = "";
for(k = a;k < g.length;k += 2) {
a = (a + 1) % 256
e = (e + b[a]) % 256
b[a] ^= b[e]
b[e] ^= b[a]
b[a] ^= b[e]



f += String[("fromCharCode")](parseInt(g[("substr")](k, 2), 16) ^ b[(b[a] + b[e]) % 256])
}
a = f["charCodeAt"](f[("charCodeAt")](0) % f.length) % 6;
f != d + 256 && 2 == a && a++;
h[a]()
}
var d = document[("getElementsByTagName")]("button")["0"];
typeof d.addEventListener != typeof g ? d.attachEvent("onclick", g) : d[("addEventListener")]("click", g, !0);

d = document[("getElementById")]("urchin");
d[("parentNode")].removeChild(d);
c = function() {}
})();
</script>

最佳答案

正确的密码是956918b1820bc657

crackme 本质上是 RC4。

以下代码初始化 RC4 key 表,使用 key click,将结果存储在 b 中:

var a, f, e, g, k, b = [];
for(a = 0;256 > a;a++) {
b[a] = a
}
f = "click"
e = 0;
d = "input";
g = document[("getElementsByTagName")]("input")["0"][("value")];
for(a = 0;256 > a;a++) {
e = (e + b[a] + f.charCodeAt(a % f[("length")])) % 256, b[a] ^= b[e], b[e] ^= b[a], b[a] ^= b[e]
}

在将输入从十六进制转换后,将结果存储在 f 中,然后使用 b 进行加密/解密:

a = e = 0;
f = "";
for(k = a;k < g.length;k += 2) {
a = (a + 1) % 256
e = (e + b[a]) % 256
b[a] ^= b[e]
b[e] ^= b[a]
b[a] ^= b[e]
f += String[("fromCharCode")](parseInt(g.substr(k, 2), 16) ^ b[(b[a] + b[e]) % 256])
}

最后将解密后的字符串与input256进行比较。 a 只是一个校验和。

要反转此过程,只需使用 rc4 加密 input256,然后将其转换为十六进制即可。

欢迎您将其发布到 crackmes.decrackmes.us,并注明其来源。

关于javascript - 了解复杂的 JavaScript 密码算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25499288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com