var reverse_flag = [-63, -105, -103, -121, -95, -73, -39, -101, -83, -29, -125, -121, -95, -73, -225, -203, -213, -223, -213, -119];
function check_flag()
{
var i, flag = document.getElementById('flag').value;
if(flag.length != reverse_flag.length)
return false;
for(i=0;i<flag.length;i++)
{
var code = flag.charCodeAt(i);
code = code<<1;
code ^= 0xba;
code = ~code;
if(code != reverse_flag[i])
return false;
}
return true;
}
通过表格检查答案
<form method="post" id="form"><input type="password" id="flag" name="flag"><input type="submit" value="Check" onclick="return check_flag()"></form>
在我的大学中,我们最近开始了这个按位主题,作为第一个家庭任务,我们得到了前面提到的密码。我已经阅读了有关 Javascript Bitwise 的所有文档,但我无法理解它与此有什么关系。
如果有人知道,你需要如何解决这个问题?你会建议哪些书籍/文章来破解这些东西?
提前谢谢您
以相反的顺序进行相反的操作:
var reverse_flag = [-63, -105, -103, -121, -95, -73, -39, -101, -83, -29, -125, -121, -95, -73, -225, -203, -213, -223, -213, -119];
function check_flag()
{
var i, flag = document.getElementById('flag').value;
if(flag.length != reverse_flag.length)
{
console.log("false")
return false;
}
for(i=0;i<flag.length;i++)
{
var code = flag.charCodeAt(i);
code = code<<1;
code ^= 0xba;
code = ~code;
if(code != reverse_flag[i])
{
console.log("false")
return false;
}
}
console.log("true")
return true;
}
function reverse_computation()
{
let reverse_string = ""
for(i=0;i<reverse_flag.length;i++)
{
var code = reverse_flag[i];
code = ~code;
code ^= 0xba;
code = code>>1;
reverse_string += String.fromCharCode(code)
}
console.log(reverse_string)
}
<form method="post" id="form"><input type="password" id="flag" name="flag"><input type="submit" value="Check" onclick="return check_flag()"></form>
<button onclick="reverse_computation()">Reverse Computation</button>
<button onclick="check_flag()">Check without submit</button>