snstac/pytak
GitHub: snstac/pytak
PyTAK是一个用于快速集成TAK的Python库和命令行客户端。
Stars: 238 | Forks: 64
# 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。标签:底层编程, 计算机取证, 逆向工具