LiteOS组件尝鲜-玩转Libpcap

举报
Lionlace 发表于 2021/08/02 15:24:19 2021/08/02
【摘要】 Libpcap介绍Libpcap是用于捕获网络数据包的函数库,通过捕获网络通信中的数据包来进行调试网络通信问题。为了更加方便地使用LiteOS来调试网络通信问题,我们在LiteOS shell命令里扩展了tcpdump功能命令,该命令通过调用Libpcap库的函数接口来获取网络数据包。下面介绍如何使用tcpdump,这里使用STM32F769IDISCOVERY开发板进行功能演示。使能tcp...

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的实现需要用到以下组件,这里我们使能以下几类组件:

  • 使能LwipPcap组件,用于提供网络及抓包功能。

  • 使能Lwip的DCHP功能用于开发板获取动态IP。

  • 使能ifconfig功能用于查看开发板IP等信息。

  • 使能Fatfs文件系统用于保存最终获取的抓包文件。

  • 使能tftp Server功能用于传输抓包文件。

运行make menuconfig保存退出后,LiteOS会从github自动下载Libpcap源码,从gitee LiteOS组件仓库里下载对应的patch包并打入patch,然后在LiteOS源码的根目录下执行make clean ; make -j命令进行编译。编译成功后会在out/STM32F769IDISCOVERY/lib目录下生成组件静态库文件libpcap.a,系统镜像文件为Huawei_LiteOS.bin,最后将生成的系统镜像文件烧录到开发板。

运行tcpdump

准备运行环境:

  1. 将开发板插入网线并连接到以太网。
  2. 准备一张SD卡,放置到开发板的SD卡槽中,获取到的抓包文件保存到该SD卡中。
重启开发板:
进入shell, 输入“help”命令,然后查看命令列表,会看到tcpdump、ifconfigtftp Server这几个新增命令。
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 #
运行tcpdump
进入shell, 输入“tcpdump -h”命令,shell里会列出tcpdump的用法。
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 #
然后在shell里输入“tcpdump -i st0 -w /fatfs/cap.pcap -c 100”命令,此命令的作用是使用开发板的板载网卡st0,同时抓取100条数据保存到cap.pcap文件。
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

目的是传输抓包文件到PC端,使用wireshark查看抓包文件。
进入shell, 输入“tftpServer -s -m /fatfs/”,开启tftp服务端,等待tftp client端连接。

-s:启动tftp server服务

-m:设置开发板挂载的文件系统路径,这里使用/fatfs/。


  • PC端开启tftp client

在Windows cmd命令行开启tftp客户端,命令的用法如下所示:
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抓包文件,以下展示了该抓包文件中的包数据。

图.png

至此,我们演示了通过LiteOS组件tcpdump功能抓包的完整过程。

结语

以上就是tcpdump运行的全部过程啦,如果想更深入地了解其运行原理,请参考libpcap源码路径/LiteOS/components/net/pcap/libpcap-1.7.3

感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:  https://gitee.com/LiteOS/LiteOS/issues

为了更容易找到“LiteOS”代码仓建议访问https://gitee.com/LiteOS/LiteOS关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。

图片

- End -

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。