logo
0
0
WeChat Login
Chief<520@zut.edu.cn>
docs: 移除许可证章节

English | 简体中文

🦋 X-FLY 扑翼机逆向控制项目

Python License Status Auth cnb

通过蓝牙通信拦截与逆向分析,实现用电脑远程控制扑翼机



✨ 项目简介

本项目是一个扑翼机(仿生鸟)蓝牙控制逆向工程项目。通过分析手机APP与扑翼机之间的蓝牙通信协议,实现了用电脑代替手机APP进行飞行控制的完整方案。

核心功能

  • 🔍 蓝牙通信拦截:抓包分析APP与设备的通信数据
  • 🔧 协议逆向分析:解析蓝牙GATT特征值与控制指令
  • 💻 电脑端控制:通过Python脚本实现完整的飞行控制
  • 🎮 键盘控制:使用WASD键像玩游戏一样控制扑翼机
  • 📊 指令测试工具:系统化的字节测试与组合指令验证

📖 项目简介

本项目是一个扑翼机(仿生鸟)蓝牙控制逆向工程项目。通过分析手机APP与扑翼机之间的蓝牙通信协议,实现了用电脑代替手机APP进行飞行控制的完整方案。

核心功能

  • 🔍 蓝牙通信拦截:抓包分析APP与设备的通信数据
  • 🔧 协议逆向分析:解析蓝牙GATT特征值与控制指令
  • 💻 电脑端控制:通过Python脚本实现完整的飞行控制
  • 🎮 键盘控制:使用WASD键像玩游戏一样控制扑翼机
  • 📊 指令测试工具:系统化的字节测试与组合指令验证

🎯 适用场景

  • 硬件安全研究
  • 蓝牙协议逆向学习
  • 机器人/无人机控制开发
  • 嵌入式系统分析

📂 项目结构

X-FLY/ ├── scripts/ # 控制脚本目录 │ ├── code字节测试.py # 单bit测试+组合指令测试 │ ├── wasd.py # WASD键盘控制(推荐) │ ├── verify_control.py # 连接验证脚本 │ ├── code.py # 基础控制脚本 │ ├── code2.py # 方向测试 │ ├── code3.py # 油门测试 │ ├── code4.py # 组合测试 │ └── code5.py # 完整控制测试 │ ├── platform-tools/ # 蓝牙抓包工具 │ ├── capture_windows.bat # Windows抓包脚本 │ ├── android_capture_tool-*.bat # Android抓包工具 │ └── BT_HCI_*.curf # 抓包数据文件 │ ├── 分组数据包/ # 抓包数据保存目录 │ └── *.log # 通信日志文件 │ ├── docs/ # 文档目录(待完善) ├── temp/ # 临时文件目录 ├── README.md # 项目说明文档 └── .cnb.yml # CNB配置文件

🚀 快速开始

环境要求

  • 操作系统:Windows / macOS / Linux
  • Python版本:3.8 或更高
  • 蓝牙适配器:支持BLE(低功耗蓝牙)4.0+

安装依赖

pip install bleak

连接扑翼机

  1. 打开扑翼机电源,等待指示灯闪烁
  2. 运行控制脚本:
python scripts/wasd.py
  1. 脚本会自动扫描并连接名为"XFLY"的设备

使用WASD控制

W: 前进(居中+油门) A: 左转+油门 D: 右转+油门 S: 停止(居中+无油门) Q: 完全停止并退出

🔬 技术细节

蓝牙GATT特征值

特征UUID功能说明
00007771-8e22-4541-9d4c-21edae82ed19设备初始化与模式控制
0000acc1-0000-1000-8000-00805f9b34fb飞行控制指令(方向+油门)

初始化指令

连接后必须发送初始化指令:

f9 04 51 01 56 5a 52 01 53 5a

控制指令格式(2字节)

格式:BB AA(十六进制)

  • 第一字节(BB)- 方向控制

    • 00 - 停止
    • 01 - 左转
    • 20 - 居中(直飞)
    • 40 - 右转
    • 80 - 强右转
  • 第二字节(AA)- 油门控制

    • 00 - 无油门
    • 02 - 小油门
    • 03 - 中油门
    • FF - 满油门

常用指令示例

# 启动+居中前进 2002 # 居中 + 小油门 # 左转+油门 0102 # 左转 + 小油门 # 右转+油门 4002 # 右转 + 小油门 # 停止 0000 # 完全停止

📝 脚本说明

主要脚本

脚本名功能适用场景
wasd.pyWASD键盘控制日常使用,推荐
code字节测试.py系统化字节测试协议分析
verify_control.py连接验证首次连接测试

测试脚本

脚本名测试内容
code.py基础控制功能
code2.py单方向测试
code3.py单油门测试
code4.py方向+油门组合
code5.py完整控制测试

🛠️ 开发工具

蓝牙抓包

Windows系统

cd platform-tools capture_windows.bat

Android系统: 使用 android_capture_tool-*.bat 配合Wireshark分析

抓包数据分析

使用Wireshark打开.curf.log文件,分析蓝牙通信协议


⚠️ 注意事项

  1. 安全第一:在开阔场地测试,远离人群和障碍物
  2. 电量充足:确保扑翼机电池电量充足
  3. 连接稳定:保持蓝牙适配器与扑翼机距离在3米以内
  4. 初始化:每次连接必须发送初始化指令
  5. 持续发送:控制指令需要持续发送(约30-50ms间隔)以保持状态

🔧 故障排除

无法扫描到设备

  • 检查扑翼机是否已开机
  • 确认蓝牙适配器支持BLE
  • 尝试重启蓝牙适配器

连接失败

  • 确保扑翼机未被其他设备连接
  • 检查蓝牙驱动是否正常
  • 尝试关闭电脑蓝牙后重新开启

控制无响应

  • 检查是否已发送初始化指令
  • 确认指令格式正确(4位十六进制)
  • 尝试增加发送频率

📚 参考资料

🤝 贡献

欢迎提交Issue和Pull Request!


⭐ Star

如果这个项目对你有帮助,请给个Star支持一下!