This commit is contained in:
BreizhHardware
2022-03-16 22:28:32 +01:00
parent 13e6965e9c
commit 548e417ce6
15 changed files with 128 additions and 17 deletions

0
.gitignore vendored Normal file
View File

View File

@@ -6,6 +6,8 @@ def createFile(filename: str) -> None:
f.write('')
except FileExistsError:
return None
def cryptByteFile(filenameIn: str, keya: int, keyb: int, filenameOut = 'result') -> None:
""" Ecrit dans filenameOut, filenameIn crypté avec le chiffrement affine
"""
@@ -63,15 +65,34 @@ def decryptByteFile(filenameIn: str, keya: int, keyb: int, filenameOut = 'result
fdout.close()
def brutforce(filenameIn: str, filenameOut = 'result'):
maj = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
createFile(filenameOut)
fdin = open(filenameIn, "rb")
fdout = open(filenameOut, "wb")
data = fdin.read(1)
for keya in range(256):
print(keya)
for keyb in range(256):
print(keyb)
i = dechiffrementAffineByte(data, keya, keyb)
for i in maj:
fdout.write(i)
#Jeu de test
cryptByteFile('tescrypt.txt', 1, 3, "resulttest2")
cryptByteFile('data', 1, 3, 'resultcryptdata')
cryptByteFile('monkey.jpg', 1, 3)
decryptByteFile('resulttest2', 1, 3, "decryptresult2")
decryptByteFile('resultcryptdata', 1, 3, 'resultdecryptdata')
decryptByteFile('result', 1, 3, "decryptmonkey.jpg")
#cryptByteFile('tescrypt.txt', 1, 3, "resulttest2")
#cryptByteFile('data', 1, 3, 'resultcryptdata')
#cryptByteFile('monkey.jpg', 1, 3)
#decryptByteFile('resulttest2', 1, 3, "decryptresult2")
#decryptByteFile('resultcryptdata', 1, 3, 'resultdecryptdata')
#decryptByteFile('result', 1, 3, "decryptmonkey.jpg")
#cryptByteFile('enemy-from-the-series-arcane-league-of-legends.mp3', 45, 76, 'enemyCrypted')
#decryptByteFile('enemyCrypted', 45, 76, 'enemyDeCyted.mp3')
brutforce('data')
#Notre problème c'est le 'aw' dans fdout = open(filenameOut, 'ab') en gros au lieu d'écraser ce qu'il y avait avant, ça ajoutais après
#J'ai crée une fonction qui permet de crée le fichier si il n'exite pas
#nmb d'octet de e et code (b'x65')
#nmb d'octet de s et code (b'x73')
#nmb d'octet de espace et code (b'x20')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

View File

@@ -1,3 +0,0 @@
fichier test lalalla
aa
ahouhda

View File

@@ -1,3 +0,0 @@
fichier test lalalla
aa
ahouhda

Binary file not shown.

BIN
enemyCrypted Normal file

Binary file not shown.

BIN
enemyDeCyted.mp3 Normal file

Binary file not shown.

1
info.py Normal file
View File

@@ -0,0 +1 @@
s

98
motsfreq.py Normal file
View File

@@ -0,0 +1,98 @@
""" Programme d'analyse des fréquences de mots dans un
fichier de texte.
Le programme affiche les mots par ordre décroissant
de fréquence en indiquant pour chacun son nombre d'occurrences
dans le fichier.
Uilisation :
python mots-freq.py nomFichier
où nomFichier est le nom du fichier à analyser
"""
from __future__ import annotations
import sys
def getWords(text : str
) -> list[str]:
""" Découpe text en mots et renvoie la liste des mots.
"""
i = 0
word = ''
words = []
while i < len(text):
# words contient la liste des mots complets trouvés avant l'indice i de text.
# word contient le mot en cours de lecture avant l'indice i de text.
if text[i].isalpha():
word = word + text[i]
elif word != '':
words.append(word)
word = ''
i = i + 1
if word != '':
words.append(word)
word = ''
return words
def updateDict(wordDict : dict[str, int],
words : list[str]
) -> None:
""" wordDict est un dictionnaire tel que
* une clé est un mot
* la valeur associée est la fréquence de ce mot.
Met à jour wordDict avec la liste de mots words.
"""
for word in words:
if word in wordDict:
freq = wordDict[word] + 1
else:
freq = 1
wordDict[word] = freq
def getWordsList(wordsFreq : dict[str, int]
) -> list[tuple[str, list]]:
""" Renvoie la liste de couples (mot, freq) de wordsFreq.
Les couples sont triés par ordre décroissant de freq.
"""
wordsList = [(word, wordsFreq[word]) for word in wordsFreq]
# Tri la liste wordsList par ordre décroissant de freq.
# Adaptation de l'algorithme du tri par insertion.
k = 1
while k < len(wordsList):
i = k
while i > 0 and wordsList[i - 1][1] < wordsList[i][1]:
wordsList[i - 1], wordsList[i] = wordsList[i], wordsList[i - 1]
i = i - 1
k = k + 1
return wordsList
def printWords(wordsList : list[tuple[str, list]]
) -> None:
""" Écrit la liste de mots sur la sortie standard.
"""
for word, freq in wordsList:
print(word, ' : ', freq)
print('Nombre de mots : ', len(wordsList))
# PROGRAMME PRINCIPAL
filename = sys.argv[1]
fd = open(filename, 'r')
wordsFreq = dict()
for line in fd:
words = getWords(line)
updateDict(wordsFreq, words)
fd.close()
wordsList = getWordsList(wordsFreq)
printWords(wordsList)

BIN
result

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
ilfklhu#whvw#ododood

View File

@@ -1 +0,0 @@
ilfklhu#whvw#ododood