Cybersécurité.

This commit is contained in:
Julien Palard 2017-09-18 12:07:00 +02:00
parent d932edf5fa
commit f23c1c615e
2 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,52 @@
status: hidden
title: Sup'Internet — Rendus
slug: obiree2uaza2sh-rendu
robots: noindex
# Rendu
Le rendu se fera par mail, par pièce jointe, sous forme d'un seul
fichier, soit un `.zip`, soit un `.tar.gz`. Le fichier devra être
nommé selon le format suivant : `printf("%s-%s_%s.%s", prénom, nom,
nom_du_projet, zip ? "zip" : "tar.gz")`.
L'archive devra se décompresser en un seul dossier, contenant votre
projet, au format: `printf("%s-%s_%s/", prénom, nom, nom_du_projet)`.
```
Pour une tarball, je doit donc voir quelque chose comme :
:::shell
$ tar tf julien-palard_exercise.tar.gz
julien-palard_exercise/
julien-palard_exercise/setup.py
julien-palard_exercise/README.md
julien-palard_exercise/tests/
julien-palard_exercise/tests/test_exercise.py
julien-palard_exercise/src/exercise.py
Ou pour un zip, quelque chose comme :
:::shell
$ unzip -l julien-palard_exercise.zip
Archive: julien-palard_exercise.zip
Length Date Time Name
--------- ---------- ----- ----
0 2016-11-18 09:34 julien-palard_exercise/
0 2016-11-18 09:34 julien-palard_exercise/setup.py
0 2016-11-18 09:34 julien-palard_exercise/README.md
0 2016-11-18 09:34 julien-palard_exercise/tests/
0 2016-11-18 09:34 julien-palard_exercise/tests/test_exercise.py
0 2016-11-18 09:34 julien-palard_exercise/exercise.py
--------- -------
0 6 files
Le sujet du mail devra être au format `printf("Rendu %s",
nom_du_projet)`, en respectant la casse.
> Aucun rendu ne respectant pas strictement le format de rendu ne sera corrigé.
Plusieurs rendus sont possibles (si vous corrigez un bug, ou ajoutez
une fonctionalité). Seul le dernier rendu sera pris en compte.

View File

@ -0,0 +1,32 @@
status: hidden
title: Cybersécurité — hashid
slug: einao4Noo2ohro-hashid
robots: noindex
# hashid
Le nom du projet est: `hashid`, en minuscule (c'est important pour le rendu).
L'exercice consiste à écrire un outil permettant de reconnaître un hash.
L'outil devra fonctionner *sans* serveur HTTP, le JavaScript est cependant autorisé : votre programme devra donc pouvoir être lancé en ligne de commande avec node.js. Tous les langages sont autorisés.
## Exemple
:::shell
$ ./hashid 68b329da9893e34099c7d8ad5cb9c940
md5
$ ./hashid adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
sha1
Sur 12 points : Être capable de distinguer les hash suivants: CRC16, Adler-32, md5, sha1, du bcrypt avec son salt tel que renvoyé en PHP par `password_hash("foo", PASSWORD_BCRYPT)`, et du whirlpool.
Sur 6 points: Reconnaître correctement au moins 15 hash différents.
Sur 1 point: Une option `--help` avec un "Usage" lisible.
Sur 1 point: Proposer une option pour pré-écrire à l'utilisateur la commande John the Ripper (disons `--john`) ou hashcat (disons `--hashcat`) pour tenter de casser le mot de passe.
Sur 1 point: Extraire le premier paragraphe de Wikipedia à propos du hash trouvé pour en afficher une description à l'utilisateur, si c'est fait au runtime c'est mieux si c'est optionnel, disons `--wikipedia`.
Sur 1 point: Une option pour lister tous les hash connus par l'outil, disons `--list`.