Files
TermNSI/Sécurité/Controle_TP.ipynb
T
2025-04-25 08:08:19 +02:00

6.3 KiB

Exercice 1

Quelqu'un a laissé trainer le mot Cesar. Quelle phrase se cache derriere le message chiffré ?

moncodage="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz '!?.,"
messageChiffre=",pYtm?ytmsqyYtcxyrpmstcyjcykcqqYecyaYafcy"
In [1]:


Exercice 2 : RSA codage en ASCII

La même personne a laissé trainer :

messagechiffre=[138856, 345157, 151132, 342779, 158558, 273532, 106749, 21276, 148728, 286735, 21276, 342779, 68425, 341353, 158558, 41948, 68425, 158558, 108463, 343191, 270263, 177724, 21276, 5130, 5130, 286735, 106749, 343761, 68425, 158558, 106749, 7365, 68425, 270263, 158558, 41948, 106749, 158558, 270263, 41948, 68425, 5130, 158558, 191938, 286735, 21276, 7365, 343191]#Allons Sortir Cet Ignoble Individu
prive_d= 178509 
prive_n= 371653

Déchiffrer le message.

In [ ]:

Exercice 3

Ecrire une fonction python est_premier(n) qui renvoie True si n est premier sinon False.

In [ ]:

Exercice 4

En supposant que n est le produit de deux facteurs premiers, ecrire une fonction python facteurs_premiers(n) qui renvoie les deux facteurs premiers de n.

Exemple:

>>>facteurs_premiers(21)
(3,7)

On peut faire aussi une fonction qui fait la factorisation de n'importe quel nombre mais c'est légerement plus délicat.

In [ ]:

Exercice 5 : RSA

On peut utiliser la fonction inverse pow(a,-1,b) qui calcule l'inverse de a modulo b, c'est dire que:

c=pow(a,-1,b)

(a\times c)\%b=1 qui revient à écrire ac\equiv1[ b]

Toujours la même personne a laissé trainer ceci. Qu'est ce qu'il y a derriére ? Utiliser les fonctions précédentes.

In [1]:
moncodage="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz '!?.,"

public_n=235457
public_c=37609

message=[62662, 234626, 112577, 79727, 62719, 134774, 136453, 118370, 112577, 115473, 
 134774, 109541, 112577, 134774, 161332, 78105, 118370, 82493, 82493, 189309, 
 112577, 69370, 112577, 115473, 62719, 134774, 213184, 226376, 0, 134774, 75017, 
 146623, 118370, 134774, 167402, 134774, 112577, 62719, 112577,
 134774, 146623, 62719, 118370, 109541, 118370, 79727, 112577, 134774, 32388]

In [ ]:

Exercice 6 masque jetable

Chaque caractére est chiffré...

Qu'est ce ?

In [3]:
moncodage="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz '!?.,"
K=60
unAutreMessage=[52, 25, 8, 14, 8, 34, 27, 8, 38, 8, 22, 18, 30, 8, 27, 9, 20, 27, 17, 8, 21, 38, 16, 
                8, 32, 20, 26, 21, 23, 30, 16, 8, 22, 18, 9, 30, 25, 8, 27, 34, 8, 35, 38, 18, 17,
                8, 23, 30, 34, 27, 8, 25, 38, 30, 16, 16, 34, 23, 8, 17, 23, 38, 30, 27, 34, 23, 4]
In [ ]:

Exercice 7 un peu de hash à la fin

Un exercice pour utiliser globals() et plus...A la fin, on peut utiliser le module hashlib et sa documentation.

Exécuter la cellule suivante:

In [ ]:
from _fichierHack import *
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:

Exercice 8 masque jetable par bloc

Tout le bloc est chiffré. Remarquer que les indices des caractéres utilisés pour le codage ont toujours deux chiffres. Cela permet de décoder plus facilement.

In [9]:
moncodage="**********ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz '!?.,"
clef= 733595400815782721245603043191369967446003109779782783631545260787596885665
messageChiffre= 1505772478592636573599379115754628819762906978940699006254569112577627237769
In [ ]:

Exercice 9 : un peu d'obfuscation

L'offuscation c'est le fait de cacher du code avec une méthode d'écriture du code de façon qu'il soit difficile de savoir ce que fait le code:

Voici un exemple d'obfucation très basique, arriverez vous à connaitre le message caché ?

In [8]:
message='∢ਢ潓癵湥ⱴ瀠畯⁲❳浡獵牥‬敬⁳潨浭獥搠攧畱灩条੥牐湥敮瑮搠獥愠扬瑡潲ⱳ瘠獡整⁳楯敳畡⁸敤⁳敭獲ਬ畑⁩畳癩湥ⱴ椠摮汯湥獴挠浯慰湧湯⁳敤瘠祯条ⱥ䰊⁥慮楶敲朠楬獳湡⁴畳⁲敬⁳潧晵牦獥愠敭獲ਮ∢•'

In [ ]: