LiteOS组件尝鲜-玩转Libpcap
Libpcap介绍
Libpcap是用于捕获网络数据包的函数库,通过捕获网络通信中的数据包来进行调试网络通信问题。为了更加方便地使用LiteOS来调试网络通信问题,我们在LiteOS shell命令里扩展了tcpdump功能命令,该命令通过调用Libpcap库的函数接口来获取网络数据包。下面介绍如何使用tcpdump,这里使用STM32F769IDISCOVERY开发板进行功能演示。
使能tcpdump
这里使用Linux系统作为开发环境,首先在Linux终端命令行中执行以下命令拷贝STM32F769IDISCOVERY开发板的默认配置到LiteOS源码根目录下:
~/Huawei_LiteOS$ cp tools/build/config/STM32F769IDISCOVERY.config .config
然后在LiteOS源码根目录下运行make menuconfig命令,按如下菜单路径使能Libpcap组件。
(Top) → Components → Network
Huawei LiteOS Configuration
[ ] Enable AT
-*- Enable Lwip
[*] Enable DHCP
Enable Ipv4 Or Ipv6 (Enable Ipv4) --->
[ ] Enable Sal
-*- Enable Ifconfig
[ ] Enable Iperf
[*] Enable Pcap
[ ] Enable Ping
[*] Enable Tftp Server
Tcpdump的实现需要用到以下组件,这里我们使能以下几类组件:
-
使能Lwip及Pcap组件,用于提供网络及抓包功能。
-
使能Lwip的DCHP功能用于开发板获取动态IP。
-
使能ifconfig功能用于查看开发板IP等信息。
-
使能Fatfs文件系统用于保存最终获取的抓包文件。
-
使能tftp Server功能用于传输抓包文件。
运行tcpdump
准备运行环境:
- 将开发板插入网线并连接到以太网。
- 准备一张SD卡,放置到开发板的SD卡槽中,获取到的抓包文件保存到该SD卡中。
Huawei LiteOS # help
*******shell commands:*********
date free help hwi log memcheck swtmr systeminfo
task tcpdump ifconfig tftpServer uname watch
Huawei LiteOS #
获取设备动态IP
进入shell, 输入“ifconfig”命令,该命令显示开发板的当前网卡名、IP地址、子网掩码及网关等信息。
Huawei LiteOS # ifconfig
st0 ip:192.168.10.160 netmask:255.255.255.0 gateway:192.168.10.1
HWaddr:00:80:e1:00:00:00 MTU:1500 Running Default Link UP
Huawei LiteOS #
Huawei LiteOS # tcpdump -h
USAGE:
tcpdump -i ifname -w "path" [-c "package-count"] ["filter expression"]
example1: tcpdump -i st0 -w /ramfs/cap -c 15
example2: tcpdump -i st0 -w /ramfs/cap -c 15 "arp or ip"
example3: tcpdump stop
Huawei LiteOS #
Huawei LiteOS # tcpdump -i st0 -w /fatfs/cap.pcap -c 100
Interface: st0.
File Name: /fatfs/cap.pcap .
Count: 100.
[ERR] atexit NOT SUPPORT
Huawei LiteOS # Tcpdump file saved.
当shell界面中显示Tcpdump file saved.时,则表明已经抓取到指定数量的网络数据并保存到cap.pcap文件中。
如何查看抓包数据
我们使用wireshark软件查看抓包数据。在查看数据之前,需要先从开发板上传输抓包文件到Windows PC上,且windows PC上已安装wireshark软件。
-
开发板端开启tftp server
-s:启动tftp server服务
-m:设置开发板挂载的文件系统路径,这里使用/fatfs/。
-
PC端开启tftp client
TFTP [-i] host [GET] source [destination]
-i:在传输二进制文件时,使用此模式。
host:指定本地或远程主机。
GET:获取远程主机上的文件。
Source:指定要传输的文件。
Destination:指定要将文件传输到的位置。
运行“TFTP -i 192.168.10.160 GET cap.pcap”,该命令表示把开发板SD卡中的cap.pcap抓包文件传送到PC端。
-
使用wireshark查看抓包文件
最后,我们使用wireshark打开cap.pcap抓包文件,以下展示了该抓包文件中的包数据。
至此,我们演示了通过LiteOS组件tcpdump功能抓包的完整过程。
结语
感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步: https://gitee.com/LiteOS/LiteOS/issues
为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。
- End -
- 点赞
- 收藏
- 关注作者
评论(0)