背景
作为一小白初次了解ctf,遇到每一题都磕磕绊绊,记录一拼图的题目。
题目是给一张图片,然后找出flag。当我们获得一堆小图片(如下图所示)时,便可以通过 montage 进行拼图,进而通过 gaps 优化获得所需的flag信息。
一些报错
ImportError: No module named 'skbuild'
ERROR: Command errored out with exit status 1: /usr/bin/python /usr/local/lib/python2.7/dist-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmpSrV_xN Check the logs for full command output.
相关环境
- VMware 15.5.2
- ubuntu 16.4
安装相关工具
目的是将上图拼接为图二。
这里需要使用到 montage 和 gaps。建议在linux环境下测试。这里直接按成功的步骤进行演示。
montage安装
网上说的 pip install montage
安装失败,采用如下命令进行安装。
#Debian
apt-get install graphicsmagick-imagemagick-compat
#Ubuntu
apt-get install graphicsmagick-imagemagick-compat
#Alpine
apk add imagemagick6
#Arch Linux
pacman -S imagemagick6
#Kali Linux
apt-get install graphicsmagick-imagemagick-compat
#Raspbian
apt-get install graphicsmagick-imagemagick-compat
#Docker
docker run cmd.cat/montage montage
安装 gaps
- 使用git下载 https://github.com/nemanja-m/gaps.git
git clone https://github.com/nemanja-m/gaps.git
cd gaps
- 安装所需包
这里有两种方案。
- 可以直接按 clone下来的requirements.txt 文件安装。
pip install -r requirements.txt
- 如若失败,可以分别安装
分别安装numpy,opencv-python,matplotlib,pytest,pillow
。这里可以加上镜像源,下载速度将大大加快。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy==1.16.2
下载成功之后,去 requirements 文件中修改对应的版本号。下图是我下载的版本。
接着通过sudo python setup.py install
进行安装:
由于Ubuntu内置python2.7,当使用 python3 安装不成功时,考虑用上述命令。
结果展示
图中的 16* 16 为图片大小,64 为小图片的宽和高。相关命令如下:
montage ./flag/*.png -tile 16x16 -geometry +0+0 flag02.png
gaps --image=flag02.png --size=64 --save
至此,最终的图片便已成功保存下来,不出意外flag就在图上。
在实践的过程中,踩过大量的坑,如安装opencv-python
、安装PIL
报错。为方便大家检索,相关报错信息在上文列出。