U.S. Cyber Command Valentine’s Day 2021 Crypto Challenge (Puzzle 3)

Pour la Saint Valentin 2021, l'U.S. Cyber Command propose dans un tweet de résoudre une douzaine de puzzles de cryptographie. Cliquez ici pour les récupérer. Une excellente initiative qui suscitera peut-être des vocations...
Pourquoi ne pas s'y essayer ? Nous verrons bien où cela nous mène... Je publierai sur ce site les solutions auxquelles je serai parvenu, sous la forme des notes prises chemin faisant, rendant donc compte d'éventuels errements, ce qui sera plus vivant.
Aujourd'hui, la solution du puzzle 3.
Il s'agit donc d'un MP3. J'installe Audacity pour pouvoir travailler dessus.
Je tente des trucs de base. Je renverse le morceau. Je joue à vitesse réduite, jusqu'à tomber sur x0,5 où il me semble entendre une voix qui crie des syllabes, mais rien de certain. Je tente de filtrer en fréquence pour enlever du bruit de fond, mais cela ne donne rien de plus intelligible.
J'installe DeepSound pour voir s'il reconnaît le fichier, mais ce n'est pas le cas.
En jetant un oeil dans le fichier dans HxD, mon attention est attiré par les métadonnées. Le titre du morceau est : "The Doctor's Words". Ce que j'aurais vu tout de suite si j'avais commencé par jouer le morceau dans n'importe quel player, mais bon...
Cela semble confirmer mon observation : quelqu'un crie quelque chose. Mais quoi ? A la recherche d'informations sur les techniques de stéganographie audio, je tombe sur d'intéressantes pages ici et .
Entre autres, j'apprends qu'il existe une technique pour loger dans des fréquences élevées un morceau mélangé ensuite à un autre. Toutefois le diagramme qui en résulte ne ressemble pas à celui que je peux visualiser dans Audacity. Tout de même, je tente de filtrer le signal pour ne retenir que les fréquences supérieures à 7000 Hz. Ce qui semble être une voix est déjà plus audible, surtout si la lecture est x0.5. En fait on dirait que la voix crie seulement deux syllabes, ce qui pourrait laisser supposer qu'il crie l'équivalent d'un 0 ou d'un 1.
Comme le morceau n'est pas très long, je ne vais certainement pas me fatiguer à programmer de quoi reconnaître ce qui est crié. Je joue et je mets en pause régulièrement, notant les bits que j'attribue aux cris les uns après les autres dans Notepad++. Cela me donne rapidement :
01101101011101010111010001110101011000010110110000100000011101110110010101101001011100100110010001101110011001010111001101110011
128 bits, cela ne tient sans doute rien au hasard... Je convertis cela en chaîne de caractères avec quelques lignes de Python :
bits = '01101101011101010111010001110101011000010110110000100000011101110110010101101001011100100110010001101110011001010111001101110011'
s = ''
for i in range (0, len (bits), 8):
	s += (chr (int (bits[i:i+8], 2)))
print (s)
J'ai eu de la chance de ne pas manquer un bit, et d'avoir bien choisi à quel son attribuer attribuer 0 et 1. Car cela me donne "mutual weirdness".
C'est ainsi que je tombe sur cette image :
Au suivant !
U.S. Cyber Command Valentine’s Day 2021 Crypto Challenge (Puzzle 3)