本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Picture3
from 2019_全国网络空间安全技术大赛
By K龙
下载附件,得到图片
使用binwalk将文件分离,得到一个压缩文件
使用winrar将解压,文件存在密码
使用压缩文件修复,移除密码后得到stego.txt
文件内容具有base64加密特征以及stego隐写
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s2)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res
def solve_stego():
with open('stego.txt', 'rb') as f:
file_lines = f.readlines()
bin_str = ''
for line in file_lines:
steg_line = line.replace('n', '')
norm_line = line.replace('n', '').decode('base64').encode('base64').replace('n', '')
diff = get_base64_diff_value(steg_line, norm_line)
pads_num = steg_line.count('=')
if diff:
bin_str += bin(diff)[2:].zfill(pads_num * 2)
print (bin_str)
else:
bin_str += '0' * pads_num * 2
res_str = ''
for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i+8], 2))
print (res_str)
solve_stego()
解码后得到flag