Implementation of hillclimbing attack on the M4 Enigma Machine based on Hillclimbing the Enigma Machine.
Setting | Value |
---|---|
Rotor setup | (reflector) ? ? IV III |
Initial start positions | ? ? B Q |
Ringstellung | 1 1 1 16 |
Plugboard | ? |
Reflector | C-thin |
Answer for given ct.txt
Gamma VI IV III
D A B Q
AG BN DI ER FY HJ KU LW MS PQ
For more testcases, see testcases.md
- Generate encrypted text using github.com/emedvedev/enigma or github.com/becgabri/enigma
enigma "EMMAWOODHOUSEXHANDSOMEXCLEVERXANDRICHXWITHACOMFORTABLEHOMEANDHAPPYDISPOSITIONXSEEMEDTOUNITESOMEOFTHEBESTBLESSINGSOFEXISTENCEXANDHADLIVEDNEARLYTWENTYXONEYEARSINTHEWORLDWITHVERYLITTLETODISTRESSORVEXHERXSHEWASTHEYOUNGESTOFTHETWODAUGHTERSOFAMOSTAFFECTIONATEXINDULGENTFATHERXANDHADXINCONSEQUENCEOFHERSISTERXSMARRIAGEXBEENMISTRESSOFHISHOUSEFROMAVERYEARLYPERIODXHERMOTHERHADDIEDTOOLONGAGOFORHERTOHAVEMORETHANANINDISTINCTREMEMBRANCEOFHERCARESSESXANDHERPLACEHADBEENSUPPLIEDBYANEXCELLENTWOMANASGOVERNESSXWHOHADFALLENLITTLESHORTOFAMOTHERINAFFECTIONXSIXTEENYEARSHADMISSTAYLORBEENINMRXWOODHOUSEXSFAMILYXLESSASAGOVERNESSTHANAFRIENDXVERYFONDOFBOTHDAUGHTERSXBUTPARTICULARLYOFEMMAXBETWEENTHEMITWASMORETHEINTIMACYOFSISTERSXEVENBEFOREMISSTAYLORHADCEASEDTOHOLDTHENOMINALOFFICEOFGOVERNESSXTHEMILDNESSOFHERTEMPERHADHARDLYALLOWEDHERTOIMPOSEANYRESTRAINTXANDTHESHADOWOFAUTHORITYBEINGNOWLONGPASSEDAWAYXTHEYHADBEENLIVINGTOGETHERASFRIENDANDFRIENDVERYMUTUALLYATTACHEDXANDEMMADOINGJUSTWHATSHELIKEDXHIGHLYESTEEMINGMISSTAYLORXSJUDGMENTXBUTDIRECTEDCHIEFLYBYHEROWNXTHEREALEVILSINDEEDOFEMMAXSSITUATIONWERETHEPOWEROFHAVINGRATHERTOOMUCHHEROWNWAYXANDADISPOSITIONTOTHINKALITTLETOOWELLOFHERSELFXTHESEWERETHEDISADVANTAGESWHICHTHREATENEDALLOYTOHERMANYENJOYMENTSXTHEDANGERXHOWEVERXWASATPRESENTSOUNPERCEIVEDXTHATTHEYDIDNOTBYANYMEANSRANKASMISFORTUNESWITHHERXSORROWCAMEXXAGENTLESORROWXXBUTNOTATALLINTHESHAPEOFANYDISAGREEABLECONSCIOUSNESSXMISSTAYLORMARRIEDXITWASMISSTAYLORXSLOSS" --rotors "Gamma I IV III" --rings="1 1 1 16" --position "F U B Q" --plugboard "AQ BN DI ER FY HJ KU LW MS PG" --reflector "C-thin"
- Store encrypted text in a file
echo -n "QYQXZXEHIGFISNYLHCDBRQAEIQQJLRSCAGABUZIDBUEKIKJZDCTWWQBMEPWDTJXBEUVXXRRGTAALQNUOBRRZKYBBYRAJBOHWHNPTWQNXGSWHTSUHAHDBEXFRMDNVDNUFFCOXCRBQFJGUHSGTQWOJFUUNWXUOODRJWDIHJBWOZXNJWJRZDQEHLBEVDHLKUYNDIRSRNWKFWATAXHZDOFNBOKUEWAHVBAQQXHNPYDEFHRELCVYWWBUDIMDFEVBIZFSKXERZJSSMOSDWUOPOKOYAJSEOIWMXXVUGLZYDVYKVOWKTOZKZESZZMORDYTCZSNKYVTUBAGRJVTXJEDGCLVMGSBQHODCKJIBLCENJJULKSQWQVFGIOWMWAJBBMRQOWPHALSTWIYMASNTCFAARFLOBRCLCNTRAJCCRYAPIEGKGIJFCXOOVFQBNTPPWELBOKFNDVCYRNOYQODQSIMCOLAYZLYTHGOSWGZYDKGLZZSUCVWVHORYDAJXUJQOJSHJNWBCPXAKUYBSNBTWSXLYVJRXAPHQLBRTCAMTDGQOWQIGMSXTPZIBQPIYEGKDVTJGACJWYWLBPVCDPKJECMSFOAVIEBJBCRIQKTDYUULUBXVADZYRKQZOFREDOVSRQBCRKYOTZVUWYNZRSIHRAVXKZQACUGDWSXRFFYDJSBAPVLFONAJYPUTIGLLOTPDFNHLHJULUVCRSDLWJOWJLSYBKXSZNHHDNJJTYAPALNSZSHAYKEFSSWKJWZKWFIBYIYIANPVRZNGIDQRKGPBWBAYXYTYNLYVUWCWNFNOVWYPDUCBJZIGGHMSESGINXOUUTDHDSGSHZYKGLGEWVIGSJDKVGOIJFIPEDCWTWTFIGTFETIDQVMKKJHLRBGBIULAVRZJXFPXCGYQFJGPLFEXHCWJPAOXOBMYEWMPMKVZKNVAZFHUVYUHVEKJZWOTXFDVDXSXTALMKPBNIAPRFGBMWSAHBONJQFFZMIJAUXFTOJEVOYGVFCBDERJUGHQPZBVQQTKBSRTUVQGOZOIFEJRSSFOGRVTHZUVPLMAZDTRIPGSZVVZWMMFKLFPUWAVZDFPQNHHMPUGQRVUODLBUZPOPYDLYEYCFOQZCUFMEBTEULIWWYTTNXDXBIXPOCKRWFKBGBUPJMYKTDXZBATAOWRRINTQIATASFJCHUMRCEWAKGBOYSXNAVHLEASNGRPAYYZAFXKDCMYGGDNOUKPRBCABGCQTIVSHNUPILNKCXRMAGUNHSVIRTKTJGUKOSJLZPYIOCXUSIUVOFETVZRWBZKFKJBKMWGCDOPXCONEXYJQKUVLPIOMQWGGELYLAZEWCEJRLYVNVYATQOJICBSCDYSNDBOWCNBQNUUGJYSOEHCMAJLUFUMOFATRWCATOIMLPHXMPPPWDTBEDMKSIKFQFGNBCAOXLKXNQOVREDZO" > ct.txt
- Compile and run
hillclimb
go build *.go && ./hillclimb ct.txt