Outils d'utilisateurs

Outils du Site


ndhquals2015:game_of_life

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

ndhquals2015:game_of_life [2015/04/05 14:43]
Spl3en créée
ndhquals2015:game_of_life [2017/04/09 15:33] (Version actuelle)
Ligne 13: Ligne 13:
     #!/usr/bin/python     #!/usr/bin/python
     #-*- coding:utf-8 -*-     #-*- coding:utf-8 -*-
 +    
     import hashlib, sys, itertools     import hashlib, sys, itertools
 +    
     def creerGrille():     def creerGrille():
         result=[]         result=[]
Ligne 24: Ligne 24:
             result.append(ligne)             result.append(ligne)
         return result         return result
 +    
     def genKey(key):     def genKey(key):
         psk=hashlib.sha256(key)         psk=hashlib.sha256(key)
Ligne 34: Ligne 34:
             seed+=c             seed+=c
         return seed         return seed
 +    
     def initGrille(grille,seed):     def initGrille(grille,seed):
         for (i, j), c in itertools.izip(itertools.product(xrange(len(grille)), reversed(xrange(len(grille[0])))), seed):         for (i, j), c in itertools.izip(itertools.product(xrange(len(grille)), reversed(xrange(len(grille[0])))), seed):
Ligne 70: Ligne 70:
                     grille[j][i]='0'                     grille[j][i]='0'
         return grille         return grille
- +     
 +    
     def genBitstream(grille,key):     def genBitstream(grille,key):
         bitstream=''         bitstream=''
Ligne 77: Ligne 77:
             bitstream+=grille[j][7]             bitstream+=grille[j][7]
         return bitstream         return bitstream
 +    
     def xor(ent1,ent2):     def xor(ent1,ent2):
         key=itertools.cycle(ent2)         key=itertools.cycle(ent2)
         return ''.join(chr(ord(x) ^ ord(y)) for (x,y) in itertools.izip(ent1, key))         return ''.join(chr(ord(x) ^ ord(y)) for (x,y) in itertools.izip(ent1, key))
 +    
     def wrapper():     def wrapper():
         key=sys.argv[1]         key=sys.argv[1]
Ligne 93: Ligne 93:
             tourSuivant(grille)             tourSuivant(grille)
         print encfile         print encfile
 +    
     wrapper()     wrapper()
  
 La "clé" est attendue en premier argument, un fichier est attendu en 2ème argument. La "clé" est attendue en premier argument, un fichier est attendu en 2ème argument.
  
-Après lecture du source, on se rend compte que le fichier est XORé grâce à un bitstream déduit à partir de la clé. Néanmoins, ce bitstream n'utilise pas la clé à chaque tour contrairement à ce que la fonction genBitstream laisse supposer. La clé n'est utilisée que pour la génération de la grille du Game of Life.+Après lecture du source, on se rend compte que le fichier est XORé grâce à un bitstream déduit à partir de la clé.  
 + 
 +Il faut noter que ce bitstream n'utilise **pas** la clé à chaque tour de boucle, contrairement à ce que la fonction ''genBitstream'' laisse supposer, elle est utilisée uniquement pour la génération de la grille de départ du Game of Life.
  
-On essaye donc de rentrer une clé vide, en espérant que la génération de la grille n'impactera pas beaucoup le déchiffrement du fichier :+On essaye donc de rentrer une clé vide, en espérant que la génération de la grille sera à peu près similaire à celle qui a été utilisée pour chiffrer le fichier, pour que cela n'impacte pas beaucoup le déchiffrement du fichier :
  
     spl3en@box:~/Bureau/crypto/liv_GOL$ python jdlv.py "" cipher.txt      spl3en@box:~/Bureau/crypto/liv_GOL$ python jdlv.py "" cipher.txt 
Ligne 220: Ligne 222:
  
  
-Le début du fichier illisible, mais très vite l'état du Game of Life se stabilise dans un état similaire à celui qui à chiffré le texte.+Le début du fichier illisible, mais très rapidement, l'état du Game of Life se stabilise dans un état similaire à celui qui à chiffré le texte.
  
 Par "chance", le flag est à la fin du texte : ''Flag : ToBeAndToLast'' Par "chance", le flag est à la fin du texte : ''Flag : ToBeAndToLast''
ndhquals2015/game_of_life.1428237797.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)