littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于C++和Python的BLEPKAP协议示例项目

项目简介

本项目基于C++和Python实现了BLE Public Key Authenticated Pairing(BLE-PKAP)协议。该协议基于标准的BLE带外配对机制(LE SC OOB),利用受信任的椭圆曲线公私钥对实现设备间的相互认证,为BLE设备配对提供了更安全、灵活的解决方案,弥补了传统BLE认证方法的不足。

项目的主要特性和功能

  1. 安全配对:运用BLE-PKAP协议完成设备间的公钥认证配对,比传统BLE认证方法(Just-Works、Numeric Comparison、Passkey Entry)更安全、灵活。
  2. 双角色实现:包含运行在Nordic nRF52840 - DK开发板上的嵌入式响应器应用(C++实现)和运行在Linux上的Python发起器脚本,共同展示了BLE-PKAP相互认证在简单BLE交互中的应用。
  3. 设备交互:安全连接建立后,用户可通过发起器脚本与响应器设备交互,如控制LED开关、观察设备按钮按下状态。
  4. 日志记录:嵌入式应用利用SEGGER Real Time Transfer(RTT)功能输出日志,便于调试和跟踪。

安装使用步骤

安装前提条件

  1. 构建嵌入式应用需安装Nordic nRF5 SDK、相关命令行工具、合适的ARM gcc工具链以及常见构建工具(如make和ccache),还需安装SEGGER J - Link Software and Documentation Pack用于调试嵌入式应用或查看日志输出。
  2. 运行发起器应用需要Python 3,并安装cryptographyPyGObject Python模块。

具体安装步骤如下: bash cd ~/Downloads sudo dpkg -i JLink_Linux_V*_x86_64.deb sudo usermod -a -G dialout ${USER} sudo apt-get install git make ccache netcat-openbsd pip3 install --user cryptography pygobject

构建嵌入式应用

bash export NRF5_SDK_ROOT=${HOME}/tools/nRF5_SDK_17.0.2_d674dde export NRF5_TOOLS_ROOT=${HOME}/tools/nRF-Command-Line-Tools export GNU_INSTALL_ROOT=${HOME}/tools/gcc-arm-none-eabi-10.3-2021.07/bin/ export PATH=${PATH}:${NRF5_TOOLS_ROOT}/nrfjprog cd ~/ble-pkap make clean make

初始化nRF52840 DK

在首次安装嵌入式应用之前,需要擦除nRF52840 - DK开发板的闪存并安装Nordic SoftDevice镜像。 bash make erase make flash-softdevice

烧录嵌入式应用

bash make flash-app

查看日志输出

bash ./start-jlink-gdb-server.sh

运行发起器脚本

bash sudo python3 ./ble-pkap-initiator.py <MAC-ADDRESS>

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】