[Level 19]

Title: please!
查看源碼,郵件的附件?試著下載indain.wav文件,不存在。下面的一段字符串,使用base64解碼輸出為indian.wav,是一段聲音:雜音+sorry+雜音。
import base64
with open('indian.txt','rb') as input,open('indian.wav','wb') as output:
base64.decode(input,output)
跳轉(zhuǎn)到sorry.html,顯示- "what are you apologizing for?"。
想了很久,技窮了。印度地圖海洋和陸地的顏色顛倒了,還有源碼中提示Maybe my computer is out of order.。好吧,這兩點(diǎn)真沒發(fā)現(xiàn)。
import wave
with wave.open('indian.wav') as iw, wave.open('new.wav','w') as new:
new.setnchannels(iw.getnchannels())
new.setsampwidth(iw.getsampwidth())
new.setframerate(iw.getframerate())
data = iw.readframes(iw.getnframes())
new.writeframes(data[::-1])
聲音是不同了,但有點(diǎn)問題。需要將音頻每一幀反轉(zhuǎn):
for i in range(iw.getnframes()):
new.writeframes(iw.readframes(1)[::-1])
可以聽出關(guān)鍵詞idiot,idiot.html給出了過關(guān)鏈接,[Level 20]
小結(jié)
wave模塊的方法還是比較簡單明了的。
Python Challenge Wiki
1. 使用email獲取音頻
import email
message = open('email.txt', 'rb').read().decode()
mail = email.message_from_string(message)
audio = mail.get_payload(0).get_payload(decode=True)
with open('indian.wav', 'wb') as f:
f.write(audio)
2. 反轉(zhuǎn)之外
frames = iw.readframes(iw.getnframes())
iw2.setsampwidth(iw.getsampwidth())
iw2.setframerate(iw.getframerate()//2)
iw2.writeframes(frames[::2])
或者
h.setsampwidth(w.getsampwidth()//2)
h.setframerate(w.getframerate()*2)
wave.big_endiana = 1
h.writeframes(frames)
有趣!