Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Cawdog — CAWODOG 是一个概念验证项目,演示如何保护部署在离线工业机器上的基于 Python 的 AI 模型。 该项目通过三个递进阶段(0 → 2)展示了: * 一个朴素的 Python AI 应用如何能被轻易地逆向工程, * 攻击者如何从打包的二进制文件中提取模型,以及 * 如何通过 ONNX 转换、模型加密和独立的运行时引擎来加固 AI 部署。 该 PoC 使用一个有趣的狗检测器模型(“猫世界统治集团”)来说明适用于 AI 驱动控制系统的真实工业知识产权保护概念,例如 Starlinger 的 StarX 平台。 它作为随附白皮书《为离线工业 AI 部署加固 Python 知识产权》的参考实现。 | Kitploit
工具/GitLabGitLab/lycis/cawdog
嵌入式系统安全静态分析加密/解密工具代码分析逆向工程硬件与物联网安全论文与研究学习与教育AI 安全
GitLablycis/cawdog

Cawdog

查看仓库
99个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →

关于

CAWODOG 是一个概念验证项目,演示如何保护部署在离线工业机器上的基于 Python 的 AI 模型。 该项目通过三个递进阶段(0 → 2)展示了: * 一个朴素的 Python AI 应用如何能被轻易地逆向工程, * 攻击者如何从打包的二进制文件中提取模型,以及 * 如何通过 ONNX 转换、模型加密和独立的运行时引擎来加固 AI 部署。 该 PoC 使用一个有趣的狗检测器模型(“猫世界统治集团”)来说明适用于 AI 驱动控制系统的真实工业知识产权保护概念,例如 Starlinger 的 StarX 平台。 它作为随附白皮书《为离线工业 AI 部署加固 Python 知识产权》的参考实现。

分享

CAWODOG —— 面向基于 Python 的工业 AI 的 IP 保护概念验证

CAWODOG(猫世界统治集团)是一个趣味十足但贴近现实的概念验证,用于保护部署在离线工业机器上的基于 Python 的 AI 模型。

核心理念:
以一个能够识别狗(CAWODOG 的“敌人”)的小型图像分类器为例,将其封装到一个简单的应用中,然后逐步加固部署,以防止 IP 被窃取。

该 PoC 是作为一份内部白皮书的配套而设计的:

为离线工业 AI 部署加固 Python IP


目标

本仓库逐步演示:

  • 从朴素的 Python 部署中窃取模型有多么容易
  • 如何将 Python 应用拆分为 UI 与引擎
  • 如何使用以下方式打包并加固引擎:
    • Nuitka onefile 构建
    • ONNX 导出
    • 模型工件的对称加密
  • 每个阶段攻击者的工作流程是怎样的

仓库布局

root@kitploit:~
.
├── 0/                     # Step 0 – Unhardened baseline
│   ├── model/             # Training + inference code
│   ├── app/               # Gradio-based web UI
│   ├── requirements.txt
│   └── (optional) build / run helpers
│
├── 1/                     # Step 1 – Packaged with Nuitka (Level 1)
│   ├── app/               # Same UI, adapted entrypoint
│   ├── model/             # Same model logic as step 0
│   ├── build.sh           # Nuitka onefile build script
│   └── requirements.txt
│
├── 2/                     # Step 2 – Encrypted ONNX model (Level 2)
│   ├── model/             # Training + ONNX export + encryption
│   ├── engine/            # Engine module (decryption + ONNX runtime + scoring)
│   ├── app/               # UI calling the engine only
│   ├── hardening/         # Encryption key + utilities (dev only)
│   ├── build.sh           # Nuitka onefile build script
│   └── requirements.txt
│
└── attacker/              # Attacker tooling (optional, for demo)
    ├── run_and_extract.sh # Finds Nuitka temp dir and lists contents
    ├── steal_model.sh     # Copies model file out of extracted payload
    └── use_stolen_model.py# Uses stolen model in a separate script

前置条件

  • Python 3.13(或 3.11+,如果你决定调整 Nuitka 构建)
  • 一个可用的虚拟环境(python -m venv .venv)
  • 操作系统:已在 macOS 上测试;Linux 应只需少量修改即可运行
  • 建议:熟悉 git、pip 以及基本的命令行操作

大多数步骤需要:

root@kitploit:~
pip install -r requirements.txt

第 0 步 —— 基线(未加固)

文件夹: 0/ 目标: 一个带有已训练模型和简单 Web UI 的普通 Python 应用。无任何保护。

包含内容

  • 一个小型图像分类器(PyTorch + torchvision),经过训练可区分:
    • dog(狗)与 not_dog(非狗)
  • 训练脚本(model_training.py),功能包括:
    • 自动将 data/dog 和 data/not_dog 拆分为训练集/验证集
    • 保存模型文件,例如 model/models/dog_model.pt
  • 推理脚本(model_inference.py),功能包括:
    • 加载 dog_model.pt
    • 返回“狗”的概率
    • 计算一个简单的“敌人评分”,作为玩具式的启发规则
  • Gradio 应用(app/gradio_app.py),功能包括:
    • 允许在浏览器中上传图片
    • 调用推理与敌人评分
    • 显示概率以及 CAWODOG 结果

如何运行第 0 步

从仓库根目录开始:

root@kitploit:~
cd 0
python -m venv .venv
source .venv/bin/activate          # on Windows: .venv\Scripts\activate
pip install -r requirements.txt
  1. 准备数据:

    root@kitploit:~
    0/data/
      dog/
        <dog images>.jpg
      not_dog/
        <non-dog images>.jpg
    
  2. 训练模型:

    root@kitploit:~
    python -m model.model_training
    

    这将生成类似:

    root@kitploit:~
    model/models/dog_model.pt
    
  3. 运行 Gradio 应用:

    root@kitploit:~
    python -m app.gradio_app
    
  4. 打开打印的 URL(默认 http://127.0.0.1:7860)并用图片进行测试。

安全特性

  • 模型文件以明文 PyTorch 权重(.pt 文件)形式存储。
  • 所有模型逻辑与评分逻辑均为可读的 Python 代码。
  • 任何人都可以复制项目目录并复用所有内容。

这就是“加固前”的样子。

第 1 步 —— 第 1 级加固(Nuitka Onefile)

文件夹: 1/ 目标: 使用 Nuitka 将应用打包为单个可执行文件。 安全效果: 使其看起来像一个产品,但实际上无法保护 IP。

与第 0 步相比的变化

  • 为 Nuitka 提供一个专用入口点(例如 app/main.py 或 cawodog_app.py)
  • 构建脚本(build.sh),功能包括:
    • 安装依赖
    • 使用 --standalone 和 --onefile 参数运行 Nuitka
    • 将模型文件(dog_model.pt)包含在打包产物中
  • 最终产物是一个 onefile 二进制文件(例如 cawodog_step1_nuitka)。

构建示例(简化版)

root@kitploit:~
cd 1
source .venv/bin/activate
./build.sh

构建完成后,你会得到类似:

root@kitploit:~
./cawodog_step1_nuitka

运行它将像之前一样启动 Gradio UI,只不过现在是从单个可执行文件启动。

攻击者模拟(可选,使用 attacker/)

attacker 文件夹展示了攻击者如何:

  1. 运行 onefile 二进制文件(它会解包到临时文件夹)
  2. 在 $TMPDIR 下定位 Nuitka onefile 解包目录
  3. 从该目录中复制出 dog_model.pt
  4. 使用 use_stolen_model.py 在应用之外运行预测

要点: 第 1 级并非有意义的保护。它只是打包,不是安全。

第 2 步 —— 第 2 级加固(加密 ONNX 引擎)

文件夹: 2/ 目标: 在模型层面引入真正的 IP 保护。 安全效果: 竞争对手无法通过简单地复制文件来使用该模型。

主要概念

  1. 模型格式转换

    • 使用 PyTorch 的 ONNX 导出,将 dog_model.pt 转换为 dog_model.onnx。
  2. 模型加密

    • 使用 AES-GCM 将 dog_model.onnx 加密为 dog_model.enc
    • 将对称密钥存储在 hardening/dev_model.key 中(仅用于 PoC 目的)
  3. 引擎抽象

    • 引入 engine/core.py,其功能包括:

      • 在运行时解密 dog_model.enc
      • 将其加载到 ONNX Runtime 中
      • 暴露诸如 predict_is_dog() 和 enemy_score() 之类的函数
  4. UI 作为编排层

    • app/gradio_app.py 不再接触原始模型文件或内部实现。
    • 它只调用引擎函数。

第 2 步的典型工作流程

root@kitploit:~
cd 2
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  1. 训练(或复用)模型(与第 0 步相同,但在 2/ 目录内):

    root@kitploit:~
    python -m model.model_training
    
  2. 导出为 ONNX:

    root@kitploit:~
    python -m model.export_to_onnx
    # produces model/models/dog_model.onnx
    
  3. 加密 ONNX 模型:

    root@kitploit:~
    python -m hardening.encrypt_model
    # produces model/models/dog_model.enc and hardening/dev_model.key
    
  4. 使用 Nuitka 构建(通过 build.sh):

    root@kitploit:~
    ./build.sh
    

    构建完成后会打印一个密钥。你需要将环境变量 CAWODOG_MODEL_KEY_HEX 设置为该密钥,程序才能加载加密模型。任何不同的密钥都会导致错误。

  5. 运行生成的 onefile 二进制文件。 UI 的行为应与之前相同。

安全特性

  • 磁盘上的模型文件(dog_model.enc)是加密的。
  • 普通的攻击者无法:
    • 直接在 PyTorch 中加载 dog_model.enc
    • 轻易地检查或修改模型
  • 攻击者现在需要:
    • 知道加密密钥
    • 理解 AES-GCM 解密逻辑
    • 提取并重建 ONNX 文件

它仍然没有与硬件信任根绑定,熟练的逆向工程师最终仍然可以重建模型,但门槛已经比第 1 步高得多。

威胁模型与局限性

本 PoC 专注于:

  • 保护交付到离线客户现场的 AI 模型
  • 提高工业间谍活动的成本
  • 展示渐进式加固等级,而非一蹴而就的“完美安全”

它并不声称:

  • 能完全阻止国家级行为者的逆向工程
  • 能取代基于硬件的安全模块(TPM、HSM、可信执行环境)
  • 能解决更新/补丁分发或安全启动问题

如何使用本仓库进行演示

典型的叙述流程:

  1. 第 0 步 —— 基线

    • 展示一切内容是多么容易被检查和复用。
  2. 第 1 步 —— 打包(Nuitka onefile)

    • 展示漂亮的单个二进制文件。
    • 使用 attacker/ 脚本演示模型仍然多么容易被窃取。
  3. 第 2 步 —— 加密的 ONNX

    • 展示仅复制 dog_model.enc 已不再足够。
    • 讨论这如何对应到工业客户的实际部署场景。

然后你可以继续讨论未来的更高级别(此处尚未实现):

  • 机器绑定密钥(TPM、加密狗)
  • 原生 Rust/C++ 引擎
  • 反调试与完整性检查
  • 安全飞地 / 远程证明

许可证

root@kitploit:~
MIT License

Copyright (c) 2025 Daniel Eder

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

下载工具