CTF比赛的交流模式探索

写这篇文章的目的是想阐述一下新得出的一个比赛交流的工作流, 也希望能和大家一起聊聊这个问题(x

有想法的师傅可以直接评论或者联系我聊一聊

起因

事情的起因如下

相信大家如果石墨用的比较多的可能都或多或少经历过这样的事情, 特别是在前几天的某比赛的时候, 石墨文档经常断线, 推测的原因如下

  1. 同时使用的人数较多, 服务器压力大
  2. 没有充钱

鉴于这两个原因都是不可抗力, 和 @q4n 讨论了之后决定更新一下比赛的时候讨论的工作流

原来的交流模式

先谈一下原来的交流情况

石墨文档

之前我们是用石墨文档作为在线的协作平台, 模板的话可能和许多战队的都比较接近

如下图

优点

  • 简单, 直接创建即可
  • 可以显示每个段落的作者

缺点

  • 响应慢, 特别是最近一段时间
  • 免费版没有权限控制

当然最后一个不是石墨的问题, 是我的问题

微信

微信大家都懂

优点

  • 每个人都有

缺点

  • 每次比赛参赛的队友可能不同, 需要重新建个群或者一直在队里的大群讨论, 对没有参赛的大哥可能会有困扰
  • 如果同时讨论多道题目, 场面十分混乱
  • 对于代码或者文件等, 微信的支持不够友好
  • 群聊管理十分差劲, 聊天记录不好整理

疯狂diss微信, 相比于其他的聊天软件(不包括qq), 我一直不明白微信能够广泛应用的原因, 明明是个功能如此难用的软件, 但是他确实做到了qq都没有做到的事情, 在中国基本上每个人都有, 但是我还是要说

放弃任何以微信为主体的工作流

并且由于石墨文档没有什么通知功能, 我们经常的交流如下

协作平台

首先是选择协作平台, 我们已知的选择大概如下

  • Google Docs
  • hackmd
  • notion
  • 语雀
  • 飞书

Google Docs

优点

  • Google信仰加成
  • 稳定性高

缺点

  • 需要科学的姿势
  • 对MD支持不好

hackmd

优点

  • 有本地搭建的docker版本, 线下赛用起来很方便
  • 完整的MD支持

缺点

  • 需要科学的姿势
  • 是双栏的编辑模式, 而非所见即所得(例如typora)
  • 界面相比其他产品略微简陋

notion

优点

  • 支持MD和一些其他的特性
  • 模块化设计, 设计很特别

缺点

  • 小团队的开发产品, 不如其他大公司的技术支持
  • 可以直接访问, 不过连通性一般

语雀

优点

  • 完整的MD支持
  • 稳定性高
  • 可以创建资源共享的知识库等等, 分类具体

缺点

  • 免费版每个知识库最多可以有10个成员

飞书

优点

  • 界面上很舒服, 客户端体验很好
  • 完整的MD支持和其他的功能拓展
  • 目前为完全免费

缺点

  • 在线文档不能看到是谁编辑的内容

腾讯文档由于风评不好就不列入讨论了

权限配置

在上述的优缺点之外, 还有一个比较重要的功能是群组的权限设置, 由于我没有对所有产品进行这个测试, 就没有列在上面的优缺点里面

在我的体验中, 飞书和语雀都有群组/团队这个概念, 我们可以创建一个团队, 通过邀请的方式添加其他的成员, 然后将协作文档的阅读和编辑权限控制在群组中

这样的话对于团队的一些内容会有比较方便的保护, 可以避免一些意外的情况发生, 大家写东西也可以更随意一些

最后选择

我们的选择基于下面的两点

  • 网络的连通性, 国内的平台会更方便一些
  • 权限控制, 语雀免费版的知识库只能支持10人(团队最多是50人), 飞书目前没有限制

因此目前打算选择飞书来进行协作

目前的主要问题是没有像石墨那样可以显示每个段落的作者, 给飞书发了一封邮件, 不知道会不会被实现2333

不过总体的体验感觉还是很好的

颜值是第一生产力

聊天平台

这个聊天平台主要是为了改进微信群聊的问题, 毕竟这个软件实在是太反人类了

主要的选择是

  • 飞书
  • slack
  • zulip

首先提两个概念

  • workspace: 团队空间, 每个团队独享, 通过管理员/成员邀请进入, 所有的内容都基于这个空间
  • channel: 频道, 可以理解为微信的群聊
  • topic: 频道的主题, 用于将channel分为不同的部分, 可以理解为微信群聊中的群聊(嵌套)

飞书

优点

  • 界面美观
  • 客户端好用
  • 国内平台, 连接速度快, 还能和在线文档协作

缺点

  • 不能分channel和topic, 功能仅相当于一个微信群

slack

优点

  • 界面美观
  • 可以分channel进行沟通
  • 客户端好用

缺点

  • 不能分topic
  • 国内连通性不好

zulip

优点

  • 可以分channel进行沟通
  • 可以分topic

缺点

  • 界面相对简陋
  • 客户端是web套壳, 不好用
  • 国内连通性不好

最后选择

我们希望的场景是

  • 有团队的workspace
  • 可以按比赛创建相应的channel, 飞书不太方便
  • 每个channel中按不同的题目创建相应的topic, slack不支持topic分类

所以我们决定使用zulip, 界面如下

交流模式

平台

  • 文档: 飞书

  • 聊天: zulip

实现

比赛前

首先在飞书和zulip都创建相应的workspace, 并且让队友都加入, 没有加入的成员或者是外部的成员都不能看到聊天内容和文档

飞书

然后在飞书创建好相应的比赛文档, 贴上比赛的相关信息

再把飞书的权限配置好

将链接分享在群里

zulip

zulip中先配置为中文 (可选) 设置 - 显示设置

并打开channel的通知 设置 - 通知设置

社群许可中进行权限配置 设置 - 社群 - 社群许可

配置链接器, 可以快速打出对应的链接 设置 - 社群 - 链接器

可以参考我的配置

# 比赛地址
#(?P<addr>addr)
https://race.ichunqiu.com/2020wdb1st#%(addr)s

# 文档地址
#(?P<doc>doc)
https://shimo.im/docs/xxx#%(doc)s

添加团队的表情包便于吹牛(重要)

设置 - 社群 - 自定义表情

创建比赛的channel, 并先创建几个题目的topic

比赛中

比赛中我们可以将 思路和脚本, 文件 都放置在文档中, 类似于之前石墨文档的使用方式

注意要将自己的名字加入working列表中

基本都是按照MD的写法去写

如果有什么想法和要了解的东西, 在zulip对应题目的topic发消息就可以了

可以直接贴图, 发送文件, 也支持md, 可以在这里查看相关的格式

比较完整的思路还是建议放到文档中, 然后在zulip里面喊一下(x

这里需要强调几个点

  • 记得将自己的ID加入working列表
  • 如果你要暂时离开一下, 请在文档中将你现在的思路描述清楚, 并在zulip里和大家说一下
  • 如果做出来一道题目, 请在文档里把题目的状态改为SOLVED, 并将解题的过程稍微整理一下放在文档里面, 方便其他的人参考

基本上在赛前建好相关的东西之后, 比赛的时候只需要愉快的聊天做题就可以了

比赛后

大家可以参考文档和zulip上的记录整理自己的wp, 发到微信群里大家一起学习, 并提醒一下负责提交的队友

没有做出来的题目就抓紧时间复现和总结

后记

零零散散写了一大片2333

上面的内容都是基于你能相信你的队友的前提, 如果没有这个前提那团队协作将毫无意义, 而高兴的是, 我有一群这样值得信赖的队友

Kap0k, 冲鸭!


作者: cjm00n
地址: https://cjm00n.top/CTF/how-to-chat-in-ctf.html
版权声明: 除特别说明外,所有文章均采用 CC BY 4.0 许可协议,转载请先取得同意。

网鼎杯2020预选赛Writeup De1CTF2020 Writeup

评论