注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
我爱下载的个人空间 https://home.eeworld.com.cn/space-uid-101026.html [收藏] [复制] [分享] [RSS]
日志

【VisionFive 2 单板计算机试用】+基于libpcap的以太网数据测试

已有 537 次阅读2023-7-27 14:06 |个人分类:产品评测

基于libpcap的以太网数据测试

  1. libpcap介绍
    libpcap(Packet Capture Library),即数据包捕获函数库。在网络包抓取中libpcap是非常常用的一个库,著名的tcpdump就是用它来实现的。
    官方网站: javascript:;

    libpcap是一个与实现无关的访问操作系统所提供的分组捕获函数库,用于访问数据链路层。这个库为不同的平台提供了一致的C函数编程接口,在安装了 libpcap 的平台上,以 libpcap 为接口写的程序、应用,能够自由地跨平台使用。它支持多种操作系统。
    网站提供了libpcap各个版本的源码。libpcap也有编译好的版本,在windows上叫做winpcap,和libpcap完全兼容,并且提供相同的API。
  2. libpcap的安装
    在visionfive2上安装libpcap非常的容易,因为官方已经提供了兼容的版本,可以像安装其它应用那样直接安装就可以了。

    执行
    sudo apt install libpcap-dev
    安装libpcap的开发版,便于我们后面开发测试和应用。
    在windows上winpcap的安装可以参考它的官方网站:
    javascript:;
  3. libpcap的基本使用方法
    看了一些网络上的教程,也看了官方的文档,基本了解了libpcap的使用流程和方法。
    (1)接口选择。可以通过libpcap提供的接口函数列出系统内所有可以被监视的接口对象,但是我们通常希望指定所选择的接口。
    在Linux中,可能的以太网接口可以是eth0,在visionfive2中是end0或end1。
    在windows中,这个接口的名字比较复杂,但是我们可以通过一个简单的小程序软件获取所有接口的名称,然后选定需要的接口名称字符串来使用。

    (2)初始化pcap。初始化过程中,需要提供设备接口名称,就是(1)中选定的。是否起用混杂模式,以及读取的超时时间等。
    (3)过滤条件设定。过滤条件可以包含例如协议类型、端口号、物理地址等,但是libpcap需要创建一个规则集合,编译并且使用它。这个过程分为三个相互紧密关联的阶段。 规则集合被置于一个字符串内,并且被转换成能被pcap读的格式(因此编译它)。编译实际上就是在我们的程序里调用一个不被外部程序使用的函数。接下来告诉 pcap使用它来过滤出所需的数据帧。
    (4)执行捕获。pcap进入它的主体执行循环。在这个阶段内pcap一直工作到它接收了所有我们想要的包为止。每当它收到一个包就调用回调解析函数,这个函数可以做我们想要的任何工作,它可以剖析所部获的包并给用户打印出结果,它可以将结果保存为一个文件,或者什么也不作。
    (5)在嗅探到所需的数据后,我们要关闭会话并结束。
  4. VF2上的捕获测试程序
    程序源码参见附件。 
  5. Windows上的测试程序
    Windows上的测试程序在QT中实现,调用winpcap的库。程序源码参见附件。  
  6. 测试

1) windows测试程序的执行,windows 程序负责以200ns为间隔发送50帧特定的以太网帧,协议类型0x88BA,客户数据的第一个字节自加测试。

2)wireshark捕获到windows测试程序发送的内容:协议类型为0x88BA

3) 交叉编译或在VF2上直接编译源码,并将编译后的执行文件上传到visionfive2中,我这里通过交叉编译,可执行文件为main。

需要注意一点,在vf2上运行这个程序需要提供管理员权限,因此需要执行:

sudo ./main

可以看到,成功的捕获到了所需要的数据,因为程序中我使用了物理地址过滤条件,所以只有满足条件的数据出现在了屏幕上。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章