0%

Python Challenge (Level 26)

第26关

Page Source里提示you’ve got his e-mail,回想一下,我们在第19关里得到了一个email地址leopold.moz@pythonchallenge.com,这一关的网页title提示**be a man-apologize!**,攻略上说发邮件到上面的email地址会得到通关信息(我试了一下,暂时还没收到信息)。

From: leopold.moz@pythonchallenge.com
Subject: Re: sorry
Date: 2007-05-17 15:37:07 BDT

Never mind that.

Have you found my broken zip?

md5: bbb8b499a0eef99b52c7f13f4e78c24b

Can you believe what one mistake can lead to?

根据这个回信提示,有一个字节漏掉了。第25关得到mybroken.zip,解压不了,我们要补回这一个字节。穷举所有位置以及字节(0~255),检验一下MD5。MD5正确即表示得到完整zip文件。

1
2
3
4
5
6
7
8
9
10
11
import hashlib

md5code = 'bbb8b499a0eef99b52c7f13f4e78c24b'
data = open('maze/mybroken.zip').read()
for i in range(len(data)):
for j in range(256):
newData = data[ : i] + chr(j) + data[i+1 :]
if hashlib.md5(newData).hexdigest() == md5code:
open('repaired.zip', 'w').write(newData)
print i, j
raise StopIteration

解压修复好的zip文件,得到一张图片,上面有speed。再根据本关的图片提示Hurry, up, I’m missing the boat,最终得到speedboat. http://www.pythonchallenge.com/pc/hex/speedboat.html