degun-osint/geo_challenges
GitHub: degun-osint/geo_challenges
CTFd地理挑战插件,通过地图交互替代传统坐标答题,提升寻谜体验。
Stars: 11 | Forks: 3
# 警告:由于之前的安全问题,此插件已被重构。
(它现在也兼容CTFd3.8)
# CTFd 地理挑战插件
一个为CTFd设计的的地理挑战插件,允许挑战创建者设置基于位置的谜题。玩家必须找到特定的地理坐标来解决挑战。
## 概述
此插件最初是为 [Oscar Zulu](https://oscarzulu.org) 开发的,旨在为夺旗竞赛增添地理元素,现在已向更广泛的CTFd创作者社区提供。
## 功能
- 创建需要用户查找特定地理位置的挑战
- 设置可接受的答案的自定义容差半径
- 地理位置搜索的编码支持
- 多语言界面(英语、法语、西班牙语)
- 使用Leaflet和OpenStreetMap的交互式地图界面
- 通过地图点击或搜索选择坐标
- 显示容差区域的视觉反馈
- 适用于移动设备的响应式设计
## 安装
1. 将此仓库克隆到CTFd安装目录的 `plugins/` 目录中:
cd /path/to/CTFd/plugins
git clone https://github.com/yourusername/geo_challenges.git
2. 重启CTFd实例以加载插件。
## 用法
### 创建地理挑战
1. 在CTFd管理面板中,转到“挑战” → “创建挑战”
2. 选择“geo”作为挑战类型
3. 填写标准字段(名称、类别、描述等)
4. 设置分数值并在地图上选择目标位置
5. 设置容差半径(单位:米)
6. 保存您的挑战
### 解决地理挑战
玩家将:
1. 在查看挑战时看到一个交互式地图
2. 通过点击地图或使用搜索框放置标记
3. 提交答案
4. 如果所选位置在目标位置的容差半径内,则获得分数
## 配置
该插件开箱即用地使用OpenStreetMap,但您可以自定义以下方面:
- 如果您偏好其他地图提供程序,则在JavaScript文件中瓦片服务器URL
- 容差半径的默认值
- 通过i18n.js文件进行UI文本翻译
## 国际化
该插件支持多种语言。请向 `i18n.js` 文件添加更多翻译。
## 要求
- CTFd v3.0.0 或更高版本
- 启用了JavaScript的现代浏览器
## 许可证
本项目根据GPLv3许可证授权 - 详情请参阅LICENSE文件。
## 感谢
- [Leaflet](https://leafletjs.com/) 提供地图界面
- [OpenStreetMap](https://www.openstreetmap.org) 提供地图瓦片
- [Leaflet Control Geocoder](https://github.com/perliedman/leaflet-control-geocoder) 提供地理编码功能
## 支持开发者
如果您发现此插件对您的CTF活动有用,请考虑支持开发者:
## 贡献
欢迎贡献!请随时提交拉取请求。
1. 叉出项目
2. 创建您的功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交您的更改 (`git commit -m '添加一些很棒的功能'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开拉取请求
标签:CSDN, CTFd3.8兼容, Geo挑战, GPD坐标替代, Leaflet, OpenStreetMap, OSM, 交互式地图, 位置谜题, 地图插件, 地理定位, 地理挑战, 地理编码, 坐标选择, 多语言, 安全重构, 容差半径, 插件开发, 数据可视化, 移动端适配, 自定义脚本, 跨平台, 逆向工具