直接搜索题目名即可得知大概的意思,即把所有数字转2进制之后可以发现后6位全是1,取前两位即可解密,但是这里改了改,换成了后四位,但是解密脚本还是很好写
file=open(r"C:\Users\16334\Desktop\Time To Live.txt").read().splitlines()
bina=''
for i in file:
a=int(i)
a=bin(a)[2:].zfill(8)
bina+=a[0:4]
base=long_to_bytes(int(bina,2))
提取之后就可以得到一段完整的base64,同时可以看出这是一个jpg图片转过来的base64,解密即可得到原图,再根据题目描述可以猜到有一个图片盲水印,由于只有一张图,所以猜测是傅里叶盲水印,脚本或者工具都可以解密,完整exp如下
from Crypto.Util.number import *
import base64
file=open(r"C:\Users\16334\Desktop\Time To Live.txt").read().splitlines()
bina=''
for i in file:
a=int(i)
a=bin(a)[2:].zfill(8)
bina+=a[0:4]
base=long_to_bytes(int(bina,2))
flagimg=base64.b64decode(base)
with open(r"C:\Users\16334\Desktop\1.jpg",'wb') as f:
f.write(flagimg)
f.close
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread(r"C:\Users\16334\Desktop\1.jpg", 0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
s1 = np.log(np.abs(fshift))
plt.subplot(121)
plt.imshow(img, 'gray')
plt.title('original')
plt.subplot(122)
plt.imshow(s1,'gray')
plt.title('center')
plt.show()