BLE抓包

在进行网络开发的时候,抓包是一个很重要的调试过程,通过抓包可以分析网络传输的数据是否正确,可以深入理解网络传输过程。在物联网开发中,BLE低功耗蓝牙技术是一种非常通用的网络传输方式。在学习BLE过程中,除了要了解BLE基本架构,抓包是一个必要的环节,下面由华清远见·星创客讲师来介绍一下如何进行BLE抓包

一、工具

1、软件平台

集成开发环境:IAR

协议栈:TI-BLE-1.3.0

刷固件工具:smartRF   flash   program

Sniffer抓包工具

2、硬件平台

CC2540EM开发板

CC-Debug下载器

SmartRF04下载器

USB-dongle抓包工具

MiniUSB数据线

Ios/Android手机

二、抓包方式

1、专业工具usb-dongle

这是一个专业的抓包工具,可以抓取ZigBee、ble数据包。不过这个需要购买,增加成本

2、CC-Debug下载器+CC2540EM开发板

这种方式可以节省成本,毕竟你肯定有一个CC-Debug。但是这种方式对CC-Debug有要求,你必须给CC-Debug刷入专业的固件程序

3、SmartRF04 + CC2540EM开发板

这种方式可以节省成本,毕竟你肯定有一个SmartRF04。此方式也需要专业的固件程序

三、抓包的原理

其实抓包的原理很简单,既然你要抓取BLE数据包,那么你的抓包硬件必须是一个BLE设备,这样就可以接收到BLE的数据了。为了对数据进行透彻的分析,你需要给抓包设备输入固件,让它把整个数据包解析出来,然后显示在PC上位机。

四、准备工作

IAR、协议栈就不说了,到这个地步,你肯定已经把这两个装好了。

安装sniffer抓包工具,可以从网上下载一个,你还可以看一下sniffer的说明手册,里面有详细的使用方法。我们来看一下,sniffer支持哪些硬件抓包方案

五、采用下载器+CC2540EM来抓包

1、给CC2540EM开发板刷入抓包固件程序

这个固件程序在sniffer的安装目录下,我们可以找到目录“Packet Sniffer\bin\general\firmware”,看下面的截图

当前我们使用的是cc2540抓取BLE数据包,因此要刷入sniffer_fw_cc2540.hex(如果你想抓取ZigBee数据包,那么你需要下载cc2530的固件)。注意,当前这个开发板是用来抓包的哦,明确它的功能。

2、给另外一个CC2540开发板下载目标工程

由于BLE中常用的模式是“主从模式”,因此这里我给开发板下载一个从机工程,里面有5个特征值。至于主机,我们直接使用手机就可以了。提前给手机安装light blue工具,这个工具可以让我们随意的使用手机的蓝牙进行调试。

3、打开sniffer开始抓包

首先将下载器连接到第一步中的开发板(不是第二步 的哦),当然另外一头通过USB连接到PC。打开sniffer

这里首先要选择协议,我们在抓起BLE数据包,因此要选择“Bluetooth low energy”;如果你要抓ZigBee数据包,就要选择“ZigBee”。软件同时告诉我们,当前协议支持的抓包硬件方案。

4、sniffer使用

1)显示已连接的硬件

如果你的硬件是正确的,那么可以看到上面的结果,sniffer可以显示你当前的硬件。

2)设置频道

第二个标签用来设置信道。BLE会在37、38、39这三个信道来广播数据,你需要设置抓取哪个信道的数据。至于下面哪个“connect to initiator address”,我们后面再来研究。

3)点击按钮开始抓包

4)几种抓包结果

A.普通广播包

B.扫描应答包

C.连接请求包

D.请求读取数据包

E.请求数据应答包

5)显示设置

通过第三个标签,你可以设置显示的内容,上图是一个默认配置,显示所有的内容,你可以设置只显示某部分内容,如下图所示。这里对数据包,只显示包的类型,而不显示数据

6)过滤器

当周围的BLE设备太多的时候,我们可以抓取到很多的数据包,这时候你需要一个过滤器,让它只显示你的设备。我们可以在第6个标签中设置

APT代表包类型,这里我设置的是“发起连接请求”的包

AA5代表扫描应答包的mac地址,这里我设置的是“0x8030DCE03C17”

你还可以根据“field name”下拉列表来选择更多的过滤选项。

注意,这里的mac地址你要注意使用大写字母,小写字母不识别;另外前面还要加“0x”

7)设置自动跟踪已经连接的BLE设备

如果你仔细看就会发现一个问题,在第二步我们忽略了一个细节,现在该完善一下了。BLE设备会在3个频道广播数据,那么究竟最后在哪个频道连接的,之后又是在哪个频道传输数据的呢?sniffer可以帮你自动追踪,前提是你要设置第二步的address。这个address就是上面的“连接请求包”中的mac地址!当你设置好mac地址以后(别忘记前面打钩哦),接下来就尝试3个广播频道,经过若干次之后,总有一个频道会被你抓住的,祝你好运吧。。。

BLE抓包是怎么回事儿?的更多相关文章

  1. 【转】蓝牙ble app开发(三) -- 抓包

    原文网址:http://blog.csdn.net/lckj686/article/details/43156617 关于android 蓝牙app开发抓包的重要性在 android 蓝牙ble ap ...

  2. BLE广播数据的抓包解析

    前言: 报文由数据字节组成同时是按比特传输的,这就免不了牵涉到字节序的问题. 对于各个字节的传输,总是从最低位开始传输.如0x80是按00000001发送的,0x01是按10000000发送的. 同时 ...

  3. 第04节-BLE协议抓包演示

    在上几篇博客中,形象的讲解了BLE各个层的作用,各个层的数据结构.本篇博客将研究BLE协议抓包.在实际开发中,有一个中央设备(central)和一个外设(Peripheral).所谓中央设备就是指它可 ...

  4. 通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

    文/朱季谦 本文主要想通过动手实际分析一下是如何通过DNS服务器来解析域名获取对应IP地址的,毕竟,纸上得来终觉浅,绝知此事要躬行. 域名与IP地址 当在浏览器上敲下"www.baidu.c ...

  5. 网络抓包wireshark(转)

    转自 网络抓包wireshark   抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经 ...

  6. Wireshark图解教程(简介、抓包、过滤器)

    开篇语 Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息.与很多其他网络工具一样,Wireshark也使用pcap netw ...

  7. 【抓包工具】wireshark

    wireshark下载地址:http://download.csdn.net/detail/victoria_vicky/8819777 一.wireshark优劣势 wireshark劣势:只能查看 ...

  8. 网络抓包wireshark

    抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshar ...

  9. Android抓包方法(二)之Tcpdump命令+Wireshark

    Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...

随机推荐

  1. linux上mysql安装与卸载

    以下步骤运行环境是centos6.5   1.查找以前是否装有mysql命令:rpm -qa|grep -i mysql2.删除mysql删除命令:rpm -e --nodeps 包名3.删除老版本m ...

  2. POJ 1151 Wormholes spfa+反向建边+负环判断+链式前向星

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 49962   Accepted: 18421 Descr ...

  3. Linux服务器制定mysql数据库备份的计划任务

    首先,创建一个shell脚本: Shell #!/bin/bash mysql_pwd="1234567890" mysql_dump="/usr/local/mysql ...

  4. 生成ssl秘钥的方法(纯粹本人记录用的,勿踩)

    openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr cp server ...

  5. 三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  6. Vue.js学习 — 微信公众号菜单编辑器(一)

    学习里一段时间Vue.js,于是想尝试着做一个像微信平台里那样的菜单编辑器,在这里分享下 具体样式代码查看项目github 创建一个vue实例 <!DOCTYPE html> <ht ...

  7. 适合Linux新手的发行版有哪些?

    一个很古老的问题,找到适合的 Linux 发行版比简单的指出哪种 Linux 版本受欢迎更重要.为什么这么说?让我们设置一个情景:你有一位用户,很有可能,他过去大多数时候都是在 Windows 或者 ...

  8. db2服务器端授权

    昨天吃饭回来有点晚,没有及时写,今天补上.            db2服务器端安装就不说了,网上很多.今天具体说说授权吧.这是个麻烦事.            安装的时候会让你创建数据库.你就根据提 ...

  9. ubuntu 一些琐碎知识

    2017/09/01 ubuntu下面配置git公钥 $ git config --global user.name "Your Name" $ git config --glob ...

  10. 关于子线程更新UI

    大家都了解的子线程不能更新UI,所以普通青年比方我,遇到耗时操作用到线程时.不得不立刻想到了用handler传递来解决UI更细的问题. 普通青年的做法: 方案:使用Thread+handler方式,h ...