- Author : Imanol Etxezarreta
- Purpose : Learn about cryptographics trying to solve different problems derived from weaknesses in real world and modern cryptographic constructions. Trying to do it implementing it in C.
- State of completion
- Usage instructions
- Challenge 1: Convert hex to base64
- Challenge 2: Fixed XOR
- Challenge 3: Single-byte XOR cipher
- Challenge 4: Detect single-character XOR
- Challenge 5: Implement repeating-key XOR
- Challenge 6: Break repeating-key XOR
- Challenge 7: AES in ECB mode
- Challenge 8: Detect AES in ECB mode
- Challenge 9: Implement PKCS#7 padding
- Challenge 10: Implement CBC mode
- Challenge 11: An ECB/CBC detection oracle
- Challenge 12: Byte-at-a-time ECB decryption (Simple)
- Challenge 13: ECB cut-and-paste
- Challenge 14: Byte-at-a-time ECB decryption (Harder)
- Challenge 15: PKCS#7 padding validation
- Challenge 16: CBC bitflipping attacks
- Challenge 17: The CBC padding oracle
- Challenge 18: Implement CTR, the stream cipher mode
- Challenge 19: Break fixed-nonce CTR mode using substitutions
- Challenge 20: Break fixed-nonce CTR statistically
- Challenge 21: Implement the MT19937 Mersenne Twister RNG
- Challenge 22: Crack an MT19937 seed
- Challenge 23: Clone an MT19937 RNG from its outputs
- Challenge 24: Create the MT 19937 stream cipher and break it
Currently only for linux systems
- cmake (>= 3.8)
- openssl1.1.1
- make
With the following commands, a new folder will be generated inside build/
folder named bin/
with all the challenge binaries. Every challenge has a prefix with the form "ch##" where ## is the challenge number. Adittionally, some challenges use some files that are in their respective developing folders, and post-build commands copy those files to build/bin/resources/
folder.
git clone https://github.com/Ima96/CryptoChallenges.git
cd CryptoChallenges
mkdir build && cd build
cmake ..
make