【第四届山东省网络安全技能大赛】爬坡道 writeup
爬坡道:对文件进行16进制分析发现里面有压缩包然后kalilinux中利用foremost进行提取zip包解压缩后发现key联想题目爬坡道的英文为hill猜测为希尔加密那么key为一个可逆矩阵(需要有线性代数基础和了解希尔加密原理)求解密钥key的逆矩阵,然后用逆矩阵与密文ciphertext的ascii值进行相乘后对26取余,然后专程字符串即可得到答案求解逆矩阵脚本(可手算):
import numpy as np
a=np.matrix([,])
print a.I
print a**(-1)
print np.linalg.inv(a)
解密攻击脚本如下:
import numpy as np
cip="mttpjbpexfdzcegtdzeanutg"
key=[,[-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
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
代码排版有问题,我给你修复好了
页:
[1]