Aller au contenu

Exercices sur les dictionnaires⚓︎

Exercice 1 : création d'une rainbow table 🌈

Créer une fonction inverse_md5() qui va chercher dans un dictionnaire (construit préalablement) le mot correspondant au hash donné en paramètre.

À quel mot de passe correspond le hash 33da7a40473c1637f1a2e142f4925194 ?

Exemple :

>>> inverse_md5('0571749e2ac330a7455809c6b0e7af90')
>>> 'sunshine'

Aide :

  • liste de 1000 mots de passe fréquents : ici
  • comment lire / convertir le contenu d'un fichier dans une liste de string :
    lst = open("monfichier.txt").read().splitlines()
    
  • comment calculer du MD5 en Python :
    import hashlib
    result = hashlib.md5('azerty'.encode())
    print(result.hexdigest())
    

Exercice 2

Exercice 2 du sujet Centres Etrangers J1 2021

Correction Q1.a.

flotte[26] renvoie {'type' : 'classique', 'etat' : 1, 'station' : 'Coliseum'}

Correction Q1.b.

flotte[80]['etat'] renvoie la valeur 0.

Correction Q1.c.

flotte[99]['etat'] renverra une erreur car la clé 99 n'existe pas.

Correction Q2.a.

Les valeurs possibles pour choix sont electrique ou classique.

Correction Q2.b.

En fonction du choix (electrique ou classique), cette fonction va renvoyer le nom de la première station où un vélo est disponible (à l'etat 1).
Seule la première station sera renvoyée, à cause du return. Si aucun vélo n'est disponible, la fonction ne renverra rien.

Correction Q3.a.
1
2
3
for id_velo in flotte:
    if flotte[id_velo]['station'] == 'Citadelle' and flotte[id_velo]['etat'] == 1:
        print(id_velo)
Correction Q3.b.
1
2
3
for id_velo in flotte:
    if flotte[id_velo]['type'] == 'electrique' and flotte[id_velo]['etat'] != -1:
        print(id_velo, flotte[id_velo]['station'])
Correction Q4.
1
2
3
4
5
6
7
def velo_finder(coordonnees):
    velo_dispo = []
    for id_velo in flotte:
        d = distance(coordonnees, stations[flotte[id_velo]['station']])
        if d < 800 and flotte[id_velo]['etat'] == 1:
            velo_dispo.append((flotte[id_velo]['station'], d, id_velo))
    return velo_dispo