# coding: utf-8 from argparse import ArgumentParser import matplotlib.pyplot as plt from functions import readFile def checkArguments(): args = ArgumentParser(description='Cryptanalyst') args.add_argument('-f', '--filename', help='Text to analyze') return args.parse_args() def decryptCaesarText(cipherFile): """ This function breach the caesar ciphertext with all key """ if cipherFile is None: return letterAToAscii = ord('A') # Get the ASCII code letterZToAscii = ord('Z') # Get the ASCII code letteraToAscii = ord('a') # Get the ASCII code letterzToAscii = ord('z') # Get the ASCII code for key in range (0, 26): foo = [] for line in cipherFile: newLine = str() for letter in line: letter = letter.upper() letterAscii = ord(letter) if letterAscii >= letterAToAscii and letterAscii <= letterZToAscii: newLetter = getNewLetter(letterAscii, letterAToAscii, key) elif letterAscii >= letteraToAscii and letterAscii <= letterzToAscii: newLetter = getNewLetter(letteraToAscii, key) else: newLetter = letter newLine = newLine + newLetter foo.append(newLine) print(f"key: {key}") print(foo) def getNewLetter(letterAscii, letterToAscii, key): """ This function return the new letter and we substract with the key. The function return the new letter into a char """ letterAscii = letterAscii - letterToAscii res = ((letterAscii - key) % 26) + letterToAscii return chr(res) if __name__ == "__main__": args = checkArguments() cipherFile = None if args.filename: cipherFile = readFile(args.filename) decryptCaesarText(cipherFile)