从观察题目发现有121张图片,其中1张是损坏的,需要先删除
查看发现每张图片的像素大小是200x100(长X高)
查看相关信息发现此题涉及到gaps和montage的联合使用
montage的作用是把乱序图片先按拼图的总大小拼成一张图
gaps的作用是将一张图按指定的size切割并尝试将其拼好
使用VMware® Workstation 16 Pro、kali2023搭建了实验环境。不详细描述具体安装过程,在操作过程中遇到了几个问题,简要描述如下:kali2023安装完毕要修改root账号密码,要自动启动ssh服务,更换国内源。
第一步
sudo apt-get update
第二步
sudo apt-get install kali-root-login
第三步
sudo passwd
新安装的kali是没有开启ssh服务的,需要进行手工配置。
1、打开配置文件,命令:vi /etc/ssh/sshd_config ;
2、执行命令后,使用快捷键:shift + 冒号,然后输入命令:set nu,出现行号,方便查找;
3、找到31——39行,然后输入 i(编辑) 下方会出现插入两字,就可以开始编辑内容了。
4、修改成下图的样子就行了。
开机自动启动ssh服务
update-rc.d ssh enable //系统自动启动SSH服务
update-rc.d ssh disabled // 关闭系统自动启动SSH服务
使用service ssh status看到running表示正常运行着,然后就可以使用WinTerm去远程连接kali了。
1、编辑源配置文件,命令:vim /etc/apt/sources.list。
2、官方源
# deb http://http.kali.org/kali kali-rolling main non-free contrib
# deb-src http://http.kali.org/kali kali-rolling main non-free contrib
扩展:deb代表软件的位置,deb-src代表软件的源代码的位置;
linux下面的文件
.rpm 二进制包
.deb 二进制包
.tar.gz 源码包
3、国内源
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
sudo apt-get install graphicsmagick-imagemagick-compat #安装命令
首先我们需要下载gaps的源代码包文件;git clone https://github.com/nemanja-m/gaps.git #可以使用git下载到本地
也可以直接访问后面的网址到github上下载源代码https://github.com/nemanja-m/gaps
删完损坏照片后一共有120张图片
随意打开一张图片查看图片属性
我们可以看到每张图片都是200x100,200的宽和100的高
应该长:10张图片
,宽:12张图片
,那么拼起来的总图就应该是长:2000 x 宽:1200
把文件夹拖到kali下,到该文件夹的目录下打开终端使用命令
因为我们要拼的图就是120张,长有10张,宽有12张,所以是10x12
montage -tile 10x12 -geometry 400x200+0+0 *jpg flag.jpg
-geometry +0+0的用处是让图片之间没有间隙
tile后是从左往右张数x从上往下张数(宽的图片数x高的图片数)
*.jpg指目标为目录下所有的jpg格式图片
拼图碎片的大小越大,最后解出来的图片越精准。(但图片太大的话,gaps进程会被kill掉,所以合理的大就行了)
所以我们这里把原来的图片长度200,高度100,我们就统一放大2倍,所以-geometry 400x200
把拼接好的flag.jpg图片拖到gaps下的目录下打开终端执行命令
gaps run flag.jpg flag-flag.jpg --generations=40 --population=120 --size=100
“–generations” 设置的参数多少都可以,最好就等于原始图片的数量,也就是piece的数量
“–size” 这个参数是最关键的,程序会根据这个选项设置的参数来判断piece的数量
size如何确定?
这道题的图片有一个特点,那就是宽是长的两倍,所以我们可以将一张子图片视为两张拼图(每张拼图是正方形的)
于是有,拼图的宽度,也就是size为200/2=100
得到flag