Mona LSB
Flag: HACKDAY{M0N4_L1SA_IS_THE_NEW_META}
Challenge
Ce challenge tourne sur un docker et n'est pas disponible
Solution
On va lire frame par frame le fichier .wav
. Les premières frames sont étranges, il n'y a que des 0 et des 1 :
import wave
wav = wave.open('wmremona-is-you-here.wav')
frames = wav.readframes(wav.getframerate())
print(frames[:20])
b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Sachant que ça ressemble à des bits, on va appliquer une technique de LSB dessus. Pour ça, on va imaginer qu'on groupe ces bits par octets et ne garder que le dernier. Ça équivaut à ne prendre que toutes les 8 valeurs.
import wave
wav = wave.open('wmremona-is-you-here-wav')
frames = wav.readframes(wav.getframerate())
bits = [str(frames[i*8]) for i in range(8 * 50)]
Maintenant, on regroupe les bits par octets :
import wave
wav = wave.open('wmremona-is-you-here-wav')
frames = wav.readframes(wav.getframerate())
bits = [str(frames[i*8]) for i in range(8 * 50)]
data = [int(''.join(bits[i:i+8]), 2) for i in range(0, len(bits), 8)]
print(bytes(data).decode())
HACKDAY{M0N4_L1SA_IS_THE_NEW_META}
Dernière mise à jour
Cet article vous a-t-il été utile ?