diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/chiffrement_affine.py b/chiffrement_affine.py index a7a3567..3ff5caf 100644 --- a/chiffrement_affine.py +++ b/chiffrement_affine.py @@ -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 \ No newline at end of file + +#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') \ No newline at end of file diff --git a/decryptmonkey.jpg b/decryptmonkey.jpg deleted file mode 100644 index ed0a183..0000000 Binary files a/decryptmonkey.jpg and /dev/null differ diff --git a/decryptresult b/decryptresult deleted file mode 100644 index 7c2bf45..0000000 --- a/decryptresult +++ /dev/null @@ -1,3 +0,0 @@ -fichier test lalalla -aa -ahouhda \ No newline at end of file diff --git a/decryptresult2 b/decryptresult2 deleted file mode 100644 index 7c2bf45..0000000 --- a/decryptresult2 +++ /dev/null @@ -1,3 +0,0 @@ -fichier test lalalla -aa -ahouhda \ No newline at end of file diff --git a/enemy-from-the-series-arcane-league-of-legends.mp3 b/enemy-from-the-series-arcane-league-of-legends.mp3 new file mode 100644 index 0000000..129b199 Binary files /dev/null and b/enemy-from-the-series-arcane-league-of-legends.mp3 differ diff --git a/enemyCrypted b/enemyCrypted new file mode 100644 index 0000000..a0dc1a6 Binary files /dev/null and b/enemyCrypted differ diff --git a/enemyDeCyted.mp3 b/enemyDeCyted.mp3 new file mode 100644 index 0000000..129b199 Binary files /dev/null and b/enemyDeCyted.mp3 differ diff --git a/info.py b/info.py new file mode 100644 index 0000000..2f259b7 --- /dev/null +++ b/info.py @@ -0,0 +1 @@ +s \ No newline at end of file diff --git a/motsfreq.py b/motsfreq.py new file mode 100644 index 0000000..4b05a7e --- /dev/null +++ b/motsfreq.py @@ -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) \ No newline at end of file diff --git a/result b/result index c9ecb68..e69de29 100644 Binary files a/result and b/result differ diff --git a/resultcryptdata b/resultcryptdata deleted file mode 100644 index 69acc6d..0000000 Binary files a/resultcryptdata and /dev/null differ diff --git a/resultdecryptdata b/resultdecryptdata deleted file mode 100644 index fcfd475..0000000 --- a/resultdecryptdata +++ /dev/null @@ -1 +0,0 @@ -e1d1v +N˪&p_=˪_&e=p& 11+ ņ1+=&p_v&=_e=&pѪpѩ=pN˪&p_=˪p&˪vѪv'ep&eepe=&pѪ==N'e&=epѪvѪvѪ&p=NNe=&pѪ===N'ev=e=&pѪ=ܪN'eNѪv'e&_NѪevp=pvѪ_p&_˪&Nة__=pv'epe=e=&pѪܪN˪_&e=p˪vp_=&N˪epv˪vѪNepv=eNe=&pѪ=ee&NѪp_=N_=˪&p=H=e=&pѪ==N'=&p=сpv˪_&e=pe=&pѪ===Ѫ=&p=ѪvѪ_сpe=&pѪ=v'ep&eeѪv=e=&pѪѪ_p==pѪe==1=Ne=&pѪ=N'=&p=ѪѪ_e=&pѪ==_p˪=NN=pvvѪ=ee=&pѪ===_=сp_e=сe=&pѪ=ܪN'_ѪvѪсe=&pѪܪ˪vѪp_Ѫ&˪v'e=&pѪ=_NѪepvѪv˪e˛=ppeN˪v',_=˪NeN_Ѫ_pNe_p_Ѫ=NNѪ,e=e=&e&p,_=e=&pѪ==NѪeѪ_e=сe=&pѪ===N'ee&&NѪep=e=&pѪ=NevѪeee=&pѪ_ee=&pѪ=Ne_&ѪvѪ7=&pe=&pѪ==NѪeNN&vѪNepNe=_e=&pѪ===NѪpvHI_e=&pѪ=ܪNѪe=NN_e=&pѪܪ_p&_e=&pѪ=Ne&⛢Ѫv'epe=e=&pѪ==Ne,ѩѪv'e&_e=&pѪ===p&_pe=&pѪ=NeeѪʪN'=ѩ&e=&pѪ=Neve=&pѪ=eNe=˪&,peGe=e=&pѪ==vpvѪp_pсpe=&pѪ===_p&&Ѫ&e&pe=&pѪ=ܪ_=N&&pe=&vѪN'=ѩ&v'epe=˪&vغ_p&_e=&pѪܪNe=&&_˪N˪e&˪_&p=e=&pѪ=pXѪvѪee=&pѪ==NѪp&vѪ=Neve=&pѪ===_&e˪Ѫvpepe&_˪&p_e_؛=ѩ&e=&pѪ=Ѫ==_e=&pѪNNѪepv=eNe=&pѪN=NѪ=ѪvѪNep_NNe=&pѪN==NѪ=v'e_e=&pѪN===N'epѪv_N_=pIp_e=&pѪN=ܪvѪN'&=N=&v˪&evѪ_XNe=&pѪNܪѪ_eNe=&pѪN=NѪe&=_e=&Ipe=e=&pѪN==NѪ_=Nv˪_&e=pe=&pѪN===e,,e=pѪvѪ,e=NNe=&pѪN=,e&eN=&e=&pѪNep=Ѫv',ppѪee_сpe=&pѪN=_,,==pe=&pѪN==pѩ=pѪ_pѪvѪe&==&e=&pѪN===vс=Ѫ_pѪvѪe&==&e=&pѪN=ܪ&p_==Ѫ_pѪvѪe&==&e=&pѪNܪe&p=Ѫ_pѪvѪe&==&e=&pѪN===Ѫ_pѪvѪe&==&e=&pѪN==_vѪ&pev=ѪNe=e=&pѪN===e=_e=&pѪN=Ѫ=Ѫee=&ʪ_p&˩_&NѪke_c&|2e=&pѪN,pee=&pѪN=NѪ_&v˪epN=&˪vѪ&e=&pѪN==vсep=&˪vѪv_e=&pѪN===Ѫ_&&Ѫv'ee=&pѪN=ܪN'_Ѫee&ep_e=&pѪNܪNѪѩ&e=&pѪN=N'ђ&=_e=&pѪN==_N=_؛=N_=&p_v&=_=MŪdd*1Л+u'1dŝ+d*Ū Bu1пMŮ11+1{B1{B1+Ъ dB+11N+=1 ŝB+֪+Ъ1+] 1+1'eІdd Н ]+II{ 1+d1І11+<1+1{11]u1 1+1+؆1dŝ1d*֝1Ū<]Н]+d+Ů1Ъŝ1dЪ+ d+خd窛*Ū+1II*e +1 {B111p1N11 1+]+11+1 Іŝ{B1 <1{Ū1 ++d11{d+1<ņ1C 1d1d1d11+֛]<ŝةdd1ddd'1++1ŝ1{d1dŮM+11{1{Н1ؿ<111 1{d1d1ŝ'M1d