49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
# coding: utf-8
|
|
|
|
from argparse import ArgumentParser
|
|
import matplotlib.pyplot as plt
|
|
from lorem import text as loremtext
|
|
from functions import readFile
|
|
|
|
|
|
def checkArguments():
|
|
args = ArgumentParser(description='Cryptanalyst')
|
|
args.add_argument('-f', '--filename', help='Text to analyze')
|
|
return args.parse_args()
|
|
|
|
def stats(file=None):
|
|
"""
|
|
This function get a stats of all letter occurrence in a text
|
|
"""
|
|
if file is None:
|
|
dataFile = loremtext()
|
|
else:
|
|
dataFile = file
|
|
|
|
lettersOccurence = []
|
|
|
|
# Init our tab
|
|
for i in range (0, 26):
|
|
lettersOccurence.append(0)
|
|
|
|
letterToAscii = ord('a') # Get the ASCII code
|
|
for letter in dataFile:
|
|
l = ord(letter) - letterToAscii
|
|
if l >= 0 and l <= 26:
|
|
lettersOccurence[l] += 1
|
|
|
|
x = [chr(letter + 65) for letter in range(0, 26)]
|
|
y = [tmp for tmp in lettersOccurence]
|
|
|
|
largeur = 0.5
|
|
plt.bar(x, y, largeur)
|
|
plt.show()
|
|
|
|
if __name__ == "__main__":
|
|
args = checkArguments()
|
|
|
|
if args.filename:
|
|
dataFile = readFile(args.filename)
|
|
|
|
stats(dataFile)
|