1.Android低功耗蓝牙串口助手app v1.0(显示发送接收数据)
2.蓝牙马蹄锁分析过程文章小结
3.英伟达jetsonano连接外部蓝牙设备报错?蓝牙类型
4.蓝牙协议及其源代码分析内容简介
5.基于QT的安卓手机蓝牙APP开发
Android低功耗蓝牙串口助手app v1.0(显示发送接收数据)
Android低功耗蓝牙串口助手v1.0的全新升级,致力于提供更强大的串口程源功能与优化的用户体验。这款应用现在支持循环发送、编程自定义进制设置,源码有蓝牙串以及实时显示发送和接收数据的口编状态。设计上的蓝牙类型环球黑金卡源码改进包括一个直观的布局,其中包含一个用于输入指令的串口程源 EditText 和一个一键发送的 Button,用户界面更加简洁易用。编程
布局核心是源码有蓝牙串XML代码,采用<ConstraintLayout>,口编构建了一个包含 EditText 和 Button 的蓝牙类型LinearLayout,配合<ScrollView>用于显示数据接收和发送区域,串口程源用户可以实时监控数据交换。编程
技术实现上,源码有蓝牙串我们精心设计了BleVariable类,口编这个类封装了BleCallback状态,如连接状态(0:未获取,1:连接,2:已断开)、写入状态(0:未写入,1:成功,2:失败)、ios实例源码接收状态(布尔值,未接收到/接收到)等,以及蓝牙GATT实例的保存、MTU设置的修改结果,以及服务发现和通知开启的成功/失败状态。getters和setters方法使得状态管理更为灵活,而判断方法则简化了开发者的工作流程。
同时,我们创建了DataConstant类,专门用于展示关键状态信息,如连接状态、MTU设置状态、服务发现结果、通知开启状态以及写入和接收数据的状态变更。这些状态变量的getter和setter方法,使得数据展示更为直观,用户能够快速理解蓝牙操作的实时进展。
在DataTransmissionReceptionActivity中,接收状态的处理更为智能化,采用异步方法Startthread()来更新UI,确保在接收不同状态时,ps命令源码数据处理和UI更新不会相互干扰。发送指令时,会检查输入并利用蓝牙连接发送,同时启动子线程,确保操作的流畅性。此外,还提供了getTime()方法获取实时时间,让数据展示更具实时性。
在数据展示部分,我们采用了动态表格设计,adDataOne()和adData()方法确保了基本状态的实时更新,并能根据需要扩展行数,以适应更多的数据展示。在初始化阶段,我们细心地为发送按钮添加了点击事件监听,当用户输入指令并点击时,会启动子线程并进行数据发送。
尽管源码链接和提取码已删除,但这款应用在性能优化和用户体验上都取得了显著提升。无论是在低功耗蓝牙通信中,还是鲜花整站源码在数据的实时显示和管理上,Android低功耗蓝牙串口助手v1.0都展现出了强大的功能和卓越的实用性。
蓝牙马蹄锁分析过程文章小结
观文章有感,做个知识点小结整理
工具
Sniffle是英国网络安全公司NCC Group在年底开源的一个基于使用TI CC/CCx2硬件的蓝牙5和4.x LE嗅探器(抓包工具),最新的release版本是年8月发布的1.7。使用Sniffle需要购买指定的蓝牙开发板,并刷入固件才能使用,电脑通过串口与蓝牙开发板通信。
GitHub: github.com/nccgroup/Sni...
TI CC/CCx2硬件的蓝牙5和4.x LE嗅探器(抓包工具): CCR 数据表、产品信息和支持 | 德州仪器 TI.com.cn
逆向
jadx一款java编写的开源图形化反编译工具
⭐GDA不依赖java且支持apk, dex, odex, oat, jar, class, aar文件的反编译, 支持python及java脚本自动化分析
GDA主页-亚洲首款交互式Android反编译器
刷固件
Sniffle项目中fw文件夹是固件源码,如果只是抓包的话,在Sniffle项目release1.7中有上传的编译好的固件,根据型号下载。
搜索相关资料得知,可以在TI网站上安装UNIFLASH软件来进行刷固件: ti.com/tool/UNIFLASH?...
抓包测试
Sniffle抓包方式是开发板抓到数据之后,通过串口发送给PC,PC收到数据包之后再根据设定条件来过滤数据,最后根据参数决定是否保存成pcap文件。因此需要用参数-s 指定某个串口,串口可以通过设备管理器查看,共有两个,安乐居源码选择UART的串口:
从README中可以知道python_cli中的sniff_receiver.py为抓包脚本,支持多个参数,这里简单介绍下常用的设置:-a 只抓广播包,不知道设备mac地址的情况下,可以用此参数 -m 只抓特定mac地址的数据包,可以从广播包中分析出目标设备mac地址 -o 抓包结果保存到pcap文件
下图是命令sniff_receiver.py -s COM7 -m xx:xx:xx:xx:xx:xx -o data.pcap的显示:
下图是保存的pcap文件中的BLE开始连接过程截图:
低功耗蓝牙(BLE)协议
BLE (低功耗蓝牙)协议入门--整体介绍-腾讯云开发者社区-腾讯云 (tencent.com)
蓝牙低功耗概览 | Android 开发者 | Android Developers (google.cn)
手机端HCI
如何抓取Android手机蓝牙HCI - 知乎 (zhihu.com)
⭐ Android Bluetooth HCI log 详解 - 简书 (jianshu.com)
pcap文件
pcap文件详解 - CharyGao - 博客园 (cnblogs.com)
Wireshark文件pcap的格式详细解析有实例(Global Header、Packet Header)_wireshark格式-CSDN博客
使用 Wireshark 导入/导出pcap文件——Wireshark 新手教程(3) - 哔哩哔哩 (bilibili.com)
AES加密
什么是AES加密?详解AES加密算法原理流程 - 知乎 (zhihu.com)
⭐ 密码学基础:AES加密算法 - 知乎 (zhihu.com)
蓝牙属性通知(Handle Value Notification)
⭐ 低功耗蓝牙学习笔记-属性协议-CSDN博客
蓝牙BLE从机Peripheral讲解二(句柄指示\确认(Handle Value Indication\Confirmation)) - SweetTea_lllpc - 博客园 (cnblogs.com)
ECB加密模式
ASE加密模式介绍(ECB、CBC、PCBC、CFB、OFB、CTR)-CSDN博客
AES五种加密模式_aes模式-CSDN博客
ECB模式解读-CSDN博客
密码算法 之三分组密码工作模式 (ECB \ CBC \ CFB \ OFB \ CTR \ XTS)浅析_xts模式-CSDN博客
Android logcat
Android logcat命令详解 - 许忠慧 - 博客园 (cnblogs.com)
bleak低功率蓝牙库
其实各语言都有该类型库哦 个人比较热衷于rust,个人觉得其在内存耗损上比python好点(当然,编码也会复杂一点)
bleak · PyPI
hbldh/bleak: A cross platform Bluetooth Low Energy Client for Python using asyncio (github.com)
GATT
蓝牙BLE: GATT Profile 简介(GATT 与 GAP) - 夜行过客 - 博客园 (cnblogs.com)
蓝牙:GATT,属性,特性,服务_ble服务和属性特征-CSDN博客
⭐ 六 蓝牙低功耗(BLE)协议栈 之 GATT层_characteristic declaration-CSDN博客
Characteristics在代码中是UUID形式,在数据包中是以Handle形式,Handle与Characteristics是一一对应的,对应关系是在GATT中定义。
英伟达jetsonano连接外部蓝牙设备报错?
解决英伟达Jetson Nano连接外部蓝牙设备报错问题的步骤如下:
首先,检查Jetson Nano默认内核是否支持RFCOMM协议,执行命令:lamb@lamb-desktop:~$ zcat /proc/config.gz | grep RFCOM
结果显示:CONFIG_BT_RFCOMM=y, 但CONFIG_BT_RFCOMM_TTY未设置,这意味着默认内核不支持RFCOMM协议。
解决方法是重新编译kernel源代码,具体步骤参考这篇博客:blog.hypriot.com/post/n...,在menuconfig的panel上找到RFCOMM选项,激活它。
编译完成后,使用命令sudo rfcomm bind 0 ::3E:4B::,可以创建出/dev/rfcomm0串口。
至此,Jetson Nano成功连接外部蓝牙设备,问题解决。对于Linux的了解还需继续深入,持续学习。
蓝牙协议及其源代码分析内容简介
本书从实际工程角度,系统地介绍了蓝牙技术原理和协议体系结构,并基于金瓯蓝牙开发平台,以大量的源代码和例程数据分析了L2CAP、RFCOMM和SDP三层协议。全书共章,主要内容包括:蓝牙概述及金瓯蓝牙开发平台、射频协议(RF)、基带协议(BB)、链路管理协议(LMP)、主机控制接口(HCI)、逻辑链路控制与适配协议(L2CAP)、串口仿真协议(RFCOMM)、对象交换协议(OBEX)、服务发现协议(SDP)、电话控制协议(TCS)以及蓝牙操作模式等。
本书内容详实,适合从事蓝牙产品开发的工程技术人员参考,同时也可供高等学校通信、计算机和相关专业大学生阅读。通过本书的学习,读者可以深入理解蓝牙技术原理和协议体系结构,掌握蓝牙开发的实践技能,为蓝牙产品的开发和应用提供理论支撑和技术指导。
书中以大量的源代码和例程数据分析了L2CAP、RFCOMM和SDP三层协议,使读者能够直观地理解这些协议的工作原理和实现细节,为蓝牙产品的开发和应用提供实际参考。此外,书中还详细介绍了蓝牙开发平台和相关协议的使用方法,使读者能够快速上手蓝牙开发工作。
本书内容涵盖了蓝牙技术的各个方面,包括蓝牙概述、射频协议、基带协议、链路管理协议、主机控制接口、逻辑链路控制与适配协议、串口仿真协议、对象交换协议、服务发现协议、电话控制协议以及蓝牙操作模式等。读者可以通过本书的学习,全面了解蓝牙技术的原理和应用,为蓝牙产品的开发和应用提供理论支撑和技术指导。
总之,本书是一本系统介绍蓝牙技术原理和协议体系结构的优秀教材,适合从事蓝牙产品开发的工程技术人员和高校通信、计算机和相关专业大学生阅读。通过本书的学习,读者可以深入理解蓝牙技术原理,掌握蓝牙开发的实践技能,为蓝牙产品的开发和应用提供理论支撑和技术指导。
基于QT的安卓手机蓝牙APP开发
基于跨平台的QT技术,本文详细介绍了如何开发一个能在安卓手机上运行的蓝牙应用。首先,利用QT的兼容性,可以将原本用于串口调试的代码轻松转化为蓝牙功能,无需修改,编译器会自动处理。本文作者以HC-蓝牙模块和华为荣耀V手机为硬件平台,QT 5..7版本和Windows 系统作为软件基础。
软件设计简单,仅需基本的C++ QT知识,主要实现蓝牙状态监测、开关控制、扫描配对和数据传输。蓝牙设备搜索通过QBluetoothDeviceDiscoveryAgent进行,用户界面展示了蓝牙设备列表,点击后可以进行配对连接。蓝牙的打开和关闭通过按钮操作,确保蓝牙处于从机模式以供手机搜索。
为了连接蓝牙,需要在项目文件中添加相关库,并创建蓝牙句柄。本文还介绍了如何使用discoveryAgent和socket进行蓝牙设备查找、建立连接,以及发送和接收数据。蓝牙的Uuid在连接时至关重要,需要确保与目标设备的对应模式一致。通过简单的例子,展示了如何通过QBluetoothAddress和socket的函数实现蓝牙链接和数据交换。
感兴趣的读者可以通过后台回复“蓝牙小车”获取完整源码和操作视频,直接体验基于QT的安卓手机蓝牙APP开发过程。整个开发流程直观易懂,无论是初学者还是有一定QT基础的开发者,都能快速上手。