破解按位密码

问题描述 投票:0回答:1
    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 的所有文档,但我无法理解它与此有什么关系。

如果有人知道,你需要如何解决这个问题?你会建议哪些书籍/文章来破解这些东西?

提前谢谢您

javascript encryption bitwise-operators bitwise-xor block-cipher
1个回答
0
投票

以相反的顺序进行相反的操作:

  • 反转所有位
  • 与 0xba 异或
  • 向右移动一次
这里是一个示例,您可以单击“反向计算”按钮,将输出复制到输入,然后使用“检查而不提交”来执行原始算法(不执行提交,这会触发导航)。

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>

© www.soinside.com 2019 - 2024. All rights reserved.