当地记分板和机器人跟踪总统杯。

presidentsCTF-bot的Python项目详细描述


总统CTF机器人

跟踪President's Cybersecurity Cup的本地记分板和bot。在

快速入门

pip install presidentsCTF-bot
wget https://gitlab.com/royragsdale/presidentsctf-bot/raw/master/config.json
presidentsCTF
  1. 安装工具。在
  2. 使用现有事件获取基线配置。在
  3. 把记分牌拿来。在

默认情况下,这将从配置中获取所有事件并显示任何事件 记分牌上的活跃队伍。如果没有活动的事件,你就不会 显示任何东西。在

有关完整的选项集以及 Examples部分。在

特点

  • 轨迹随时间推移而解决。在
  • 本地注释已知团队。在
  • 突出显示活跃团队。在
  • 将更新发送到slack或twitter。在

背景

每个项目的记分板数据(例如团队第一轮)是公开的。 这个工具只获取json数据并进行一些本地处理来提供 更好的体验。在

示例

只有一个事件

通常只想显示当前事件。在

您可以使用一个配置文件(例如config.json或与--config)一起使用 只指定该事件。在

^{pr2}$

或者您可以使用--event选项来限制显示(6e8a18是 单打第一轮排行榜事件的前缀。在

presidentsCTF --event 6e8a18

更多团队

默认情况下,记分板只显示活跃的团队。如果事件没有直播 不会有结果的。以下标志将更改显示的内容。这些可能是 用于组合词。在

--active         show active teams (default=True)
--known          show known teams (default=False)
--top TOP        show top N teams
$ presidentsCTF --event 6e8a18 --top 3
##############################################################
Solo Round 1
##############################################################
|   Rank | Team           |   Score |   Solves | Remaining   |
|--------|----------------|---------|----------|-------------|
|      1 | DOD-Player-513 |    5500 |        9 | Final       |
|      2 | DOD-Player-280 |    5500 |        9 | Final       |
|      3 | DOD-Player-262 |    5500 |       10 | Final       |

日志求解

通过以循环方式运行fetch,该工具可以计算差异和 推断挑战解决。使用watch这样的工具很容易实现自动化。为 示例下面的调用也将捕捉每分钟的更新 as将接收到的json数据导出以供其他用途,并将更新消息存储到 log。在

$ watch -n 60 'presidentsCTF --event 6e8a18 --export | tee -a log'

已知团队

默认情况下,记分板只显示匿名球队名称。这就成功了 挑战性地跟随你的朋友和敌人。如果你知道你是谁 可以在"teams"部分下的config.json中添加自定义映射。在

通知

如果您希望实时传递更新,此工具还可以发布 slack或twitter的更新。请查看示例config.json以获取相关信息 需要使用此功能。在

"slack"配置的"watch"字段将团队名称映射到slack 用户id。这将@mention该团队中的任何更改的用户。在

注意使用已知团队功能和通知功能,以免 无意中暴露了谁在哪个队。在

虽然bot有twitter功能,但您可能应该遵循 非官方帐户https://twitter.com/presidentsCTF。在

仅筛选唯一更新

当日志解决问题时,您可能会得到大量的json文件 实际上是完全相同的。它们占用空间,减慢速度 只是没有必要。下面的命令是仅过滤掉的一个示例 包含更新的文件:

presidentsCTF --local . --quiet --debug 2>&1 | grep "loaded with changes" | awk '{print $7}' | xargs -I {} cp {} ./uniq/

假设:

  • uniq目录存在(唯一文件的目标是 复制到)
  • 该命令从包含用创建的json文件的目录(.)运行 --export

统计

对于一个活动来说,看看谁对每一点价值的挑战有多大是很有趣的 已经解决了,像平均解算持续时间。这个工具也是 附带一个presidentsCTF-stats命令,可用于现有的 数据库来快速显示这些统计信息。例如:

$ presidentsCTF-stats
Team Round 2 - fab611
---------------------
Teams on scoreboard  : 35
Solve Breakdown (Hours:Minutes)
###################################################
|   Points |   Solved | Min   | Average   | Max   |
|----------|----------|-------|-----------|-------|
|     1000 |       67 | 00:05 | 01:38     | 05:53 |
|     2000 |       61 | 00:24 | 04:17     | 06:41 |
|     3000 |        4 | 00:14 | 04:57     | 07:40 |
###################################################

--team标志也可用于查看特定团队的统计信息。在

注意:显示每个解决方案统计信息的能力依赖于日志解决 并根据Log Solves计算差异 第节。在

谢谢

总统杯网络安全竞赛组织者 事件。p的jchristman指出那个api端点。所有的虫子都是我的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GWT对话框从不显示帮助   java在简单的MapReduce作业中带来了极大的开销   javacom。mysql。jdbc。例外情况。jdbc4。MySQLIntegrityConstraintViolationException:列不能为null/onetoone映射   如何通过TCP/IP与Java和Labview进行通信,并发送浮点数据缓冲区?   java Apache camel与spring事件基本示例   java如何使我的秒表应用程序在完全关闭后仍能运行?   java Nutch爬网错误输入路径不存在   java是Mapreduce中按值传递还是按引用传递的键?   正则表达式替换java中的特定字符   Java DOM XML解析   java Eclipse未显示服务器的项目   使用Arraylist进行快速排序的排序Java实现疑难解答   java Split text包含字符串列表中的数字   检查Java中的两个lambda是否执行相同的代码?   java为什么dispatchTouchEvent避免在屏幕上单击?