Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
cryptographie:tabsandfun [2016/07/27 14:23] yorin créée |
cryptographie:tabsandfun [2016/07/27 14:36] (Version actuelle) yorin |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Tabs And Fun | + | **Spaces And Fun** |
- | Récemment lors d'une épreuve de CTF je suis tombé sur une façon assez fun de "dissimuler" des datas sur une page web ou autre, à savoir les tabulations ! | + | Récemment lors d'une épreuve de CTF je suis tombé sur une façon assez fun de "dissimuler" des datas sur une page web ou autre, à savoir les espaces! |
+ | |||
+ | <code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </code> | ||
+ | |||
+ | Pas très parlant n'est-ce pas ? Assez peu visible en réalité, apart le nombre de ligne vide dans le code source ! | ||
+ | |||
+ | C'est enfaite une façon ingénieuse d'utiliser les valeurs ASCII décimales des lettres et de faire autant d'espaces que cette valeur. | ||
+ | |||
+ | Voici un petit script pour décoder ceci ! | ||
+ | |||
+ | <code> | ||
+ | #!/usr/python | ||
+ | import base64 | ||
+ | import sys | ||
+ | |||
+ | data = [] | ||
+ | with open(sys.argv[1], 'r') as f: | ||
+ | data = f.read().splitlines() | ||
+ | str = "" | ||
+ | for line in data: | ||
+ | str += chr(len(line)) | ||
+ | |||
+ | print str | ||
+ | decodedstr = base64.b64decode(str) | ||
+ | print decodedstr | ||
+ | </code> | ||
+ | |||
+ | On peut donc désormais lire ce que nous avons caché dans notre code source ! |