Après avoir brillament déchiffré le message du défi Message audio transposé (1), Sherlock est de nouveau pris à partie par Irène Adler.
Il vient de recevoir un nouveau message audio, très probablement chiffré avec une méthode semblable. Mais cette fois-ci, il n'a pas reçu d'email contenant la table à utiliser pour déchiffrer...
Sherlock vous demande un coup de main, car il doit réviser le second mouvement du Concerto pour violon n°1 en La Mineur de Johann Sébastien Bach et n'a pas le temps de s'occuper du déchiffrement.
En fouillant dans le dernier logement occupé par Irène Adler, vous retrouvez une clé USB avec ce code :
import time
import random
# Dernière transposition utilisée
transpo = [
15, 103, 144, 224, 209, 205, 196, 130, 128, 191, 25, 90, 70, 48, 229, 161,
219, 92, 9, 134, 186, 121, 238, 12, 118, 139, 184, 231, 108, 160, 162, 42,
154, 233, 133, 204, 253, 129, 132, 93, 137, 251, 235, 167, 98, 52, 115, 201,
61, 177, 126, 216, 27, 142, 234, 245, 168, 2, 60, 105, 147, 87, 155, 116,
172, 57, 206, 189, 176, 114, 21, 64, 101, 179, 212, 195, 249, 171, 78, 146,
192, 99, 199, 4, 241, 106, 14, 242, 94, 169, 131, 82, 86, 158, 136, 77,
89, 72, 138, 210, 22, 62, 83, 181, 17, 80, 180, 113, 237, 58, 63, 53,
40, 166, 243, 140, 10, 203, 239, 23, 32, 211, 175, 220, 33, 152, 31, 5,
110, 149, 254, 1, 185, 255, 59, 246, 107, 18, 50, 36, 240, 188, 244, 45,
150, 193, 51, 232, 174, 165, 35, 68, 47, 20, 247, 222, 123, 39, 43, 187,
44, 7, 66, 157, 96, 112, 8, 164, 218, 111, 127, 38, 252, 102, 230, 91,
225, 182, 54, 16, 213, 24, 117, 170, 100, 141, 156, 81, 202, 19, 30, 250,
145, 173, 95, 208, 207, 223, 124, 3, 143, 49, 0, 11, 104, 125, 215, 88,
28, 55, 85, 226, 120, 248, 76, 46, 135, 236, 200, 6, 178, 228, 34, 56,
69, 190, 194, 122, 148, 67, 37, 153, 65, 97, 214, 75, 217, 29, 198, 74,
221, 79, 159, 197, 41, 151, 13, 109, 84, 26, 163, 227, 119, 73, 183, 71
]
seed = f"DoYouLoveMeSherlock?{time.time()}"
random.seed(seed)
available = [v for v in transpo if v % 16 != 0]
random.shuffle(available)
for k, v in enumerate(transpo):
if v % 16 != 0:
transpo[k] = available.pop()
assert not available
# Le prochain message sera chiffré avec la nouvelle transposition
Décryptez le message chiffre_message_J.wav et validez le défi en indiquant ce qu'il faut actionner (juste un mot).
