mywav
这道题目没有解决出来,还是受到工具的限制了,那个audacity对于频谱图的处理不够好,根本找不到明显的二进制信息,服了,这是我用adobo audition打开处理得到的结果,很显然高频和低频交叉,我寻思着以我的水平应该是能判断出这是01二进制的

能观察出来,高频在600~900hz,低频在200~400hz
那就搓个脚本,处理下这个音频文件吧,其中高频是1,低频是0
import numpy as np
from scipy.io import wavfile
import matplotlib.pyplot as plt
def extract_binary_from_wav(file_path, low_freq_range, high_freq_range, output_path):
sample_rate, data = wavfile.read(file_path)
if len(data.shape) > 1:
data = data[:, 0]
window_size = int(sample_rate * 0.01)
binary_data = []
for i in range(0, len(data), window_size):
window = data[i:i + window_size]
if len(window) < window_size:
break
fft_result = np.fft.fft(window)
freqs = np.fft.fftfreq(len(window), d=1/sample_rate)
magnitude = np.abs(fft_result)
valid_indices = np.where((freqs >= low_freq_range[0]) & (freqs <= high_freq_range[1]))[0]
valid_freqs = freqs[valid_indices]
valid_magnitude = magnitude[valid_indices]
if len(valid_freqs) == 0:
binary_data.append(0)
continue
max_index = np.argmax(valid_magnitude)
dominant_freq = valid_freqs[max_index]
if high_freq_range[0] <= dominant_freq <= high_freq_range[1]:
binary_value = 1
elif low_freq_range[0] <= dominant_freq <= low_freq_range[1]:
binary_value = 0
else:
binary_value = 0
binary_data.append(binary_value)
binary_string = "".join(map(str, binary_data))
grouped_binary = " ".join([binary_string[i:i+8] for i in range(0, len(binary_string), 8)])
with open(output_path, "w") as f:
f.write(grouped_binary)
print(f"提取的二进制数据已保存到 {output_path}")
plt.figure(figsize=(10, 6))
plt.plot(freqs[:len(freqs)//2], magnitude[:len(magnitude)//2])
plt.axvline(low_freq_range[0], color='r', linestyle='--', label='Low Frequency Range')
plt.axvline(low_freq_range[1], color='r', linestyle='--')
plt.axvline(high_freq_range[0], color='g', linestyle='--', label='High Frequency Range')
plt.axvline(high_freq_range[1], color='g', linestyle='--')
plt.title('Frequency Spectrum')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.legend()
plt.grid()
plt.show()
file_path = "attachment.wav"
output_path = "output.txt"
low_freq_range = (200, 400)
high_freq_range = (600, 900)
extract_binary_from_wav(file_path, low_freq_range, high_freq_range, output_path)
将得到的结果从二进制转换成ASCII后,得到很长一串字符,想单词,又不太对,这里就能考虑到维吉尼亚密码了,毕竟像某种偏移,但是这里要找到key才行,后来研究了下,维吉尼亚密码有专门的网址进行爆破
https://www.guballa.de/vigenere-solver
爆破结束后,得到了密码

SolveI7ToG3tFl4g
接下来就考到对文件加密的知识储备了,对文件进行带key加密的话,大概率是用oursecret
就这样成功了

得到了flag
NSSCTF{9c99897d-5ea3-481c-b0a5-029fec9eaf42}
其他题目的话,也算是全部解决了,这里把我们小队的wp放上面来
小队wp汇总
恭喜X2ct34m小队第一次打团队赛,就把朝花夕拾干下去了
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
本次排名是榜上第二
Comments NOTHING