768|2

336

帖子

2

TA的资源

纯净的硅(初级)

【VisionFive 2 单板计算机试用】+基于libpcap的以太网数据测试 [复制链接]

本帖最后由 我爱下载 于 2023-7-27 15:58 编辑

基于libpcap的以太网数据测试

  1. libpcap介绍
    libpcap(Packet Capture Library),即数据包捕获函数库。在网络包抓取中libpcap是非常常用的一个库,著名的tcpdump就是用它来实现的。
    官方网站: https://www.tcpdump.org/
    135925pn03cwbnt6r36z6f.png
    libpcap是一个与实现无关的访问操作系统所提供的分组捕获函数库,用于访问数据链路层。这个库为不同的平台提供了一致的C函数编程接口,在安装了 libpcap 的平台上,以 libpcap 为接口写的程序、应用,能够自由地跨平台使用。它支持多种操作系统。
    网站提供了libpcap各个版本的源码。libpcap也有编译好的版本,在windows上叫做winpcap,和libpcap完全兼容,并且提供相同的API。
  2. libpcap的安装
    在visionfive2上安装libpcap非常的容易,因为官方已经提供了兼容的版本,可以像安装其它应用那样直接安装就可以了。
    135925krs87qrraa6rrs7p.png
    执行
    sudo apt install libpcap-dev
    安装libpcap的开发版,便于我们后面开发测试和应用。
    在windows上winpcap的安装可以参考它的官方网站:
    https://www.winpcap.org/
  3. libpcap的基本使用方法
    看了一些网络上的教程,也看了官方的文档,基本了解了libpcap的使用流程和方法。
    (1)接口选择。可以通过libpcap提供的接口函数列出系统内所有可以被监视的接口对象,但是我们通常希望指定所选择的接口。
    在Linux中,可能的以太网接口可以是eth0,在visionfive2中是end0或end1。
    在windows中,这个接口的名字比较复杂,但是我们可以通过一个简单的小程序软件获取所有接口的名称,然后选定需要的接口名称字符串来使用。
    135925r3ibwymipd2wi2wy.png
    (2)初始化pcap。初始化过程中,需要提供设备接口名称,就是(1)中选定的。是否起用混杂模式,以及读取的超时时间等。
    (3)过滤条件设定。过滤条件可以包含例如协议类型、端口号、物理地址等,但是libpcap需要创建一个规则集合,编译并且使用它。这个过程分为三个相互紧密关联的阶段。 规则集合被置于一个字符串内,并且被转换成能被pcap读的格式(因此编译它)。编译实际上就是在我们的程序里调用一个不被外部程序使用的函数。接下来告诉 pcap使用它来过滤出所需的数据帧。
    (4)执行捕获。pcap进入它的主体执行循环。在这个阶段内pcap一直工作到它接收了所有我们想要的包为止。每当它收到一个包就调用回调解析函数,这个函数可以做我们想要的任何工作,它可以剖析所部获的包并给用户打印出结果,它可以将结果保存为一个文件,或者什么也不作。
    (5)在嗅探到所需的数据后,我们要关闭会话并结束。
  4. VF2上的捕获测试程序
    程序源码参见附件。  vf2 test for libpcap.rar (2.31 KB, 下载次数: 0)
  5. Windows上的测试程序
    Windows上的测试程序在QT中实现,调用winpcap的库。程序源码参见附件。   qt send net data for winpcap.rar (1.13 KB, 下载次数: 0)
  6. 测试

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

135925r3ibwymipd2wi2wy.png

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

135925hxgzmvmvo5a7cgx2.png

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

135925l2biktsizi2dbdjg.png

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

sudo ./main

135925hon25gg3ug8hoddz.png

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

最新回复

有用的,比如协议仿真   详情 回复 发表于 2023-7-29 22:30

回复
举报

6319

帖子

0

TA的资源

五彩晶圆(高级)

libpcap分组捕获函数库听起来好好用,不知道实际用处大不大

点评

有用的,比如协议仿真  详情 回复 发表于 2023-7-29 22:30

回复

374

帖子

9

TA的资源

纯净的硅(初级)

Jacktang 发表于 2023-7-29 10:06 libpcap分组捕获函数库听起来好好用,不知道实际用处大不大

有用的,比如协议仿真


回复
您需要登录后才可以回帖 登录 | 注册

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表