This task is really very simple one. We are provided with .NET application named: "BabbySay.exe", wchich is a simple app that spawns a piano window for us. We can play some tunes by clicking black and white keys. I've started by its decompilation with "ILSpy", which is nice tool to do that . After quick examination in ILSpy we can clearly see the function responsible for printing the flag for us, without any doubt has to be: key_click(object, EventArgs):
// BabbySay.Form1
public void key_click(object sender, EventArgs args)
{
KeyButton keyButton = sender as KeyButton;
keyButton.player.Play();
if (keyButton.number == 16 && keyButton.is_black && this.dat_state == 0)
{
this.dat_state = 1;
this.thangs[3] = " _|| || | |_ ___ `. | || | _ | || | \\_ `. " + this.thangs[3];
this.thangs[10] = this.thangs[10] + " '----------------' '----------------' '----------------' '";
this.thangs[5] = "| | || | | | | | | || | | | | || | > > " + this.thangs[5];
this.thangs[7] = " | || | |________.' | || | |_| | || | /__.' " + this.thangs[7];
this.thangs[9] = "---' || '--------------' || '--------------' || '-------------" + this.thangs[9];
this.thangs[0] = this.thangs[0] + " .----------------. .----------------. .-----------------. .";
this.thangs[2] = this.thangs[2] + "| | ______ | || | __ | || | ____ _____ | || ";
this.thangs[1] = "---. || .--------------. || .--------------. || .-------------" + this.thangs[1];
this.thangs[8] = this.thangs[8] + "| | | || | | || | | || ";
this.thangs[4] = this.thangs[4] + "| | | |__) | | || | / /\\ \\ | || | | \\ | | | || ";
this.thangs[6] = this.thangs[6] + "| | _| |_ | || | _/ / \\ \\_ | || | _| |_\\ |_ | || ";
return;
}
if (keyButton.number == 24 && !keyButton.is_black && this.dat_state == 1)
{
this.thangs[6] = this.thangs[6] + "| | |_ | || | _| |__) | | || | _| |_ | || | ";
this.thangs[10] = this.thangs[10] + "----------------' '----------------' '----------------' '--";
this.thangs[1] = "-----. || .--------------. || .--------------. || .-----------" + this.thangs[1];
this.thangs[4] = this.thangs[4] + "| | | | || | | |_) | | || | | |__| |_ | || | ";
this.thangs[9] = "-----' || '--------------' || '--------------' || '-----------" + this.thangs[9];
this.thangs[7] = "_ | || | |________| | || | `.____.' | || | `.__.' " + this.thangs[7];
this.thangs[3] = " | || | |_ _| | || | .' `. | || ||_ _||_ " + this.thangs[3];
this.thangs[0] = this.thangs[0] + "----------------. .----------------. .----------------. .--";
this.thangs[5] = " | || | | | _ | || | | | | | | || | | ' ' " + this.thangs[5];
this.thangs[2] = this.thangs[2] + "| __ | || | ______ | || | _ _ | || | ";
this.thangs[8] = this.thangs[8] + "| | || | | || | | || | ";
this.dat_state = 2;
return;
}
if (keyButton.number == 25 && !keyButton.is_black && this.dat_state == 2)
{
this.thangs[4] = this.thangs[4] + " | |_) | | || | | |_) | | || | \\ \\ / / | || | ";
this.thangs[2] = this.thangs[2] + " ______ | || | ______ | || | ____ ____ | || | ";
this.thangs[3] = " | || | | _____| | || | .' '. | || | " + this.thangs[3];
this.thangs[9] = "-------' || '--------------' || '--------------' || '---------" + this.thangs[9];
this.thangs[8] = this.thangs[8] + " | || | | || | | || | |";
this.thangs[0] = this.thangs[0] + "--------------. .----------------. .----------------. .----";
this.thangs[1] = "-------. || .--------------. || .--------------. || .---------" + this.thangs[1];
this.thangs[6] = this.thangs[6] + " _| |__) | | || | _| |__) | | || | _| |_ | || | ";
this.thangs[7] = "___ | || | \\______.' | || | '.____.' | || | ______" + this.thangs[7];
this.thangs[10] = this.thangs[10] + "--------------' '----------------' '----------------' '----";
this.thangs[5] = " | || | '_.____''. | || | | | | | | || | " + this.thangs[5];
this.dat_state = 3;
return;
}
if (keyButton.number == 21 && !keyButton.is_black && this.dat_state == 3)
{
this.thangs[2] = this.thangs[2] + " | || | ____ ____ | || | ______ | || | __";
this.thangs[9] = "---------' || '--------------' || '--------------' || '-------" + this.thangs[9];
this.thangs[3] = " _| | || | |_ _| | || | | _____| | || | " + this.thangs[3];
this.thangs[8] = this.thangs[8] + "_______| | || | | || | | || | ";
this.thangs[10] = this.thangs[10] + "------------' '----------------' '----------------' '------";
this.thangs[7] = "______| | || | |________| | || | \\______.' | || | ____" + this.thangs[7];
this.thangs[0] = this.thangs[0] + "------------. .----------------. .----------------. .------";
this.thangs[5] = " | _ | || | | | _ | || | '_.____''. | || | " + this.thangs[5];
this.thangs[4] = this.thangs[4] + " | || | \\ \\ / / | || | `' __) | | || | |";
this.thangs[1] = "---------. || .--------------. || .--------------. || .-------" + this.thangs[1];
this.thangs[6] = this.thangs[6] + " | || | _| |_ | || | | \\____) | | || | _|";
this.dat_state = 4;
return;
}
if (keyButton.number == 16 && keyButton.is_black && this.dat_state == 4)
{
this.thangs[7] = "_______ | || | |______| | || | \\______.' | || | |__" + this.thangs[7];
this.thangs[5] = " | || | \\ \\/ / | || | _ |__ '. | || | |" + this.thangs[5];
this.thangs[6] = this.thangs[6] + " |__/ | | || | _| |__/ | | || | | \\____) | | || | ";
this.thangs[4] = this.thangs[4] + " | | || | | | | || | | |____ | || | ";
this.thangs[2] = this.thangs[2] + "___ | || | _____ | || | _______ | || | ";
this.thangs[10] = this.thangs[10] + "----------' '----------------' '----------------' '--------";
this.thangs[8] = this.thangs[8] + " | || | | || | | || | |____";
this.thangs[3] = " | || | |_ _||_ _| | || | / ____ `. | || | |_ " + this.thangs[3];
this.thangs[1] = "-----------. || .--------------. || .--------------. || .-----" + this.thangs[1];
this.thangs[9] = "-----------' || '--------------' || '--------------' || '-----" + this.thangs[9];
this.thangs[0] = this.thangs[0] + "----------. .----------------. .----------------. .--------";
this.dat_state = 5;
return;
}
if (keyButton.number == 24 && !keyButton.is_black && this.dat_state == 5)
{
this.thangs[1] = "-------------. || .--------------. || .--------------. || .---" + this.thangs[1];
this.thangs[8] = this.thangs[8] + "___| | || | | || | | || | |______";
this.thangs[7] = " |_______/ | || | |_______/ | || | |______| | || | " + this.thangs[7];
this.thangs[9] = "-------------' || '--------------' || '--------------' || '---" + this.thangs[9];
this.thangs[3] = " |_ _ \\ | || | |_ _ \\ | || | |_ _||_ _| | || | " + this.thangs[3];
this.thangs[10] = this.thangs[10] + "--------' '----------------' '----------------' '----------";
this.thangs[2] = this.thangs[2] + " | || | _______ | || | ____ | || | ";
this.thangs[5] = " | __'. | || | | __'. | || | \\ \\/ / | || | " + this.thangs[5];
this.thangs[6] = this.thangs[6] + " | || | | \\____) | | || | | `--' | | || | ";
this.thangs[4] = this.thangs[4] + " | || | | |____ | || | | .--. | | || | ";
this.thangs[0] = this.thangs[0] + "--------. .----------------. .----------------. .----------";
this.dat_state = 6;
return;
}
if (keyButton.number == 25 && !keyButton.is_black && this.dat_state == 6)
{
this.thangs[6] = this.thangs[6] + " | || | _| |__/ | | || | \\ `--' / | || | \\ `--' /";
this.thangs[3] = "| .' _/ | || | |_ _ \\ | || | | | | | | || | " + this.thangs[3];
this.thangs[2] = this.thangs[2] + " | || | _____ | || | ____ | || | _____ ___";
this.thangs[5] = "| < < | || | | __'. | || | |____ _| | || | " + this.thangs[5];
this.thangs[10] = this.thangs[10] + "------' '----------------' '----------------' '------------";
this.thangs[8] = this.thangs[8] + "_| | || | | || | | || | ";
this.thangs[1] = ".--------------. || .--------------. || .--------------. || .-" + this.thangs[1];
this.thangs[9] = "'--------------' || '--------------' || '--------------' || '-" + this.thangs[9];
this.thangs[4] = this.thangs[4] + " | || | | | | || | / .--. \\ | || | | | | ";
this.thangs[7] = "| `.__\\ | || | |_______/ | || | |_____| | || | " + this.thangs[7];
this.thangs[0] = this.thangs[0] + "------. .----------------. .----------------. .------------";
this.dat_state = 7;
return;
}
if (keyButton.number == 21 && !keyButton.is_black && this.dat_state == 7)
{
this.thangs[10] = this.thangs[10] + "----' '----------------' '----------------' '--------------";
this.thangs[4] = this.thangs[4] + "| | || | | | `. \\ | || | | | | || | | | ";
this.thangs[3] = "| | |_ __ \\ | || | / \\ | || ||_ \\|_ _| | || " + this.thangs[3];
this.thangs[2] = this.thangs[2] + "__ | || | ________ | || | | || | __ ";
this.thangs[0] = this.thangs[0] + "----. .----------------. .----------------. .--------------";
this.thangs[6] = this.thangs[6] + " | || | _| |___.' / | || | | | | || | _| | ";
this.thangs[9] = "| '--------------' || '--------------' || '--------------' || " + this.thangs[9];
this.thangs[5] = "| | | ___/ | || | / ____ \\ | || | | |\\ \\| | | || " + this.thangs[5];
this.thangs[8] = this.thangs[8] + " | || | | || | (_) | || | ";
this.thangs[7] = "| | |_____| | || ||____| |____|| || ||_____|\\____| | || " + this.thangs[7];
this.thangs[1] = "| .--------------. || .--------------. || .--------------. || " + this.thangs[1];
this.do_a_thing();
this.dat_state = 0;
return;
}
this.dat_state = 0;
for (int i = 0; i < 11; i++)
{
this.thangs[i] = "";
}
}
It's clearly visible that it'll be kind of ASCII art or something. I've just copy-pasted this code to my editor, cleaned it a little bit and compiled this using g++:
#include <"stdio.h">
#include <string>
#include <iostream>
using namespace std;
struct a_thing
{
public:
string thangs[11];
};
int main(void)
{
a_thing kb2000;
for (int i = 0; i < 10; i++) kb2000.thangs[i] = "";
kb2000.thangs[3] = " _|| || | |_ ___ `. | || | _ | || | \\_ `. " + kb2000.thangs[3];
kb2000.thangs[10] = kb2000.thangs[10] + " '----------------' '----------------' '----------------' '";
kb2000.thangs[5] = "| | || | | | | | | || | | | | || | > > " + kb2000.thangs[5];
kb2000.thangs[7] = " | || | |________.' | || | |_| | || | /__.' " + kb2000.thangs[7];
kb2000.thangs[9] = "---' || '--------------' || '--------------' || '-------------" + kb2000.thangs[9];
kb2000.thangs[0] = kb2000.thangs[0] + " .----------------. .----------------. .-----------------. .";
kb2000.thangs[2] = kb2000.thangs[2] + "| | ______ | || | __ | || | ____ _____ | || ";
kb2000.thangs[1] = "---. || .--------------. || .--------------. || .-------------" + kb2000.thangs[1];
kb2000.thangs[8] = kb2000.thangs[8] + "| | | || | | || | | || ";
kb2000.thangs[4] = kb2000.thangs[4] + "| | | |__) | | || | / /\\ \\ | || | | \\ | | | || ";
kb2000.thangs[6] = kb2000.thangs[6] + "| | _| |_ | || | _/ / \\ \\_ | || | _| |_\\ |_ | || ";
kb2000.thangs[6] = kb2000.thangs[6] + "| | |_ | || | _| |__) | | || | _| |_ | || | ";
kb2000.thangs[10] = kb2000.thangs[10] + "----------------' '----------------' '----------------' '--";
kb2000.thangs[1] = "-----. || .--------------. || .--------------. || .-----------" + kb2000.thangs[1];
kb2000.thangs[4] = kb2000.thangs[4] + "| | | | || | | |_) | | || | | |__| |_ | || | ";
kb2000.thangs[9] = "-----' || '--------------' || '--------------' || '-----------" + kb2000.thangs[9];
kb2000.thangs[7] = "_ | || | |________| | || | `.____.' | || | `.__.' " + kb2000.thangs[7];
kb2000.thangs[3] = " | || | |_ _| | || | .' `. | || ||_ _||_ " + kb2000.thangs[3];
kb2000.thangs[0] = kb2000.thangs[0] + "----------------. .----------------. .----------------. .--";
kb2000.thangs[5] = " | || | | | _ | || | | | | | | || | | ' ' " + kb2000.thangs[5];
kb2000.thangs[2] = kb2000.thangs[2] + "| __ | || | ______ | || | _ _ | || | ";
kb2000.thangs[8] = kb2000.thangs[8] + "| | || | | || | | || | ";
kb2000.thangs[4] = kb2000.thangs[4] + " | |_) | | || | | |_) | | || | \\ \\ / / | || | ";
kb2000.thangs[2] = kb2000.thangs[2] + " ______ | || | ______ | || | ____ ____ | || | ";
kb2000.thangs[3] = " | || | | _____| | || | .' '. | || | " + kb2000.thangs[3];
kb2000.thangs[9] = "-------' || '--------------' || '--------------' || '---------" + kb2000.thangs[9];
kb2000.thangs[8] = kb2000.thangs[8] + " | || | | || | | || | |";
kb2000.thangs[0] = kb2000.thangs[0] + "--------------. .----------------. .----------------. .----";
kb2000.thangs[1] = "-------. || .--------------. || .--------------. || .---------" + kb2000.thangs[1];
kb2000.thangs[6] = kb2000.thangs[6] + " _| |__) | | || | _| |__) | | || | _| |_ | || | ";
kb2000.thangs[7] = "___ | || | \\______.' | || | '.____.' | || | ______" + kb2000.thangs[7];
kb2000.thangs[10] = kb2000.thangs[10] + "--------------' '----------------' '----------------' '----";
kb2000.thangs[5] = " | || | '_.____''. | || | | | | | | || | " + kb2000.thangs[5];
kb2000.thangs[2] = kb2000.thangs[2] + " | || | ____ ____ | || | ______ | || | __";
kb2000.thangs[9] = "---------' || '--------------' || '--------------' || '-------" + kb2000.thangs[9];
kb2000.thangs[3] = " _| | || | |_ _| | || | | _____| | || | " + kb2000.thangs[3];
kb2000.thangs[8] = kb2000.thangs[8] + "_______| | || | | || | | || | ";
kb2000.thangs[10] = kb2000.thangs[10] + "------------' '----------------' '----------------' '------";
kb2000.thangs[7] = "______| | || | |________| | || | \\______.' | || | ____" + kb2000.thangs[7];
kb2000.thangs[0] = kb2000.thangs[0] + "------------. .----------------. .----------------. .------";
kb2000.thangs[5] = " | _ | || | | | _ | || | '_.____''. | || | " + kb2000.thangs[5];
kb2000.thangs[4] = kb2000.thangs[4] + " | || | \\ \\ / / | || | `' __) | | || | |";
kb2000.thangs[1] = "---------. || .--------------. || .--------------. || .-------" + kb2000.thangs[1];
kb2000.thangs[6] = kb2000.thangs[6] + " | || | _| |_ | || | | \\____) | | || | _|";
kb2000.thangs[7] = "_______ | || | |______| | || | \\______.' | || | |__" + kb2000.thangs[7];
kb2000.thangs[5] = " | || | \\ \\/ / | || | _ |__ '. | || | |" + kb2000.thangs[5];
kb2000.thangs[6] = kb2000.thangs[6] + " |__/ | | || | _| |__/ | | || | | \\____) | | || | ";
kb2000.thangs[4] = kb2000.thangs[4] + " | | || | | | | || | | |____ | || | ";
kb2000.thangs[2] = kb2000.thangs[2] + "___ | || | _____ | || | _______ | || | ";
kb2000.thangs[10] = kb2000.thangs[10] + "----------' '----------------' '----------------' '--------";
kb2000.thangs[8] = kb2000.thangs[8] + " | || | | || | | || | |____";
kb2000.thangs[3] = " | || | |_ _||_ _| | || | / ____ `. | || | |_ " + kb2000.thangs[3];
kb2000.thangs[1] = "-----------. || .--------------. || .--------------. || .-----" + kb2000.thangs[1];
kb2000.thangs[9] = "-----------' || '--------------' || '--------------' || '-----" + kb2000.thangs[9];
kb2000.thangs[0] = kb2000.thangs[0] + "----------. .----------------. .----------------. .--------";
kb2000.thangs[1] = "-------------. || .--------------. || .--------------. || .---" + kb2000.thangs[1];
kb2000.thangs[8] = kb2000.thangs[8] + "___| | || | | || | | || | |______";
kb2000.thangs[7] = " |_______/ | || | |_______/ | || | |______| | || | " + kb2000.thangs[7];
kb2000.thangs[9] = "-------------' || '--------------' || '--------------' || '---" + kb2000.thangs[9];
kb2000.thangs[3] = " |_ _ \\ | || | |_ _ \\ | || | |_ _||_ _| | || | " + kb2000.thangs[3];
kb2000.thangs[10] = kb2000.thangs[10] + "--------' '----------------' '----------------' '----------";
kb2000.thangs[2] = kb2000.thangs[2] + " | || | _______ | || | ____ | || | ";
kb2000.thangs[5] = " | __'. | || | | __'. | || | \\ \\/ / | || | " + kb2000.thangs[5];
kb2000.thangs[6] = kb2000.thangs[6] + " | || | | \\____) | | || | | `--' | | || | ";
kb2000.thangs[4] = kb2000.thangs[4] + " | || | | |____ | || | | .--. | | || | ";
kb2000.thangs[0] = kb2000.thangs[0] + "--------. .----------------. .----------------. .----------";
kb2000.thangs[6] = kb2000.thangs[6] + " | || | _| |__/ | | || | \\ `--' / | || | \\ `--' /";
kb2000.thangs[3] = "| .' _/ | || | |_ _ \\ | || | | | | | | || | " + kb2000.thangs[3];
kb2000.thangs[2] = kb2000.thangs[2] + " | || | _____ | || | ____ | || | _____ ___";
kb2000.thangs[5] = "| < < | || | | __'. | || | |____ _| | || | " + kb2000.thangs[5];
kb2000.thangs[10] = kb2000.thangs[10] + "------' '----------------' '----------------' '------------";
kb2000.thangs[8] = kb2000.thangs[8] + "_| | || | | || | | || | ";
kb2000.thangs[1] = ".--------------. || .--------------. || .--------------. || .-" + kb2000.thangs[1];
kb2000.thangs[9] = "'--------------' || '--------------' || '--------------' || '-" + kb2000.thangs[9];
kb2000.thangs[4] = kb2000.thangs[4] + " | || | | | | || | / .--. \\ | || | | | | ";
kb2000.thangs[7] = "| `.__\\ | || | |_______/ | || | |_____| | || | " + kb2000.thangs[7];
kb2000.thangs[0] = kb2000.thangs[0] + "------. .----------------. .----------------. .------------";
kb2000.thangs[10] = kb2000.thangs[10] + "----' '----------------' '----------------' '--------------";
kb2000.thangs[4] = kb2000.thangs[4] + "| | || | | | `. \\ | || | | | | || | | | ";
kb2000.thangs[3] = "| | |_ __ \\ | || | / \\ | || ||_ \\|_ _| | || " + kb2000.thangs[3];
kb2000.thangs[2] = kb2000.thangs[2] + "__ | || | ________ | || | | || | __ ";
kb2000.thangs[0] = kb2000.thangs[0] + "----. .----------------. .----------------. .--------------";
kb2000.thangs[6] = kb2000.thangs[6] + " | || | _| |___.' / | || | | | | || | _| | ";
kb2000.thangs[9] = "| '--------------' || '--------------' || '--------------' || " + kb2000.thangs[9];
kb2000.thangs[5] = "| | | ___/ | || | / ____ \\ | || | | |\\ \\| | | || " + kb2000.thangs[5];
kb2000.thangs[8] = kb2000.thangs[8] + " | || | | || | (_) | || | ";
kb2000.thangs[7] = "| | |_____| | || ||____| |____|| || ||_____|\\____| | || " + kb2000.thangs[7];
kb2000.thangs[1] = "| .--------------. || .--------------. || .--------------. || " + kb2000.thangs[1];
for (int i = 0; i < 10; i++)
{
cout << kb2000.thangs[i] << endl;
}
return 0;
}
This program will simply print out the flag for us in ASCII art. I needed to change font size in my console to 4 to see it.
As You can figure out from the code, there's also another way of obtaining that flag. Just simply click appropiate sequence of keys on the keyboard - it's (17th B, 25th W, 26th W and 22nd W)x2, where B means black, and W means white key on the keyboard. If You obtain flag in such way, you'll be also rewarded with nice video (Bowie inlcuded).
Link to BabbySay: BabbySay.7z
Comments
Post a Comment