From c9b432c900863046023384e5e1c1d3588846efb0 Mon Sep 17 00:00:00 2001 From: Bucchino Geoffrey Date: Wed, 22 Jun 2022 20:42:48 +0200 Subject: [PATCH] First commit --- main.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ test.txt.crypt | 2 ++ 2 files changed, 77 insertions(+) create mode 100644 main.py create mode 100644 test.txt.crypt diff --git a/main.py b/main.py new file mode 100644 index 0000000..554951d --- /dev/null +++ b/main.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +from argparse import ArgumentParser +import matplotlib.pyplot as plt +from lorem import text as loremtext + + +def checkArguments(): + args = ArgumentParser(description='Cryptanalyst') + args.add_argument('-f', '--filename', help='Text to analyze') + args.add_argument('-s', '--stats', help='Statistics', action='store_true') + args.add_argument('-d', '--decrypt', help='Decrypt Caesar text', action='store_true') + return args.parse_args() + +def readCipherText(filename): + file = [] + with open(filename, 'r') as f: + data = f.readlines() + + for entry in data: + file.append(entry.strip()) + + return file + +def main(): + args = checkArguments() + cipherFile = None + + if args.filename: + cipherFile = readCipherText(args.filename) + + if args.stats: + stats(cipherFile) + if args.decrypt: + decryptCaesarText(cipherFile) + + +def stats(file=None): + if file is None: + text = loremtext() + else: + text = file + + lettersOccurence = {} + letterUpperToAscii = ord('A') # Get the ASCII code + for i in range (0, 26): + lettersOccurence[chr(i + letterUpperToAscii)] = 0 + + for line in text: + for letter in line: + letter = letter.upper() + if letter in lettersOccurence: + lettersOccurence[letter] = lettersOccurence[letter] + 1 + + x = [chr(letter + 65) for letter in range(0, 26)] + y = [lettersOccurence[tmp] for tmp in lettersOccurence] + + largeur = 0.5 + plt.bar(x, y, largeur) + plt.show() + +def decryptCaesarText(cipherFile): + if cipherFile is None: + return + + #for lines in cipherFile: + # splitLines = lines.split(' ') + + # for word in splitLines: + # if len(word) <= 3: + # print(word) + + +if __name__ == "__main__": + main() diff --git a/test.txt.crypt b/test.txt.crypt new file mode 100644 index 0000000..b57a8a0 --- /dev/null +++ b/test.txt.crypt @@ -0,0 +1,2 @@ +AJGNNQ YQTNF! +LG UWKU WP OGUUCIG GP ENCKT !!