Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
CQPToolkit — 用于控制QKD设备和管理对称密钥的框架。请参见[项目页面在此](https://qcomms.gitlab.io/cqptoolkit/) | Kitploit
工具/GitLabGitLab/qcomms/cqptoolkit
嵌入式系统安全加密/解密工具网络安全密码学硬件安全
GitLabqcomms/cqptoolkit

CQPToolkit

用于控制QKD设备和管理对称密钥的框架。请参见[项目页面在此](https://qcomms.gitlab.io/cqptoolkit/)

查看仓库
61124年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

CQP Tool kit

该系统提供了多种组件,用于将QKD集成到安全系统中。它使用C++11编写,但采用[GRPC][]接口,因此可以与多种不同语言进行集成。

快速开始

要在本地运行该软件,请:

  • 下载并安装Ubuntu deb软件包 或
  • 克隆源代码,确保子模块已更新,并在本地构建

要克隆包含子模块的源代码:```bash git clone --recurse-submodules [email protected]:QComms/cqptoolkit.git

> 如果你没有使用 `--recurse-submodules` 进行克隆,可以通过在源码文件夹中运行 `git submodule update --init` 来更新子模块。

以下是编译该项目所需的依赖列表(请阅读下文以了解更详细的安装说明):```bash
sudo apt install pkg-config ca-certificates file build-essential cmake ninja-build libusb-1.0-0-dev libcurl4-openssl-dev \
	libcrypto++-dev libcap-dev uuid-dev libssl-dev libsqlite3-dev libprotobuf-dev libgrpc++-dev \
	libssl-dev protobuf-compiler protobuf-compiler-grpc checkinstall
mkdir build-cqptoolkit
cd build-cqptoolkit
cmake -G Ninja ../cqptoolkit && ninja

快速测试

从构建文件夹中,要运行两个站点(在同一台本地计算机上),每个站点都配备一个 QKD 设备,首先启动站点 "A",方法是启动一个站点代理并将一个 Alice “虚拟驱动程序” 连接到它: (如果已安装二进制文件,则从说明中省略命令的路径。)```bash ./src/Tools/SiteAgentRunner/SiteAgentRunner -p 8000 & ./src/Drivers/DummyQKDDriver/DummyQKDDriver -r localhost:8000 -a

(无输入内容,故输出空白)```bash
./src/Tools/SiteAgentRunner/SiteAgentRunner -p 8001 &
./src/Drivers/DummyQKDDriver/DummyQKDDriver -r localhost:8001 -b

这不会立即开始生成密钥,因为该系统设计为由管理系统控制,需要使用命令 SiteAgentCtl 建立连接。

  • 首先,你可以使用以下命令验证可用设备列表:```bash ./src/Tools/SiteAgentCtl/SiteAgentCtl -d -c localhost:8000
默认情况下,如果 *SiteAgentRunner* 和 *DummyQKDDriver* 在未指定配置文件 JSON 字符串参数的情况下启动,应该会产生类似以下的结果:```json
{
 "url": "<hostname>:8000",
 "devices": [
  {
   "config": {
    "id": "dummyqkd__0__16_alice",
    "kind": "dummyqkd"
   },
   "controlAddress": "<hostname>:34219"
  }
 ]
}

并且端口 8001 应该产生类似的结果```json { "url": ":8001", "devices": [ { "config": { "id": "dummyqkd__0__16_bob", "side": "Bob", "kind": "dummyqkd" }, "controlAddress": ":38367" } ] }

- 现在,可以通过调用以下代码来建立连接:

```py```bash
./src/Tools/SiteAgentCtl/SiteAgentCtl -c localhost:8000 -j localhost:8001

This will create a single hop from one site to the next, again more complex routes can be defined by using the -a option with a JSON string specifying the path.

After a few seconds there should be key available which can be tested by requesting a key.

NOTE: The -k parameter must be the url shown in the details of the second site, not "localhost:8001"```bash ./src/Tools/SiteAgentCtl/SiteAgentCtl -c localhost:8000 -k hostname:8001

链接可以通过 unjoin 命令停止:```bash
./src/Tools/SiteAgentCtl/SiteAgentCtl -c localhost:8000 -u localhost:8001

请注意,即使密钥生成已停止,只要站点代理仍在运行,该密钥仍然可用。 可以使用上述相同的密钥请求命令来请求它。

加密示例

如上所述,在启动同一本地计算机上的站点代理和驱动程序后,并开始用于密钥交换的链接后,还可以测试加密功能。

  • 首先,在 Bob 上启动“VPN”的一端,它将监听端口 9010 并连接到 Bob 的密钥存储:``` ./src/Tools/QTunnelServer/QTunnelServer -p 9010 --keystore-url=hostname:8001
现在启动 VPN 的 Alice 端,定义要创建的隧道。将打开两个端口,分别对应两侧的 9000 和 9001,任何进入这些端口的数据都将被加密、传输到另一端、解密并输出到另一个端口。```
./src/Tools/QTunnelServer/QTunnelServer --keystore-url=`hostname`:8000 --remote=localhost:9010 --start-node=tcpsrv://0.0.0.0:9000 --end-node=tcpsrv://0.0.0.0:9001

任何使用 tcp 通信的程序都可以使用这个端口,netcat 是一个简单的程序,它可以通过端口发送数据,在一端启动一个:``` nc localhost 9000

以及另一个方向上的:```
nc localhost 9001

在一侧输入的任何内容在按下回车后都会显示在另一侧。使用诸如 Wireshark 之类的工具检查通过端口 9000 和 9001 传输的数据包,将显示加密的数据以及使用的密钥 ID。

除了 tcpserv 之外,还可以创建其他形式的连接:

| 示例 | 描述 | | ============================= | ===================================================== | | tcpserv://0.0.0.0:1234 | 在端口 1234 上创建监听端口 | | tcp://127.0.01:1234 | 建立到本地主机 TCP 端口 1234 的连接 | | udp://0.0.0.0:1234 | 从此端口发送 UDP 数据包 | | tun://192.168.101.1/?netmask=255.255.255.0 | 创建带有 IP 地址的 IP 级隧道设备 | | tap://192.168.101.1/?netmask=255.255.255.0 | 创建以太网级 tap 设备 | | eth://eth0/?level=tcp | 创建原始套接字,级别可以是 tcp、ip 或 eth。 |

Progress

计划及已完成功能

  • 设备驱动
    • 兼容 IDQ Clavis 2 的驱动
      • 设备反馈
    • 兼容 IDQ Clavis 3 的驱动
    • 布里斯托大学手持自由空间设备
    • 布里斯托大学片上设备
  • 后处理
    • 异步系统对齐
    • 同步系统筛选
    • 纠错
    • 隐私放大
  • 多站点密钥管理(站点代理)
    • 控制 QKD 设备交换密钥
    • 在标准接口上提供预共享密钥:cqp::remote::IKey
      • 密钥可限制为仅供特定用户使用
    • 基于来自其他站点的密钥进行异或创建间接密钥
    • 通过配置文件、命令行参数或网络接口进行配置。
    • 使用 [Zeroconf][] 自动发现站点代理
    • 解析可信站点间链路的密钥(问题 #8)
  • 站点代理的网络管理
    • 站点可通过接口控制
    • 基于规则对站点代理进行静态/动态控制以在站点间创建密钥
  • 加密隧道控制器(类似 stunnel)
    • 使用 IKey 接口获取共享密钥。
    • 使用以下方式设置加密隧道
      • TCP/UDP 套接字
      • TUN/TAP 设备(又称 VPN)
      • 专用物理接口
    • 通过配置文件、命令行参数或网络接口进行配置。
    • 使用 [Zeroconf][] 自动发现站点代理和隧道控制器
  • 多平台
    • Linux
    • Windows(参见问题 #2)

希望这个项目能对科学研究和大型项目都有用。关于该项目的更多细节可在本文中找到。

若要为该项目做出贡献,请参阅贡献文件。

Installation

该系统目前适用于 Linux——未来计划支持 Windows。目前最简单的方式是从源码构建

Docker image

在 [gitlab 镜像仓库][] 中有一个可直接运行的 Docker 镜像。你可以使用 sudo docker run -it --rm registry.gitlab.com/qcomms/cqptoolkit/runtime 运行。在末尾添加命令可直接运行某些内容,例如使用 QKDSim 运行 QKD 密钥生成模拟:```bash sudo docker run -it --rm registry.gitlab.com/qcomms/cqptoolkit/runtime AlignmentTests

### Ubuntu 18.04+

你可以从 [Gitlab](https://gitlab.com/QComms/cqptoolkit/-/jobs/artifacts/master/download?job=package%3Adeb) 安装二进制包。解压 zip 文件并使用 `dpkg` 安装工具,它会抱怨缺少依赖项,但不用担心,第二行将会修复它们。```bash
sudo dpkg -i setup/*.deb build/gcc/CQP-*-Linux-{Algorithms,Networking,CQPToolkit,KeyManagement,QKDInterfaces,CQPUI,Simulate,Tools,UI,Drivers,IDQDevices}.deb
sudo apt install -fy

要安装开发文件(头文件和静态库),请运行 sudo dpkg -i build/gcc/CQP-*-Linux-*-dev.deb ; sudo apt install -fy 替代。

从源代码构建

当然,如果你不想修改系统库和依赖版本,你可以在一个已安装所有依赖的 docker 容器 中构建,该容器已经包含了所有依赖:```bash sudo docker run -it registry.gitlab.com/qcomms/cqptoolkit/buildenv

否则,从源代码构建需要安装 `setup/setupbuild.sh` 中列出的依赖项,目前它适用于 Ubuntu 和 Arch Linux。

使用 [git][] 从 [gitlab](https://gitlab.com/QComms/cqptoolkit.git) 克隆源代码,然后使用 [CMake][] 和 [gnu make](https://www.gnu.org/software/make/) 构建:
`--recurse-submodules` 添加了可选附加组件——其中一些组件的访问权限仅限于 UoB 及其合作伙伴,但即使没有它们,构建也能正常工作。```bash
git clone --recurse-submodules https://gitlab.com/QComms/cqptoolkit.git

如果你想获取所有子模块,并且拥有适当的登录凭据,运行:```bash git submodule update --checkout

现在,你可以进入你的本地仓库,并使用脚本安装依赖项(可能需要更改文件权限):```bash
cd cqptoolkit/setup
./setupbuild.sh

然后,你可以将项目构建到一个新文件夹中:```bash mkdir build-cqptoolkit cd build-cqptoolkit cmake ../cqptoolkit && nice make -s -j

this can be installed with

sudo make install

构建使用 [CMake][] 为不同平台生成 makefiles/解决方案等,并从空构建文件夹中调用,该文件夹将包含所有输出文件。调试构建会生成带有 "D" 后缀的包。
可以通过向 cmake 传递选项来控制构建,例如 `-DBUILD_TESTING=OFF`。运行 cmake 时使用 `-LH` 选项可列出可用开关。

要进行更改并开发库,建议安装 [QT Creator](http://doc.qt.io/qtcreator/),并通过 [选择 CMakeLists.txt 文件](https://codeyarns.com/2016/01/26/how-to-import-cmake-project-in-qt-creator/) 打开项目。建议启用并行构建,方法是进入 Projects->Build Steps->Details,并在工具参数中添加 `-j<number>`,参见 [so](https://stackoverflow.com/questions/8860712/setting-default-make-options-for-qt-creator)。
构建完成后,默认情况下,文件位于与项目文件夹同级的 `build-<项目名称>-<平台>-<目标>` 文件夹中。

> **关于 Ubuntu 上 protobuf + QT 的说明**
> 库 `qt5-gtk-platformtheme` 链接到旧版本的 protobuf,这将阻止我们的 QT 程序运行。
> 可以通过 `apt-get remove qt5-gtk-platformtheme` 移除这个可选依赖。

## 探索库

    @startuml
        title Applicaiton Overview

        component "QKD Device Drivers" as drv
        interface IDevice as idev
        drv - idev

        component "Device contol and\n Key storage" as sa
        interface IKey as ikey
        sa - ikey
        sa ..> idev

    package "Key consumers" as kc {
        component "Custom VPN" as tun
        component "Custom\nWeb Server" as nginx
        component "HSM bridge" as hsm
    }
    tun ..> ikey
    nginx ..> ikey
    hsm ..> ikey
下载工具