mirror of
https://github.com/BreizhHardware/chiff-affine.git
synced 2026-01-18 16:37:39 +01:00
Update
This commit is contained in:
0
.gitignore
vendored
Normal file
0
.gitignore
vendored
Normal 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 |
@@ -1,3 +0,0 @@
|
||||
fichier test lalalla
|
||||
aa
|
||||
ahouhda
|
||||
@@ -1,3 +0,0 @@
|
||||
fichier test lalalla
|
||||
aa
|
||||
ahouhda
|
||||
BIN
enemy-from-the-series-arcane-league-of-legends.mp3
Normal file
BIN
enemy-from-the-series-arcane-league-of-legends.mp3
Normal file
Binary file not shown.
BIN
enemyCrypted
Normal file
BIN
enemyCrypted
Normal file
Binary file not shown.
BIN
enemyDeCyted.mp3
Normal file
BIN
enemyDeCyted.mp3
Normal file
Binary file not shown.
98
motsfreq.py
Normal file
98
motsfreq.py
Normal 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
resultcryptdata
BIN
resultcryptdata
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
ilfklhu#whvw#ododood
|
||||
@@ -1 +0,0 @@
|
||||
ilfklhu#whvw#ododood
|
||||
Reference in New Issue
Block a user