nRF Sniffer 抓取BLE广播包一些设置

nRF Sniffer 抓取BLE广播包一些设置,第1张

前提条件: nRF Sniffer抓包环境 已经搭建完成。

打开 wireshark软件

即可 启动动抓包。抓包页面如下:

如果只扫描一个信道需要 在上图 Adv Hop  设置,默认37,38,39 .只需要修改成37 然后旁边的箭头点击下即可。

选中任意一条数据 双击 即可打开数据协议分析,按照BLE协议文档查看即可。

数据显示列设置 :在任何一列需要编辑的列 右击

标题 名称根据自己填 类型这里选择 dalta 时间差 可以查看两个数据包之间时间差:

增加RSSI 列:

整体数据过滤MAC: btle.advertising_address ==cc:00:01:aa:15:36  

该设备广播频率是5Hz 只在37信道广播,可以看到基本200mS周期,但是由于空中冲突和接收性能问题,并不是每一条都是200mS间隔。

其他一些过滤 设置 都是wireshark通用的内容,大家可以慢慢摸索,wireshark很强大的。。。

包名:com.denachina.aurora

stormsniffer安卓版是一款非常方便的工具软件,这款软件可以快速的帮助我们查看网络抓包。人家可以更好的监控我们的手机,这样就可以利用手机监控数据包来实现抓包自由,这样我们就可以环网络安全一片宁静,有这方面需求的小伙伴们可以下载体验一下哦。

软件特色

1、是一款非常不错的抓包工具。它很小,可以从各个方面给用户带来方便。

2、Storm Sniffer可以在这里轻松打开和使用,并且可以自由地用于提取音频。

3、有强大的功能设置,一个好用的网络抓包神器,多方面有效的为大家省去不少麻烦。

4、移动便捷服务器可以随时打开使用, *** 作简单,轻松的使用!

软件优势

1、软件可以让你清楚的了解网络中的各种问题和事件。

2、Storm Sniffer羊了个羊抓包软件作为工具接口,直接允许软件使用。

3、通过软件界面,可以非常有效地查看各种数据分析场景。

软件点评

Storm Sniffer软件是针对苹果系统的打造的手机http抓包工具,直接在手机上就能抓包使用了,而且针对各种软件、游戏都支持抓包,Storm Sniffer抓包工具支持重写、脚本等等功能,需要的用户快来下载吧!

厂商:

官网:暂无

名称:Storm Sniffer

MD5值:f7d7fe3ec81c89e1dfef780e950f7c68

0. 前言

来源:《Computer Security》A Hands-on Approach — Wenliang Du

所有的代码/文档见github:https://github.com/da1234cao/computer_security

chapter 12 Packet sniffing and spoffing.

这一章有点硬核。知识点不难,但对socket编程有点要求。

我看过《unix网络编程》第一卷 前五章 ,背景知识还是相当欠缺。这章内容虽然看完,基本明白,但距离实际动手完成一个简单的有线/无线嗅探工具还挺远。本文,暂时仅仅看看书上的嗅探实现。

1. 摘要与总结

首先介绍了网卡的工作原理,嗅探需要网卡的工作模式(杂乱模式/监控模式)。

为了提早过滤过滤不需要的数据包,介绍了BPF。

接着用三种方式:普通套接字,原生套接字,pcap API,递进的讲述了包的嗅探过程。

2. 包(Packet)的接收

2.1 网卡

参考文章:网卡工作原理详解 、关于网络的混杂模式 、实战无线网络分析(篇一)无线监听

简单了解下:

网卡(Network Interface Card,NIC)是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。每块网卡有一个硬件地址,被称为MAC地址;网卡接入网络,使得用户可以通过电缆或无线相互连接;用户A要发送信息给B,通过电缆或者无线进行广播;每一块网卡都将广播的内容拷贝到自己的网卡内存中,检查头部信息中的MAC地址,判断是否是发送给自己的。如果是则将其拷贝进入内存,否则丢弃;因为MAC唯一,所以最后只有B接受了用户A的信息。

维基百科:混杂模式(promiscuous mode)。一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。网卡的混杂模式一般在网络管理员分析网络数据作为网络故障诊断手段时用到,同时这个模式也被网络黑客利用来作为网络数据窃听的入口。在Linux *** 作系统中设置网卡混杂模式时需要管理员权限。在Windows *** 作系统和Linux *** 作系统中都有使用混杂模式的抓包工具,比如著名的开源软件Wireshark。

监控模式(monitor mode)。 类似于有线网络的混杂模式。 无线网卡在监视模式下运行时支持嗅探。 与以太网不同,无线设备面临附近其他设备的干扰。 这将严重阻碍网络连接的性能。 为解决此问题,WIFI设备在不同的信道上传输数据。接入点将附近的设备连接到不同的信道,以减少它们之间的干扰影响。 Wifi网卡还设计为在整个可用带宽和通道的片上进行通信。 将这些卡置于监视模式时,它们将捕获802. 1I帧,这些帧在它们正在侦听的通道上传输。 这意味着,与以太网不同,无线网卡可能会丢失同一网络上的信息,因为它位于不同的信道上。 大多数无线网卡不支持监视器模式或制造商禁用了该模式。

2.2 (BSD Packet Filter)BPF

参考文章:BPF与eBPF

这个参考文章我没懂。目前大概知道怎么回事就好。后面使用pcap API会用到这里的概念。

嗅探网络流量时,嗅探器只对某些类型的数据包感兴趣,例如TCP数据包或DNS查询数据包,这是很常见的。系统可以将所有捕获的数据包提供给嗅探器程序,后者可以丢弃不需要的数据包。这是非常低效的,因为处理这些不需要的数据包并将其从内核传送到嗅探器应用程序需要花费时间。当有很多不需要的数据包时,浪费的时间相当可观。最好尽早过滤这些不需要的数据包。

随着对数据包捕获的需求的增加,Unix *** 作系统定义了BSD数据包过滤器(BSD Packet Filter,BPF)以支持较低级别的过滤。 BPF允许用户空间程序将过滤器附加到套接字,这实际上是告诉内核尽早丢弃不需要的数据包。过滤器通常使用布尔运算符以人类可读的格式编写,并被编译为伪代码并传递给BPF驱动程序。然后由BPF伪机(一个专门为数据包过滤设计的内核级状态机)解释该低级代码。

3. 包的嗅探

3.1 通常套接字编程接收包

/**

* 作用:将进入服务器所有IP的9090端口的UDP内容,输出。

*

* 准备:

* 一个套接字描述符:scoket函数,指定期望的通信协议类型

* 一个监听套接字:指定协议族,ip,端口

* bind:将一个本地协议地址赋予一个套接字(描述符)

* recvfrom:接受经指定的socket 传来的数据,放入buf --》准备个buffer,一个客户端套接字,套接字长度

*

* 头文件:

* netinet/in.h 定义了ip地址结构 struct sockaddr_in (struct in_addr作为sockaddr_in 的成员)

* 还有函数 htons等,以及一些宏。

* sys/socket.h 定义了一些列的socket API函数 如

* socket(),bind() listen() , send() ,sendmsg(),setsockopt(),等等。

* unistd.h close函数

*

* 验证:echo "Hello World\!" | nc -4u 127.0.0.1 9090

*/

#include <stdio.h>

#include <string.h>

#include <netinet/in.h>

#include <sys/socket.h>

#include <errno.h>

#include <unistd.h>

int main(void){

int sock

struct sockaddr_in server

int client_len

struct sockaddr_in client

char buf[1000]

// IPV4,数据包套接字,UDP传输协议

sock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)

if(sock <= 0){

perror("error in socket")

return -1

}

// 用这个初始化为零,比memset函数少一个参数

// sockaddr_in结构体中sin_zero,还没用;整个结构体用之前,我们全部初始化为零

// IPv4协议族,监听该服务器上所有IP的9090端口

// 按照网络标准转化字节序

bzero(&server,sizeof(server))

server.sin_family = AF_INET

server.sin_addr.s_addr = htonl(INADDR_ANY)

server.sin_port = htons(9090)

// 将一个本地协议地址赋予一个套接字(描述符)

if( bind(sock,(struct sockaddr *)&server,sizeof(server)) <0){

perror("error in bind")

return -1

}

while (1){

bzero(buf,sizeof(buf))

// 进入一个慢系统调用;

recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr *)&client,&client_len)

printf("%s",buf)

}

close(sock)

return 0

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

3.2 使用原生套接字接收包


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8109573.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存