- 记录一下
遇到一个题目有多条base64的代码,看了大神的WP才知道是隐写,其中一个等号是后两个字符的隐写位,两个等号是后四个字符的隐写位。
直接上代码,以后慢慢学。
# -*- coding: utf-8 -*-
#base64解码脚本,Python2 运行
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
# 2.txt为需要解码的文件
with open('2.txt', 'rb') as f:
bin_str = ''
for line in f.readlines():
stegb64 = ''.join(line.split())
rowb64 = ''.join(stegb64.decode('base64').encode('base64').split())
offset = abs(b64chars.index(stegb64.replace('=','')[-1])-b64chars.index(rowb64.replace('=','')[-1]))
equalnum = stegb64.count('=') #no equalnum no offset
if equalnum:
bin_str += bin(offset)[2:].zfill(equalnum * 2)
print ''.join([chr(int(bin_str[i:i + 8], 2)) for i in xrange(0, len(bin_str), 8)]) #8位一组



