Pour ce challenge d'intro, il fallait réussir à convertir ce fichier .iq (signal audio) en un audio compréhensible par l'oreille humaine.
import numpy as np
from scipy.io.wavfile import write
# Paramètres
input_file = "chall.iq"
output_file = "output.wav"
sample_rate = 44100 # Hz
# Lire IQ comme complex128 (résultat d'une FFT)
fft_data = np.fromfile(input_file, dtype=np.complex128)
print(f"[+] Chargé {len(fft_data)} coefficients FFT depuis '{input_file}'")
# Revenir au domaine temporel
time_data = np.fft.ifft(fft_data)
# Garder uniquement la partie réelle
audio_signal = np.real(time_data)
# Normaliser entre -1 et 1
audio_signal /= np.max(np.abs(audio_signal))
# Convertir en float32
audio_signal = audio_signal.astype(np.float32)
# Sauvegarder le son
write(output_file, sample_rate, audio_signal)
print(f"[+] Signal reconstruit et sauvegardé dans '{output_file}'")