Python Challenge[26]

[Level 26]


Title: be a man - apologize!

Hurry up, I'm missing the boat

源碼中有一提示:you've got his e-mail,指的是[Level 19]中的leopold.moz@pythonchallenge.com。但沒(méi)想出來(lái)有什么用。

這個(gè)郵件存在,需要我們以sorryapology(或其他?)為主題發(fā)個(gè)郵件過(guò)去。郵件回復(fù):

Never mind that.
Have you found my broken zip?
md5: bbb8b499a0eef99b52c7f13f4e78c24b
Can you believe what one mistake can lead to?

一個(gè)錯(cuò)誤,什么錯(cuò)誤?缺少了一個(gè)字節(jié),窮舉驗(yàn)證:

import hashlib
data = open('mybroken.zip','rb').read()
for i in range(len(data)):
  for j in range(256):
    new = data[:i]+bytes([j])+data[i+1:]
    if hashlib.md5(new).hexdigest()=='bbb8b499a0eef99b52c7f13f4e78c24b':
      open('repaired.zip','wb').write(new)
      exit()

打開(kāi)修復(fù)的壓縮包里的圖片,顯示speed,但 speed.html 不存在。網(wǎng)頁(yè)中的提示派上用場(chǎng)了,speedboat才對(duì),[Level 27]

小結(jié)

或許還應(yīng)注意到:

bytes(iterable_of_ints) -> bytes
bytes(int) -> bytes object of size given by the parameter initialized with null bytes

Python Challenge Wiki

Pythonic 的方式發(fā)送郵件:

import email.message, smtplib
apology = email.message.Message()
apology.add_header('To', 'leopold.moz@pythonchallenge.com')
apology.add_header('From', from_addr)
apology.add_header('Subject', 'Apology')
apology.set_payload('Sorry!')

server = smtplib.SMTP_SSL('smtp.gmail.com')
server.login(from_addr, pw)
server.sendmail(apology['from'], apology['to'], apology.as_string())
server.quit()

More

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容