ctfMiscIrisCTF2024
PH Gao最有用的一集
What the Beep?
题目描述说有几个地方的音频音量计记录,下载附件后发现是有四个不同位置的记录,从前到后大概是49,56,52,52分贝。题目中又说信号源是140分贝,所以推测是计算信号源到四个位置的相对距离然后在地图得出位置。
经过搜索得到声音衰减公式:
衰减(分贝)=20⋅log10(d2d1)
所以可以得到:
d2d1=1020衰减(分贝)
带入数据得到四个地点到信号源的距离之比是
2.1:1:1.5:1.5
然后在地图上作图得到大概位置就行了:
nc后输入位置坐标得到flag:
irisctf{ac0ust1c_pr0pagat10n_m0d3ls_c4n_b3_us3d_t0_appr0xim4te_d1st4nce5}
The Peano Scramble
图片下下来是一张很混乱的图片:
通过题目peano搜索发现是一种分形几何:
https://zhuanlan.zhihu.com/p/305623626
推测应该是按着曲线的轨迹将像素还原到原来的位置,于是编写脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| from PIL import Image from tqdm import tqdm
def peano(n): if n == 0: return [[0,0]] else: in_lst = peano(n - 1) lst = in_lst.copy() px,py = lst[-1] lst.extend([px - i[0], py + 1 + i[1]] for i in in_lst) px,py = lst[-1] lst.extend([px + i[0], py + 1 + i[1]] for i in in_lst) px,py = lst[-1] lst.extend([px + 1 + i[0], py - i[1]] for i in in_lst) px,py = lst[-1] lst.extend([px - i[0], py - 1 - i[1]] for i in in_lst) px,py = lst[-1] lst.extend([px + i[0], py - 1 - i[1]] for i in in_lst) px,py = lst[-1] lst.extend([px + 1 + i[0], py + i[1]] for i in in_lst) px,py = lst[-1] lst.extend([px - i[0], py + 1 + i[1]] for i in in_lst) px,py = lst[-1] lst.extend([px + i[0], py + 1 + i[1]] for i in in_lst) return lst
order = peano(6)
img = Image.open(r"C:\Users\ASUSROG\Desktop\chal.png")
width, height = img.size
block_width = width block_height = height
new_image = Image.new("RGB", (width, height))
for i, (x, y) in tqdm(enumerate(order)): new_x, new_y = i % width, i // width pixel = img.getpixel((x, height - 1 - y)) new_image.putpixel((new_x, new_y), pixel)
new_image.save("rearranged_image.jpg")
|
运行得到最终结果:
提交即可
Czech Where?
直接谷歌地图搜索即可得到地址,把音标去掉得到flag
irisctf{zlata_ulicka_u_daliborky}