Picture3 from 2019_全国网络空间安全技术大赛

117 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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