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. Javascript-基础概念总结

    [作用域]javascript中的作用域可以理解为一个语句执行的环境大小,有全局的作用域,函数作用域和eval作用域.在JS中没有块级作用域.讲到作用域,不得不讲执行环境,执行环境在JS中是最为重要的 ...

  2. Less 编译工具

    Less 编译工具 虽然你可以选择在浏览器端使用Less,直接在页面中嵌入一个 Less.js 文件,你也可以选择在服务器端使用Less,使用命令行将Less文件编译成最终的CSS文件. 然而,这两种 ...

  3. 巧-微信公众号-操作返回键问题-angularjs开发 SPA

    在解决这个问题之前,一直处在很苦逼的状态,因为 现在绝大多数 前端模块都是 SPA 模式:所以由此而来出了许多的问题,当然我现在提的这个只是其中一个: 说一下解决方案: 1.技术栈 angularjs ...

  4. vue.js官方文档 PDF

    链接:https://pan.baidu.com/s/1jHMBb5W 密码:gsks

  5. 来自朝鲜的问候 golang入坑系列

    鸿渐于陆 本想着写满十八式,但按照目前的进度来看,是很难凑够十八式了.所以还是那句话,量力而行,适可而止.能写多少就写多少,我没法保证看完这本golang脱口秀,一定能成为golang大拿.但入了门, ...

  6. 常量和静态变量会先载入内存后在进行执行php代码

    static $test=1;//在php执行前就已经写入内存$test++;var_dump($test);static $test=10;//在php执行前就已经写入内存var_dump($tes ...

  7. Java学习之计算机基础(二)

    今天主要介绍原码.反码与补码的知识.了解原码.反码与补码的知识,可以帮助我们更好地理解在计算机内部是如何进行运算的,同时对于后面更好地学习和理解Java基本数据类型及其范围打下基础. 背景知识: 在计 ...

  8. 直播二:iOS中硬编码(VideoToolBox)

    硬编码相对于软编码来说,使用非CPU进行编码,如显卡GPU.专用的DSP.FPGA.ASIC芯片等,性能高,对CPU没有压力,但是对其他硬件要求较高(如GPU等). 在iOS8之后,苹果开放了接口,并 ...

  9. COM组件转换为.NET元数据

    .net开发中,需要调用一些COM组件,COM组件的元素转化为.net的元数据后才能很好的调用. 下面贴出我转的过程. 首先,打开C:\Program Files (x86)\Microsoft SD ...

  10. git以及github的初级入门(一)

    本身学习git的操作是没什么兴趣的,毕竟原本是win平台学的java开发,git下那么多复制的命令行操作确实比较让人头疼,直到昨天我打开计算机的时候,我放置项目的E盘,以及F盘,G盘盘符都不见了!!我 ...