crypto: add already solved challenges
This commit is contained in:
85
crypto/waves_over_lambda/solve.py
Executable file
85
crypto/waves_over_lambda/solve.py
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i python -p python3
|
||||
|
||||
# NOTE: the colors are used to keep track of which letters have been
|
||||
# already substituted, and which are still unknown.
|
||||
|
||||
def green(s):
|
||||
return f"\033[42m{s}\033[0m"
|
||||
|
||||
def red(s):
|
||||
return f"\033[41m{s}\033[0m"
|
||||
|
||||
def substitute(cipher_text, substitution_map):
|
||||
for letter in cipher_text:
|
||||
if letter in substitution_map:
|
||||
print(green(substitution_map[letter]), end="")
|
||||
else:
|
||||
print(red(letter), end="")
|
||||
|
||||
with open('ciphertext', 'r') as file:
|
||||
enc = file.read()
|
||||
|
||||
# Here, I will be slowly substituting the letters in the ciphertext
|
||||
# based on what I believe the words to be. I have commented out the
|
||||
# invocations of substitute, and commented the newly found letters
|
||||
# after each invocation.
|
||||
|
||||
# Starting off, "csds bh reod kzim" looks like "here is your flag"
|
||||
|
||||
substitution_map = {
|
||||
'-': '-',
|
||||
'_': '_',
|
||||
'\n': '\n',
|
||||
' ': ' ',
|
||||
',': ',',
|
||||
'.': '.',
|
||||
';': ';',
|
||||
'c': 'h',
|
||||
's': 'e',
|
||||
'd': 'r',
|
||||
'b': 'i',
|
||||
'h': 's',
|
||||
'r': 'y',
|
||||
'e': 'o',
|
||||
'o': 'u',
|
||||
'k': 'f',
|
||||
'z': 'l',
|
||||
'i': 'a',
|
||||
'm': 'g',
|
||||
}
|
||||
|
||||
# substitute(enc, substitution_map)
|
||||
|
||||
# found: euro't'e, ligh'a', o'f'er, 'q'ri'a'ish
|
||||
# suspect: euro p e, ligh t, o v er, b ri t ish
|
||||
|
||||
substitution_map['t'] = 'p'
|
||||
substitution_map['a'] = 't'
|
||||
substitution_map['f'] = 'v'
|
||||
substitution_map['q'] = 'b'
|
||||
|
||||
# substitute(enc, substitution_map)
|
||||
|
||||
# found: visite'n', british 'y'useu'y', sear'p'h, havi'x'g
|
||||
# suspect: visite d , british m useu m , sear c h, havi'n'g
|
||||
|
||||
substitution_map['n'] = 'd'
|
||||
substitution_map['y'] = 'm'
|
||||
substitution_map['p'] = 'c'
|
||||
substitution_map['x'] = 'n'
|
||||
|
||||
# substitute(enc, substitution_map)
|
||||
|
||||
# found: fre'g'uency, 'l'no'w'n, 'j'ust, e'v'act
|
||||
# suspect: fre q uency, k no w n, j ust, e'x'act
|
||||
|
||||
substitution_map['g'] = 'q'
|
||||
substitution_map['l'] = 'k'
|
||||
substitution_map['w'] = 'w'
|
||||
substitution_map['j'] = 'j'
|
||||
substitution_map['v'] = 'x'
|
||||
|
||||
substitute(enc, substitution_map)
|
||||
|
||||
# still not sure about 'u'? But flag is found
|
Reference in New Issue
Block a user