一个简单的 TAK 服务器和 COT 路由器
项目描述
塔基
taky - ATAK 的简单 COT 服务器
特征(和反特征!)
-
设计时考虑到安全性!
- 具有客户端密钥的一流 SSL 支持!
- 数据包服务器需要客户端密钥!
- XML 安全性的一些设计考虑!
- 不需要root即可运行!
-
轻量级 COT 路由器和数据包服务器
- 整个shebang只有~2k SLOC!
- 同时支持多个ATAK客户端!你可以在地图上看到它们!
- 实际上有点像样的 CoT 路由,有 Marti 支持!
- 一个几乎不懂 XML 的人编写的被破解的 XML 解析器!
- CoT 模型的高级 Pythonic 实现,在实现 CoT 技术方面只有 5 小时的综合行业经验!
-
设计、使用和配置的简单性
- 服务器只用一个 Ctrl+C 就关闭了!
- 线程安全?我们要去的地方,我们不需要线程!
- 用于生成 systemd 服务文件和客户端密钥的便捷 CLI 实用程序!
- 同步 I/O 多路复用的高级用法避免了
time.sleep
! - 无缘无故的愚蠢快!在旧的 Core i5-2500k 上路由 1000 个数据包/秒!
-
杂项
- 可选的 redis 支持的对象持久化存储!
- DPS 没有数据库!只是普通的旧文件存储!
- 经测试可在 Ubuntu 和 CentOS 上轻松部署!
寻找深入的功能比较?
要求
- Python 3.6 或更高版本
- lxml (BSD)
- dateutil (Apache 2.0 / BSD 3-clause)
- 烧瓶(BSD 3 条款)
- pyopenssl (Apache 2.0)
- 独角兽(麻省理工学院)
- 雷迪斯(麻省理工学院)
此应用程序是在 Ubuntu 20.04 上使用 Python 3.8 开发的,并使用 ATAK v4.2.0.4 和 WinTAK 进行了测试。它现在处于 beta 状态,甚至已经在 CentOS 8 docker 镜像上进行了测试!由于该软件包在 pip 上可用,它应该可以在大多数现代 linux 发行版和 docker 容器上运行!
安装
要安装最新版本,请从 pip 安装。打开外壳并运行:
$ sudo python3 -m pip install taky
如果您更喜欢开发版本(并不总是稳定的),您可以从源代码安装它。
$ git clone https://github.com/tkuester/taky
$ cd taky
taky $ python3 setup.py install
用法
开箱即用,无需配置,您可以构建一个简单的 COT 服务器,供您和您的朋友通过 TCP 使用!
$ taky -h
usage: taky [-h] [-l {debug,info,warning,error,critical}] [-c CFG_FILE] [--version]
Start the taky server
optional arguments:
-h, --help show this help message and exit
-l {debug,info,warning,error,critical}
Log verbosity
-c CFG_FILE Path to configuration file
--version show program's version number and exit
# Run taky on 0.0.0.0:8087
$ taky
INFO:root:taky v0.7
INFO:COTServer:Listening for tcp on :8087
部署 Taky
Taky 的编写考虑了易于管理。它应该易于安装、升级、构建(和运行)多个实例,使用 systemd 脚本进行管理,并遵守标准的 Linux 服务组织和包管理。此外,与操作系统无关。这在 Fedora 上应该和在 Ubuntu 上一样容易设置——尽管说明是为 Ubuntu 编写的。
请参阅文件夹中的 README_QUICKSTART.md 指南/doc
以启动和运行!有关更高级的设置,请查看 README_DEPLOYMENT.md 文件!
发展状况
就“独角兽测试准备水平”而言,taky
并不是高传承的太空独角兽。我们在 TRL 5 和 6 之间。马在外面,我们暂时称它为独角兽。用户报告说,它
taky
在 ANW2C 网络、L3Harris 无线电上运行良好,毫无怨言地传递了自定义的 COT 消息,甚至发现与联军在战场上的部署很糟糕!
COT 服务器是代码库中最成熟的部分。虽然一些更深奥的配置尚未经过测试,但标准 SSL 设置似乎相当可靠,并且在重负载下表现良好。话虽如此,XML 解析器存在已知的内存泄漏,但尚未解决。
数据包服务器 (DPS) 开始成熟,但尚未经过广泛测试。简单的客户端到客户端和客户端到服务器的传输似乎运行良好,尽管视频和发布轨道等一些功能尚未实现。
总而言之,taky
是作为一种爱好编写的实验性软件。您可以随意使用它,但请认真考虑各种故障模式,并在服务失败时制定应急计划,尤其是在生命、福祉或安全受到威胁的情况下。
请随时查看里程碑页面,了解下一个版本的 taky 计划! 欢迎请求请求和问题!
已知的问题
目前,taky 有两个已知问题。第一个是由 XML 解析器库引起的内存泄漏。除非 LXML 为其解析器编写修复程序,否则此问题可能无法解决。这意味着在几天内,内存使用量taky
将膨胀到过大,可能导致不稳定。
此外,OpenSSL 默认设置的更改(在 Ubuntu 22.04、OpenSSL 3.0.2 中可见)当前导致客户端证书被 ATAK 拒绝。ATAK 已经记录了一个关于此的问题,并且正在计划更新证书生成以使用旧的默认值生成证书。