diff --git a/lost-seeds/description.md b/lost-seeds/description.md new file mode 100644 index 0000000..7065e1c --- /dev/null +++ b/lost-seeds/description.md @@ -0,0 +1 @@ +Every time I encrypt a flag with [this program](${encrypt}), it gives me [something different](${flag_out}). \ No newline at end of file diff --git a/lost-seeds/encrypt b/lost-seeds/encrypt new file mode 100755 index 0000000..08ff29e Binary files /dev/null and b/lost-seeds/encrypt differ diff --git a/lost-seeds/encrypt.c b/lost-seeds/encrypt.c new file mode 100644 index 0000000..93ae825 --- /dev/null +++ b/lost-seeds/encrypt.c @@ -0,0 +1,37 @@ +#include +#include +#include + +#define RAND_MAX ((1U << 31) - 1) +#define MAXLENGTH 80 + +int realrand() { + int n; + FILE *fp = fopen("/dev/urandom", "r"); + fread(&n, 4, 1, fp); + fclose(fp); + return n % MAXLENGTH; +} + +int seed; + +int pseudorand() { + return seed = (seed * 19394489 + 132241) & 0xff; +} + +int main() { + char input[MAXLENGTH]; + FILE *fp = fopen("flag.in", "r"); + fread(&input, 1, MAXLENGTH, fp); + fclose(fp); + + fp = fopen("flag.out", "wb"); + seed = realrand(); + int r; + char c; + for (int i = 0, l = strlen(input); i < l; ++i) { + c = ((char) input[i] ^ (r = pseudorand())) & 0xff; + fwrite(&c, 1, 1, fp); + } + fclose(fp); +} diff --git a/lost-seeds/flag.in b/lost-seeds/flag.in new file mode 100644 index 0000000..39616f5 --- /dev/null +++ b/lost-seeds/flag.in @@ -0,0 +1 @@ +easyctf{r3ndom_numb3rs_m3an_n0thing_wh3n_y0u_can_brute_force!} diff --git a/lost-seeds/flag.out b/lost-seeds/flag.out new file mode 100644 index 0000000..3065eeb --- /dev/null +++ b/lost-seeds/flag.out @@ -0,0 +1 @@ +·2ÿÄEsÆJˆZA!‚÷WN¾¾¤¯lyjêªðìK±Ïs¿Å¢ä°±ì‰W¡XbÏÇ…ÙGð"2 \ No newline at end of file diff --git a/lost-seeds/grader.py b/lost-seeds/grader.py new file mode 100644 index 0000000..ec86113 --- /dev/null +++ b/lost-seeds/grader.py @@ -0,0 +1,4 @@ +def grade(autogen, answer): + if answer.find("r3ndom_numb3rs_m3an_n0thing_wh3n_y0u_can_brute_force!") != -1: + return True, "Correct!" + return False, "Nope, try again." diff --git a/lost-seeds/problem.yml b/lost-seeds/problem.yml new file mode 100644 index 0000000..31e527d --- /dev/null +++ b/lost-seeds/problem.yml @@ -0,0 +1,10 @@ +title: Lost Seed +author: mzhang +category: Cryptography +autogen: false +programming: false +value: 150 +files: + - encrypt + - flag.out + \ No newline at end of file