Add bomblab files
This commit is contained in:
parent
23705e632c
commit
b5b30bd594
|
@ -0,0 +1,3 @@
|
|||
This is bomb 13.
|
||||
|
||||
It belongs to 202026010209 (esnl@hnu.edu.cn)
|
Binary file not shown.
|
@ -0,0 +1,115 @@
|
|||
/***************************************************************************
|
||||
* Dr. Evil's Insidious Bomb, Version 1.1
|
||||
* Copyright 2011, Dr. Evil Incorporated. All rights reserved.
|
||||
*
|
||||
* LICENSE:
|
||||
*
|
||||
* Dr. Evil Incorporated (the PERPETRATOR) hereby grants you (the
|
||||
* VICTIM) explicit permission to use this bomb (the BOMB). This is a
|
||||
* time limited license, which expires on the death of the VICTIM.
|
||||
* The PERPETRATOR takes no responsibility for damage, frustration,
|
||||
* insanity, bug-eyes, carpal-tunnel syndrome, loss of sleep, or other
|
||||
* harm to the VICTIM. Unless the PERPETRATOR wants to take credit,
|
||||
* that is. The VICTIM may not distribute this bomb source code to
|
||||
* any enemies of the PERPETRATOR. No VICTIM may debug,
|
||||
* reverse-engineer, run "strings" on, decompile, decrypt, or use any
|
||||
* other technique to gain knowledge of and defuse the BOMB. BOMB
|
||||
* proof clothing may not be worn when handling this program. The
|
||||
* PERPETRATOR will not apologize for the PERPETRATOR's poor sense of
|
||||
* humor. This license is null and void where the BOMB is prohibited
|
||||
* by law.
|
||||
***************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "support.h"
|
||||
#include "phases.h"
|
||||
|
||||
/*
|
||||
* Note to self: Remember to erase this file so my victims will have no
|
||||
* idea what is going on, and so they will all blow up in a
|
||||
* spectaculary fiendish explosion. -- Dr. Evil
|
||||
*/
|
||||
|
||||
FILE *infile;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
char *input;
|
||||
|
||||
/* Note to self: remember to port this bomb to Windows and put a
|
||||
* fantastic GUI on it. */
|
||||
|
||||
/* When run with no arguments, the bomb reads its input lines
|
||||
* from standard input. */
|
||||
if (argc == 1) {
|
||||
infile = stdin;
|
||||
}
|
||||
|
||||
/* When run with one argument <file>, the bomb reads from <file>
|
||||
* until EOF, and then switches to standard input. Thus, as you
|
||||
* defuse each phase, you can add its defusing string to <file> and
|
||||
* avoid having to retype it. */
|
||||
else if (argc == 2) {
|
||||
if (!(infile = fopen(argv[1], "r"))) {
|
||||
printf("%s: Error: Couldn't open %s\n", argv[0], argv[1]);
|
||||
exit(8);
|
||||
}
|
||||
}
|
||||
|
||||
/* You can't call the bomb with more than 1 command line argument. */
|
||||
else {
|
||||
printf("Usage: %s [<input_file>]\n", argv[0]);
|
||||
exit(8);
|
||||
}
|
||||
|
||||
/* Do all sorts of secret stuff that makes the bomb harder to defuse. */
|
||||
initialize_bomb();
|
||||
|
||||
printf("Welcome to my fiendish little bomb. You have 6 phases with\n");
|
||||
printf("which to blow yourself up. Have a nice day!\n");
|
||||
|
||||
/* Hmm... Six phases must be more secure than one phase! */
|
||||
input = read_line(); /* Get input */
|
||||
phase_1(input); /* Run the phase */
|
||||
phase_defused(); /* Drat! They figured it out!
|
||||
* Let me know how they did it. */
|
||||
printf("Phase 1 defused. How about the next one?\n");
|
||||
|
||||
/* The second phase is harder. No one will ever figure out
|
||||
* how to defuse this... */
|
||||
input = read_line();
|
||||
phase_2(input);
|
||||
phase_defused();
|
||||
printf("That's number 2. Keep going!\n");
|
||||
|
||||
/* I guess this is too easy so far. Some more complex code will
|
||||
* confuse people. */
|
||||
input = read_line();
|
||||
phase_3(input);
|
||||
phase_defused();
|
||||
printf("Halfway there!\n");
|
||||
|
||||
/* Oh yeah? Well, how good is your math? Try on this saucy problem! */
|
||||
input = read_line();
|
||||
phase_4(input);
|
||||
phase_defused();
|
||||
printf("So you got that one. Try this one.\n");
|
||||
|
||||
/* Round and 'round in memory we go, where we stop, the bomb blows! */
|
||||
input = read_line();
|
||||
phase_5(input);
|
||||
phase_defused();
|
||||
printf("Good work! On to the next...\n");
|
||||
|
||||
/* This phase will never be used, since no one will get past the
|
||||
* earlier ones. But just in case, make this one extra hard. */
|
||||
input = read_line();
|
||||
phase_6(input);
|
||||
phase_defused();
|
||||
|
||||
/* Wow, they got it! But isn't something... missing? Perhaps
|
||||
* something they overlooked? Mua ha ha ha ha! */
|
||||
|
||||
return 0;
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue