Expand description
§Unkr decrypt and bruteforce old school cyphers
- Encrypt and Decrypt strings using old school cryptography, like Vigenere, Transposition, and more.
- Bruteforce challenges when knowing a part of the clear text.
- Print out all possible strings and look for words inside yourself.
§Decrypt/Encrypt Examples
§Basic
$ echo "ABCDEF" | unkr encrypt -- transpose:2
ACE
BDF
§Kryptos panel K1
$ echo "EMUFPHZLRFAXYUSDJKZLDKRNSHGNFIVJYQTQUXQBQVYUVLLTREVJYQTMKYRDMFD" | unkr decrypt -- vigenere:PALIMPSEST:KRYPTOS
BETWEENSUBTLESHADINGANDTHEABSENCEOFLIGHTLIESTHENUANCEOFIQLUSION
§Kryptos panel k2
(passing string as argument instead of stdin)
$ unkr decrypt --string 'VFPJUDEEHZWETZYVGWHKKQETGFQJNCEGGWHKK?DQMCPFQZDQMMIAGPFXHQRLGTIMVMZJANQLVKQEDAGDVFRPJUNGEUNAQZGZLECGYUXUEENJTBJLBQCRTBJDFHRRYIZETKZEMVDUFKSJHKFWHKUWQLSZFTIHHDDDUVH?DWKBFUFPWNTDFIYCUQZEREEVLDKFEZMOQQJLTTUGSYQPFEUNLAVIDXFLGGTEZ?FKZBSFDQVGOGIPUFXHHDRKFFHQNTGPUAECNUVPDJMQCLQUMUNEDFQELZZVRRGKFFVOEEXBDMVPNFQXEZLGREDNQFMPNZGLFLPMRJQYALMGNUVPDXVKPDQUMEBEDMHDAFMJGZNUPLGEWJLLAETG' -- 'vigenere:ABSCISSA:KRYPTOS'
ITWASTOTALLYINVISIBLEHOWSTHATPOSSIBLE?THEYUSEDTHEEARTHSMAGNETICFIELDXTHEINFORMATIONWASGATHEREDANDTRANSMITTEDUNDERGRUUNDTOANUNKNOWNLOCATIONXDOESLANGLEYKNOWABOUTTHIS?THEYSHOULDITSBURIEDOUTTHERESOMEWHEREXWHOKNOWSTHEEXACTLOCATION?ONLYWWTHISWASHISLASTMESSAGEXTHIRTYEIGHTDEGREESFIFTYSEVENMINUTESSIXPOINTFIVESECONDSNORTHSEVENTYSEVENDEGREESEIGHTMINUTESFORTYFOURSECONDSWESTIDBYROWS
§Kryptos panel k3
There is some confusion here between encrypt and decrypt, I need to fix the right verb but I am not sure about what to for transpose
actually.
Also symbols are totally ignored.
$ cargo run -- encrypt --string "ENDYAHROHNLSRHEOCPTEOIBIDYSHNAIACHTNREYULDSLLSLLNOHSNOSMRWXMNETPRNGATIHNRARPESLNNELEBLPIIACAEWMTWNDITEENRAHCTENEUDRETNHAEOETFOLSEDTIWENHAEIOYTEYQHEENCTAYCREIFTBRSPAMHHEWENATAMATEGYEERLBTEEFOASFIOTUETUAEOTOARMAEERTNRTIBSEDDNIAAHTTMSTEWPIEROAGRIEWFEBAECTDDHILCEIHSITEGOEAOSDDRYDLORITRKLMLEHAGTDHARDPNEOHMGFMFEUHEECDMRIPFEIMEHNLSSTTRTVDOHW?" -- transpose:24 reverse transpose:8 reverse join
SLOWLYDESPARATLYSLOWLYTHEREMAINSOFPASSAGEDEBRISTHATENCUMBEREDTHELOWERPARTOFTHEDOORWAYWASREMOVEDWITHTREMBLINGHANDSIMADEATINYBREACHINTHEUPPERLEFTHANDCORNERANDTHENWIDENINGTHEHOLEALITTLEIINSERTEDTHECANDLEANDPEEREDINTHEHOTAIRESCAPINGFROMTHECHAMBERCAUSEDTHEFLAMETOFLICKERBUTPRESENTLYDETAILSOFTHEROOMWITHINEMERGEDFROMTHEMISTXCANYOUSEEANYTHINGQ
§ASD Coin
see https://www.asd.gov.au/news-events-speeches/events/2022-09-01-75th-anniversary-commemorative-coin
$ echo "URMWXOZIRGBRM7DRWGSC5WVKGS" | cargo run -- encrypt -- atbash
FINDCLARITYIN7WIDTHX5DEPTH
$ echo "DVZIVZFWZXRLFHRMXLMXVKGZMWNVGRXFOLFHRMVCVXFGRLM" | cargo run -- encrypt -- atbash
WEAREAUDACIOUSINCONCEPTANDMETICULOUSINEXECUTION
$ echo "BGOAMVOEIATSIRLNGTTNEOGRERGXNTEAIFC" | cargo run -- encrypt -- cut:35 transpose:7 join
BELONGINGTOAGREATTEAMSTRIVINGFOREXC
$ echo "ECAIEOALEKFNR5LWEFCHDEEAEEE7NMDRXX5" | cargo run -- encrypt -- cut:35 transpose:7 join
ELLENCEWEMAKEADIFFERENCEXORHEXA5D75
§Cryptors
Current cryptors are
assert_eq!(cryptors, vec![
BruteForceCryptor::Vigenere(BruteForceVigenereArgs { // [...]
}),
BruteForceCryptor::Cut,
BruteForceCryptor::Caesar,
BruteForceCryptor::Transpose,
BruteForceCryptor::AtBash,
BruteForceCryptor::Reverse,
BruteForceCryptor::Swap,
BruteForceCryptor::Join,
BruteForceCryptor::Permute(BruteForcePermuteArgs { // [...]
}),
]);
§Bruteforce
The second interesting feature is bruteforcing using clues.
cargo run -- bruteforce --decryptors enigma --string ILBDARKFH --clues HELLOTEST --threads 16
Modules§
Functions§
- brute_
force_ decrypt - brute_
force_ unique_ combination - char_
position - enigma_
encrypt - enigma_
init - enigma_
next - fuzz_
from - fuzz_
next - fuzz_
next_ string_ ruled - get_
decryptors - Return current supported decryptors.
- permute_
decrypt - permute_
init - permute_
next - print_
combine_ elements - print_
decrypt - print_
encrypt - read_
bruteforce_ parameters - transpose_
decrypt - transpose_
init - transpose_
next