snstac/pytak

GitHub: snstac/pytak

PyTAK是一个用于快速集成TAK的Python库和命令行客户端。

Stars: 238 | Forks: 64

PyTAK Logo # Python 团队意识工具包 (PyTAK) PyTAK 是一个 Python 库和命令行 TAK 客户端,用于构建小型、实用的 [TAK](https://tak.gov) 客户端、服务器和网关。它可以嵌入到其他应用程序中,或直接用于在 TAK 网络上发送和接收目标坐标 (CoT) 数据。 ## 安装 ``` python3 -m pip install pytak ``` ## 命令行示例 从 CLI 直接连接到 TAK 入门 URL: ``` pytak "tak://com.atakmap.app/enroll?host=takserver.example.com&username=myuser&token=mytoken" ``` 在不连接的情况下生成入门数据包(PKCS#12,PEM,ATAK + iTAK ZIPs): ``` pytak dp 'tak://com.atakmap.app/enroll?host=takserver.example.com&username=myuser&token=mytoken' ``` 请参阅文档中的 [入门数据包](https://pytak.rtfd.io/en/latest/onboarding/)。 ## 快速示例 ``` import asyncio, xml.etree.ElementTree as ET from configparser import ConfigParser import pytak class MySender(pytak.QueueWorker): async def handle_data(self, data): await self.put_queue(data) async def run(self): while True: root = ET.Element("event", version="2.0", type="t-x-d-d", uid="myMarker", how="m-g", time=pytak.cot_time(), start=pytak.cot_time(), stale=pytak.cot_time(3600)) await self.handle_data(ET.tostring(root)) await asyncio.sleep(20) async def main(): config = ConfigParser() config["mytool"] = {"COT_URL": "tcp://takserver.example.com:8087"} config = config["mytool"] clitool = pytak.CLITool(config) await clitool.setup() clitool.add_tasks(set([MySender(clitool.tx_queue, config)])) await clitool.run() asyncio.run(main()) ``` ## 功能 - **TAK 协议支持**:XML(TAK 协议 v0)和 Protobuf(TAK 协议 v1,通过 `takproto`) - **多种传输方式**:TCP、TLS、UDP 单播、UDP 多播(Mesh SA)、UDP 广播、文件、stdout、WebSockets - **TLS 客户端认证**:PEM 证书、PKCS#12(`.p12`)、密码保护密钥 - **TAK 注册**:从 `tak://` 入门 URL 自动注册证书;`pytak dp` 导出 ATAK/iTAK 连接包 - **Marti REST API**:通过 TAK 服务器的 HTTP API (`marti://` URL 方案) 发送/接收 CoT - **TAK 数据包**:导入包含服务器连接设置和证书的 `.zip` 预设包 - **无需外部依赖**:纯 Python asyncio 核心;可选的 TLS 注册和 Protobuf 扩展 ## 文档 完整的文档在 **[pytak.rtfd.io](https://pytak.rtfd.io/)**,包括安装、配置、示例和故障排除。 ## 许可证 & 版权 版权所有 Sensors & Signals LLC https://www.snstac.com 根据 Apache License,版本 2.0(“许可证”)进行许可; 除非遵守许可证,否则不得使用此文件。 您可以在 http://www.apache.org/licenses/LICENSE-2.0 获取许可证副本。 除非适用法律要求或书面同意,否则在许可证下分发的软件 按“原样”基础分发,不提供任何明示或暗示的保证。 有关许可证的具体语言管理权限和 限制,请参阅许可证。 asyncio_dgram 是由 Justin Bronder 版权所有,并按 MIT 许可证许可,有关详细信息,请参阅 pytak/asyncio_dgram/LICENSE。
标签:底层编程, 计算机取证, 逆向工具