CTF中可能出现很多拼图的题目,那么拼图是怎么生成的呢?
下面给大家一个CTF中图片按照顺序分割的脚本:
前些天发布了《CTF 图片按顺序分割脚本 Python》,今天,给大家分享一下拼接脚本。顺带回复一下下面的评论。
from CV2 import CV2
import os
import shutil
#读取目标图片
target = CV2.imread(r"what.jpg")
#TODO:获取匹配度
def match(temp_file):
#读取图片
template = CV2.imread(temp_file)
#执行匹配,采用的匹配方式CV2.TM_SQDIFF_NORMED
result = CV2.matchTemplate(target, template, CV2.TM_SQDIFF_NORMED)
#归一化处理
CV2.normalize(result, result, 0, 1, CV2.NORM_MINMAX, -1)
#寻找矩阵(一维数组当做向量,用Mat定义)中的最大值和最小值的匹配结果及其位置
min_val, max_val, min_loc, max_loc = CV2.minMaxLoc(result)
return abs(min_val)
dirs = os.listdir(r"C:\\Users\\Lenovo\\Desktop\\hackerClub\\what\\misc")
#print dirs
count = 0
for k in dirs:
if(k.endswith('png')):
count += 1
print("processing on pic"+str(count))
real_path = os.path.join(r"C:\\Users\\Lenovo\\Desktop\\hackerClub\\what\\misc",k)
dst_path = os.path.join(r"C:\\Users\\Lenovo\\Desktop\\hackerClub\\what\\find",k)
rect = match(real_path)
if rect > 1.8e-11:
print(rect)
shutil.copyfile(real_path, dst_path)
else:
continue