我正在解决一个二进制炸弹。在一个阶段中包含以下代码:
bool phase_bird(const char* guess)
{
char c;
c=blackBoxC();
appendChar(c);
mute(true);
c=blackBoxC();
appendChar(c);
c=blackBoxC();
appendChar(c);
mute(false);
c=blackBoxC();
appendChar(c);
c=blackBoxC();
appendChar(c);
mute(false);
c=blackBoxC();
appendChar(c);
c=blackBoxC();
appendChar(c|3);
c=blackBoxC();
appendChar(c|5);
c=blackBoxC();
appendChar(c|9);
return stringMatches(guess);
}
到目前为止我所知道的是:
blackBoxC()返回一个char
appendChar()将char附加到char数组,该数组将与用户输入进行比较
我目前知道blackBoxC()返回的字符是 yxFUOXizu ,只附加 yUOXkizv 。
我也知道,由于按位OR,最后三个字符从 izv 更改为 k ^?^?。
但,似乎只是输入 yUOXk ^?^?作为我的猜测。但猜测是不可能的,炸弹爆炸了。我没有意识到输入这些DEL char实际上会删除我的一些输入。
将其从 yUOXk ^?^?更改为 yUO
现在每个invaild猜测实际上都会让我感到松散,这是一个问题!我不知道他们用什么方法来比较char数组,但我假设它可能是strcmp()。
这意味着即使我要将我的输入更改为 yUOXkkk ^?^?,字符串的长度仍然不同。
如果有人对如何解决这个问题有任何意见,我很乐意听到它!
问候