wave - Codegate 2024 Finals
データにノイズが加えられているが、FFTでピークを探すと元のデータを復元できる
code:python
import numpy as np
import matplotlib.pyplot as plt
import scipy
import string
from math import sin, cos, pi
from binascii import unhexlify
from struct import unpack
import scipy.signal
def solve(y):
f_s = 400
t_fin = 1
dt = 1/f_s
N = int(f_s * t_fin)
t = np.arange(0.0, t_fin, dt)
yf = scipy.fft.fft(y)
freq = scipy.fft.fftfreq(N, d=dt)
threshold = 0.05
peaks_index, properties = scipy.signal.find_peaks(np.abs(yf), height=threshold)
max_height = 0
max_idx = 0
max_idx = i
values_list = []
with open('flag.txt.encode', 'r') as f:
for line in f.readlines():
values = []
for i in range(0, len(line)-1, 16):
values.append(unpack('>d', unhexlify(linei:i+16))0) values_list.append(np.asarray(values))
print(''.join([solve(values_listi) for i in range(len(values_list))]))