No description
  • C 94.8%
  • Makefile 5.2%
Find a file
2018-05-25 18:33:14 +02:00
.obj basic structure 2018-05-09 10:49:28 +02:00
.gitignore starting bruteforce 2018-05-18 10:44:09 +02:00
bruteforce.c nicer input/output 2018-05-25 18:33:14 +02:00
bruteforce.h some tuning 2018-05-18 12:47:52 +02:00
debug.c lets work with an static enigma struct 2018-05-18 11:21:19 +02:00
debug.h lets work with an static enigma struct 2018-05-18 11:21:19 +02:00
enigma.c comments 2018-05-21 10:44:51 +02:00
enigma.h comments 2018-05-21 10:44:51 +02:00
main.c nicer input/output 2018-05-25 18:33:14 +02:00
main.h refactor 2018-05-18 10:56:21 +02:00
Makefile fix warning 2018-05-18 12:52:43 +02:00
random.c clean up and basic encryption works - but it does not decrypt atm 2018-05-11 12:24:57 +02:00
README.md typo 2018-05-21 10:44:41 +02:00

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
----------------------------------------------------
[...]