diff --git a/new_ceasar/new_caesar.py b/new_ceasar/new_caesar.py new file mode 100755 index 0000000..c966418 --- /dev/null +++ b/new_ceasar/new_caesar.py @@ -0,0 +1,28 @@ +import string + +LOWERCASE_OFFSET = ord("a") +ALPHABET = string.ascii_lowercase[:16] + +def b16_encode(plain): + enc = "" + for c in plain: + binary = "{0:08b}".format(ord(c)) + enc += ALPHABET[int(binary[:4], 2)] + enc += ALPHABET[int(binary[4:], 2)] + return enc + +def shift(c, k): + t1 = ord(c) - LOWERCASE_OFFSET + t2 = ord(k) - LOWERCASE_OFFSET + return ALPHABET[(t1 + t2) % len(ALPHABET)] + +flag = "redacted" +key = "redacted" +assert all([k in ALPHABET for k in key]) +assert len(key) == 1 + +b16 = b16_encode(flag) +enc = "" +for i, c in enumerate(b16): + enc += shift(c, key[i % len(key)]) +print(enc) diff --git a/new_ceasar/sol.py b/new_ceasar/sol.py new file mode 100755 index 0000000..f82a580 --- /dev/null +++ b/new_ceasar/sol.py @@ -0,0 +1,30 @@ +#!/home/maxime/.pyvenv/bin/python3 +import string + +ALPHABET = string.ascii_lowercase[:16] + +def b16_decode(enc): + dec = '' + assert len(enc) % 2 == 0 + for i in range(0, len(enc), 2): + char = 0 + msb = ord(enc[i]) - ord('a') + lsb = ord(enc[i+1]) - ord('a') + char += (msb << 4) + lsb + dec += chr(char) + return dec + +def decode(c, k): + t1 = ord(c) - ord('a') + t2 = ord(k) - ord('a') + return ALPHABET[(t1 - t2) % len(ALPHABET)] + +with open("string", 'r') as f: + text = f.read().strip() + keyset = ALPHABET + for key in keyset: + decrypted = '' + for char in text: + decrypted += decode(char, key) + print(b16_decode(decrypted)) + diff --git a/new_ceasar/string b/new_ceasar/string new file mode 100644 index 0000000..43b3474 --- /dev/null +++ b/new_ceasar/string @@ -0,0 +1 @@ +dcebcmebecamcmanaedbacdaanafagapdaaoabaaafdbapdpaaapadanandcafaadbdaapdpandcac