题目
压缩文件需要密码解密
根据提示应该是棋盘密码
解密
棋盘密码是一个矩阵:下标从1开始
所以密文两两一组进行解密:
# 棋盘密码
def qiPan():
cy="4423244324433534315412244543"
dic=[
['a','b','c','d','e'],
['f','g','h','i/j','k'],
['l','m','n','o','p'],
['q','r','s','t','u'],
['v','w','x','y','z']
]
res=['']
for i in range(0,len(cy),2):
c=dic[int(cy[i])-1][int(cy[i+1])-1]
length=len(res)
if c=='i/j':#不考虑效率了
for i in range(0,length):
res.append(res[i]+'i')
res[i]+='j'
else:
for i in range(length):res[i]+=c
print(res)
pwd=extract(res)
return pwd
#压缩包解密
import zipfile,rarfile,time
def extract(res):
path=input("压缩包路径:")
start_time = time.time()
name=path.split('\\')[-1]
name=name.split('/')[-1]
if name.endswith('.zip'):
zfile=zipfile.ZipFile(path)
elif name.endswith('.rar'):
zfile=rarfile.ZipFile(path)
for pwd in res:
try:
zfile.extractall(pwd=pwd.encode('utf-8'))
print ("当前压缩密码为:",pwd)
end_time = time.time()
print ('单线程破解压缩包花了%s秒'%(end_time-start_time))
return pwd
except Exception as e:
pass
#主函数
if __name__ == '__main__':
print("/*Begin*\\")
pwd=qiPan()
print(pwd.lower())
结果为:
解压密码为:thisispolybius
解压的:
博多密码!
懒得写字典了
博多密码解密链接
结果为:
BAUD0TC0DE
换成小写:baud0tc0de
注意0和o