No description
- C 94.8%
- Makefile 5.2%
| .obj | ||
| .gitignore | ||
| bruteforce.c | ||
| bruteforce.h | ||
| debug.c | ||
| debug.h | ||
| enigma.c | ||
| enigma.h | ||
| main.c | ||
| main.h | ||
| Makefile | ||
| random.c | ||
| README.md | ||
Encryption
% make clean && make -j 8 && echo "IPROPOSETOCONSWABOSIDERTHEQUESTIONCANMACHINESTHINK" | ./run
rm -f .obj/enigma.o .obj/main.o .obj/debug.o *~ run random bruteforce
clang -O3 -c enigma.c -o .obj/enigma.o
clang -O3 -c main.c -o .obj/main.o
clang -O3 -c debug.c -o .obj/debug.o
clang -O3 debug.c enigma.c bruteforce.c -o bruteforce
clang -O3 .obj/enigma.o .obj/main.o .obj/debug.o -o run
*** Enigma 3 Rotor + UKW C implementation
----------------------------------------------------
Permutation : 1 2 0
Notches : O L I
Initial offsets : P N S
Rotor1 : CSBZYJEITWHQDMRKANLGPUOFXV
Rotor2 : WHJZBCRQUOEFLYGIPKNMDSTAVX
Rotor3 : EPBRCQJITXZKDMYHWLFONAGSUV
UKW : XGBIJRACWEQHFYLKVTMSDUZOPN
----------------------------------------------------
INPUT : IPROPOSETOCONSWABOSIDERTHEQUESTIONCANMACHINESTHINK
OUTPUT: OHGDL NESZP XXAZR LIUQW LTPHK BLQQX MXGSG DMYUZ BCIVO SISPT
*** end of program
Decryption
% make clean && make -j 8 && echo "OHGDL NESZP XXAZR LIUQW LTPHK BLQQX MXGSG DMYUZ BCIVO SISPT" | ./run
rm -f .obj/enigma.o .obj/main.o .obj/debug.o *~ run random bruteforce
clang -O3 -c enigma.c -o .obj/enigma.o
clang -O3 -c main.c -o .obj/main.o
clang -O3 -c debug.c -o .obj/debug.o
clang -O3 debug.c enigma.c bruteforce.c -o bruteforce
clang -O3 .obj/enigma.o .obj/main.o .obj/debug.o -o run
*** Enigma 3 Rotor + UKW C implementation
----------------------------------------------------
Permutation : 1 2 0
Notches : O L I
Initial offsets : P N S
Rotor1 : CSBZYJEITWHQDMRKANLGPUOFXV
Rotor2 : WHJZBCRQUOEFLYGIPKNMDSTAVX
Rotor3 : EPBRCQJITXZKDMYHWLFONAGSUV
UKW : XGBIJRACWEQHFYLKVTMSDUZOPN
----------------------------------------------------
INPUT : OHGDLNESZPXXAZRLIUQWLTPHKBLQQXMXGSGDMYUZBCIVOSISPT
OUTPUT: IPROP OSETO CONSW ABOSI DERTH EQUES TIONC ANMAC HINES THINK
*** end of program
Basic Bruteforce
The program will try to spot the term WABOS within the ciphered text. Due to the limited charset and encryption mechanism there will be a lot of false positives aka collisions. To speed things up we always use the same hardcoded permutation of the rotor order. After the first 10 matches the program exits.
% echo "OHGDL NESZP XXAZR LIUQW LTPHK BLQQX MXGSG DMYUZ BCIVO SISPT" | ./bruteforce
*** Enigma Bruteforce
----------------------------------------------------
Permutation : 1 2 0
Notches : A A A
Initial offsets : P M S
Rotor1 : CSBZYJEITWHQDMRKANLGPUOFXV
Rotor2 : WHJZBCRQUOEFLYGIPKNMDSTAVX
Rotor3 : EPBRCQJITXZKDMYHWLFONAGSUV
UKW : XGBIJRACWEQHFYLKVTMSDUZOPN
----------------------------------------------------
OHGDLNESZPXXAZRLIUQWLTPHKBLQQXMXGSGDMYUZBCIVOSISPT -> MZFJRPZRVNPONSWABOSIDERTHCXIUZFRNEUHQMACHINESTHINK
----------------------------------------------------
Permutation : 1 2 0
Notches : A N A
Initial offsets : P M R
Rotor1 : CSBZYJEITWHQDMRKANLGPUOFXV
Rotor2 : WHJZBCRQUOEFLYGIPKNMDSTAVX
Rotor3 : EPBRCQJITXZKDMYHWLFONAGSUV
UKW : XGBIJRACWEQHFYLKVTMSDUZOPN
----------------------------------------------------
OHGDLNESZPXXAZRLIUQWLTPHKBLQQXMXGSGDMYUZBCIVOSISPT -> LOLXZIZONDWONSWABOSIDERTHCXIUZFRNEUHQMACHINESTHINK
----------------------------------------------------
Permutation : 1 2 0
Notches : A O A
Initial offsets : P M S
Rotor1 : CSBZYJEITWHQDMRKANLGPUOFXV
Rotor2 : WHJZBCRQUOEFLYGIPKNMDSTAVX
Rotor3 : EPBRCQJITXZKDMYHWLFONAGSUV
UKW : XGBIJRACWEQHFYLKVTMSDUZOPN
----------------------------------------------------
OHGDLNESZPXXAZRLIUQWLTPHKBLQQXMXGSGDMYUZBCIVOSISPT -> MZFJRPZRVNPONSWABOSIDERTHCXIUZFRNEUHQOXNWTDWTQUPVA
----------------------------------------------------
Permutation : 1 2 0
Notches : A P A
Initial offsets : P M S
Rotor1 : CSBZYJEITWHQDMRKANLGPUOFXV
Rotor2 : WHJZBCRQUOEFLYGIPKNMDSTAVX
Rotor3 : EPBRCQJITXZKDMYHWLFONAGSUV
UKW : XGBIJRACWEQHFYLKVTMSDUZOPN
----------------------------------------------------
OHGDLNESZPXXAZRLIUQWLTPHKBLQQXMXGSGDMYUZBCIVOSISPT -> MZFJRPZRVNPONSWABOSIDERTHCXIUZFRNEUHQMACHINESTHINK
----------------------------------------------------
Permutation : 1 2 0
Notches : B A A
Initial offsets : P M S
Rotor1 : CSBZYJEITWHQDMRKANLGPUOFXV
Rotor2 : WHJZBCRQUOEFLYGIPKNMDSTAVX
Rotor3 : EPBRCQJITXZKDMYHWLFONAGSUV
UKW : XGBIJRACWEQHFYLKVTMSDUZOPN
----------------------------------------------------
OHGDLNESZPXXAZRLIUQWLTPHKBLQQXMXGSGDMYUZBCIVOSISPT -> MZFJRPZRVNPINSWABOSIDERTHCXIUZFRNEUHQPACHINESTHINK
----------------------------------------------------
[...]