爬坡道: 对文件进行16进制分析发现里面有压缩包 然后kalilinux中利用foremost进行提取zip包
解压缩后发现key 联想题目爬坡道的英文为hill 猜测为希尔加密 那么key为一个可逆矩阵(需要有线性代数基础和了解希尔加密原理) 求解密钥key的逆矩阵,然后用逆矩阵与密文ciphertext的ascii值进行相乘后对26取余,然后专程字符串即可得到答案 求解逆矩阵脚本(可手算):
import numpy as np
a=np.matrix([[3,1],[2,1]])
print a.I
print a**(-1)
print np.linalg.inv(a)
解密攻击脚本如下:
import numpy as np
cip="mttpjbpexfdzcegtdzeanutg"
key=[[1,-1],[-2,3]]
hang_len=len(key)
def pla_index(strs):
result=[]
for i in strs:
result.append(ord(i)-97)
return result
cip_group =[]
for i in range(0,len(cip),hang_len):
a=""
a=cip[i:i+hang_len]
cip_group.append(list(pla_index(a)))
result=[]
for i in cip_group:
result.append(list(np.dot(key,i)%26))
pla=""
for i in result:
for j in i:
pla +=chr(j+97)
print("Result:")
print "flag{"+pla+"}"
运行即可得到flag
|