0%

Python Challenge (Level 19)

第19关

一张印度的地图,好像没什么有用的信息。Page Source里面有一大段字符串。再根据里面的提示

Content-type: audio/x-wav; name=”indian.wav”
Content-transfer-encoding: base64

不难想出是要把这一段字符串decode,得到wav音频,然后听听里面有什么信息。这里用到base64

1
2
msg = ""  #这里补上Page Source里的字符串
open('indian.wav', 'wb').write(base64.decodestring(msg))

得到sorry 但是不对,只看到这个

- “what are you apologizing for?”

根据Page Source里的提示“Maybe my computer is out of order.”,再结合那张印度地图,海洋和陆地的颜色标反了。因此,我们尝试一下把音频里面的每一帧颠倒一下,看看输出是什么。这里要用到wave模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- coding:utf-8 -*-
india = wave.open('indian.wav', 'r')
india_frames = india.readframes(india.getnframes())
india_swap = wave.open('indian_swap.wav', 'w')
india_swap.setnchannels(1)
india_swap.setframerate(india.getframerate())
india_swap.setsampwidth(india.getsampwidth())

india_swap_frames = []
for i in range(0, len(india_frames), 2):
# 每一帧前后颠倒
india_swap_frames.append(india_frames[i+1])
india_swap_frames.append(india_frames[i])

india_swap_frames = ''.join(india_swap_frames)
india_swap.writeframes(india_swap_frames)
india_swap.close()
india.close()

不难听出You are a idiot. 改成idiot后,跳到的网页上有一句话

“Now you should apologize…”

跟前面的”what are you apologizing for?”呼应了哈!! 下一关 http://www.pythonchallenge.com/pc/hex/idiot2.html