【CTF工具】自动拼图工具gaps的安装与使用

  写这个文章主要是记录一下我踩过的坑,因为github上面提供的gaps工具的安装以及使用方法都和网上的安装教程有一些出入,经过自己参考大佬的教程和自己摸索终于给他搞定了,接下来我们就来正式进入安装环节;

 

我这里使用的系统环境是kali 2023,其他的系统安装过程应该大同小异,如有不同请自行百度踩坑;

 

1.首先我们需要安装图片拼接工具montage

apt-get install graphicsmagick-imagemagick-compat #安装命令

 2.安装gaps

  首先我们需要下载gaps的源代码包文件;

git clone https://github.com/nemanja-m/gaps.git #可以使用git下载到本地

  也可以直接访问后面的网址到github上下载源代码

https://github.com/nemanja-m/gaps

 

  这里为也为提供网盘一个网盘下载链接:Gaps(密码:ddrg)

  将压缩包解压到本地之后,我们打开目录进行安装:

sudo apt install python3-poetry
sudo apt-get install python-tk
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple

如果出现错误,请将账户切回普通用户即可

 出现以下字符,或者在终端中输入gaps显示为蓝色,即为安装成功;

 3.使用方法

 这里我们就以【青少年CTF】中的这道题为例演示下使用方法:

题目链接

 题目前置分析过程这里就不赘述了,我们直接看拼图环节:

  我们对题目分析之后,拿到了这么一堆照片的碎片,我们需要对其进行拼图成一张完整的照片,才能获得图片上面的flag

   1、首先我们将图片复制到我们的虚拟机(kali 2023)中,并在文件夹下打开终端:

   2.接着我们使用montage工具对照片进行拼合

montage 输入文件路径 -tile 长宽数量 -geometry 拼图间隙 输出路径

示例: montage ./*.png -tile 8X6 -geometry +0+0 flag.png  

 输出的新图片 flag.png

 3.这时候我们会发现图片还是乱的,所以我们需要借助gaps工具进行排列

  

gaps run 预处理图片路径 输出路劲 --参数

示例:gaps run ./flag.png newfalg.png --generations=48 --population=20 --size=100

 

输出结果:

 

至此安装完成;

 

这里将工具作者的说明截图,以备查询;

打乱照片

 解题拼图:

 

 

 

### Kali Linux 中的 GAPS 或相关问题 Kali Linux 是一种基于 Debian 的发行版,主要用于渗透测试和安全审计。在其生态系统中,“GAPS”可能指代多种含义,具体取决于上下文环境。如果这里的“GAPS”指的是 Sikuli 工具框架的应用场景,则可以将其理解为图形自动工具在 Kali Linux 上的功能实现或潜在局限性。 #### 图形界面自动化的背景 Sikuli 是一款开源框架,用于通过图像识别技术来支持 GUI 自动化测试[^1]。它允许用户利用屏幕上的视觉元素(如按钮、图标或其他 UI 组件)来进行交互操作。然而,在像 Kali Linux 这样的环境中部署 Sikuli 可能会遇到一些特定的技术挑战: - **依赖项兼容性**:由于 Kali Linux 基于较新的 Debian 版本,某些旧版本的软件包可能会系统的默认配置不兼容。这可能导致安装过程中出现问题或者运行时行为异常。 - **权限管理**:作为一款专注于安全性研究的操作系统,Kali 对文件访问和进程执行有着严格的控制策略。因此,当尝试使用 Sikuli 执行敏感任务时,可能需要额外调整权限设置以确保正常工作。 #### 解决方案建议 针对上述提到的问题以及更广泛的 “issue or feature”,以下是几种常见的处理方法: 1. **更新库文件** 确保所有必要的 Python 库已正确安装并保持最新状态。可以通过 pip 安装最新的 sikulixapi 并验证其功能是否满足需求。 2. **虚拟机隔离开发环境** 如果发现直接在裸机上运行存在困难,考虑采用 VirtualBox 或 VMware 创建独立的实验平台。这样不仅可以保护主机免受意外更改影响,还能更容易重现任何观察到的行为模式以便调试分析。 3. **日志记录增强诊断能力** 启用详细的错误报告机制可以帮助快速定位根本原因所在位置。对于复杂脚本来说尤为重要的是捕获每一个步骤的状态变化情况从而缩小排查范围。 下面展示了一个简单的例子程序片段用来演示如何启动应用程序窗口并通过匹配图片找到对应控件完成点击动作: ```python from sikuli import * app_path = "/usr/bin/example_app" openApp(app_path) wait(5) # Give time for app to load completely. click(Pattern("button_image.png").similar(0.90)) ``` 此代码假设目标应用已经存在于指定路径下,并且有一个名为 `button_image.png` 的截图保存在同一目录里表示要触发的那个按键图案特征描述符。 ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪汪家的碎冰冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值