Misc 自动拼图 CTF

Misc 自动拼图

需要使用python遗传算法脚本gaps和拼图脚本montage

安装montage

   不同linux环境下的安装命令
1. \#Debian
2. apt-get install graphicsmagick-imagemagick-compat
3.  
4. \#Ubuntu
5. apt-get install graphicsmagick-imagemagick-compat
6.  
7. \#Alpine
8. apk add imagemagick6
9.  
10. \#Arch Linux
11. pacman -S imagemagick6
12.  
13. \#Kali Linux
14. apt-get install graphicsmagick-imagemagick-compat
15.  
16. \#Raspbian
17. apt-get install graphicsmagick-imagemagick-compat
18.  
19. \#Docker
20. docker run cmd.cat/montage montage

安装gaps

$ git clone https://github.com/nemanja-m/gaps.git #gaps官网
$ cd gaps
$ pip install -r requirements.txt #这一行代码经常行会出错,推测由于所包含的库为旧版无法安装,下面给出解决方案
$ sudo apt-get install python-tk
$ pip install -e . #验证安装是否成功,但可以不执行
  • 如果$ pip install -r requirements.txt 出现错误,则要手动安装numpy 、opencv-python 、matplotlib 、pytest 、 pillow,并将对应的库的版本在requirements.txt上修改
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy 
#加入镜像源速度更快,分别安装**numpy 、opencv-python 、matplotlib 、pytest 、 pillow** 
vim requirements.txt #并非一定是以下版本号

在这里插入图片描述

开始拼图

以ctf中的一道训练题puzzle为例

  • 如果图片为碎片状,根据总数确定拼块长宽数量,并用montage进行第一次拼接

在这里插入图片描述

#如左下角所示,总数为256块,即图片以16×16拆分而成的(要在拼块目录下运行命令),
#*.png为拼块格式,16×16为长宽数量,flag.png为合成后的图片名
montage *.png -tile 16x16 -geometry +0+0 flag.png    
  • 运行后在目录下可找到如下图片

拼接完成后的图片

  • 接着最关键的一点,调整图片长宽比为1:1,可以用PS->图像大小,以较大数值为边长,扩充为正方形(方便后续size的计算),否则后期gaps无法获得最佳效果

在这里插入图片描述

在这里插入图片描述

  • 接下来就是调用gaps脚本实现自动拼图排序(重点)

在这里插入图片描述

#此处的size为正方形小拼块的边长像素,由于刚刚经过拉伸,拼块从160×100变成了160×160
gaps --image=flag.png --size=160 --save     

在这里插入图片描述

补充:gaps各参数的作用

–image 指向拼图的路径
–size 拼图块的像素尺寸
–generations 遗传算法的代的数量
–population 个体数量
–verbose 每一代训练结束后展示最佳结果
–save 将拼图还原为图像

总结

最有挑战性的地方莫过于安装gaps和对gaps参数的把握,特别是sized的计算,需要先使图片的拼块恰好为像素最大的一条边的正方形,size=该边长像素。另外,pip和python库要提前安装完毕

引用链接
https://blog.csdn.net/m0_47643893/article/details/113778577
https://blog.csdn.net/qq_45836474/article/details/105353690
https://blog.csdn.net/fjh1997/article/details/107585782
https://github.com/nemanja-m/gaps
https://commandnotfound.cn/linux/1/493/montage-%E5%91%BD%E4%BB%A4

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值