如何构建编译gopacket包的测试用例?(gopacket抓取数据包、类似于tcpdump、Wireshark)

news2025/1/12 8:54:56

本篇文章介绍一下,如何构建gopacket测试用例

1、构建过程中遇到的问题

问题1:

-bash: ./gopacket-main: /lib/ld-musl-x86_64.so.1: bad ELF interpreter: No such file or directory

问题2:

#14 3.150 # github.com/google/gopacket/pcap
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:30:22: undefined: pcapErrorNotActivated
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:52:17: undefined: pcapTPtr
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:64:10: undefined: pcapPkthdr
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:103:6: undefined: pcapBpfProgram
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:110:7: undefined: pcapPkthdr
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:268:33: undefined: pcapErrorActivated
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:269:33: undefined: pcapWarningPromisc
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:270:33: undefined: pcapErrorNoSuchDevice
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:271:33: undefined: pcapErrorDenied
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:748:14: undefined: pcapTPtr
#14 3.150 /go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap.go:271:33: too many errors

如果解决上面的问题呢?

2、测试环境说明

本次构建是在Mac环境下构建,构建的二进制文件在centos7.5环境下使用。

Mac和centos都是x86环境。

3、测试用例目录结构

在这里插入图片描述

4、gopacket的测试用例

vim main.go

package main

import (
	"fmt"
	"github.com/google/gopacket/pcap"
)

func main() {
	devs, err := pcap.FindAllDevs()
	if err != nil {
		fmt.Errorf(err.Error())
	}

	for _, dev := range devs {
		fmt.Printf("----dev.Name:%v\n", dev.Name)
	}
}

5、构建方式

通过docker的方式进行构建,不会影响本地环境

5.1、Dockerfile

vim Dockerfile

FROM golang:1.18-alpine

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN apk add --no-cache \
    libpcap-dev \
    g++ \
    curl \
    build-base \
    binutils-gold \
    bash \
    clang \
    llvm \
    libbpf-dev \
    linux-headers \
    net-tools \
    vim

WORKDIR /root
ADD main.go /root

ENV CGO_ENABLED=1 GOOS=linux GOARCH=amd64
ENV GOPROXY https://goproxy.cn

COPY go.mod .
COPY go.sum .
RUN go mod download

RUN go build -ldflags="-extldflags=-static -s -w" -o gopacket-main main.go

其中, libpcap-dev必须安装;其他 未测试。

文章一开始的问题,是如何引起的?

在这里插入图片描述

在这里插入图片描述

5.2、Makefile

参考Makefile的内容
vim Makefile

build:
	docker build -t golang:1.18-alpine-libpcap .

docker:
	docker run --rm -v /xxxxxxx/data:/app golang:1.18-alpine-libpcap cp gopacket-main /app

scp:
	scp data/gopacket-main root@10.211.55.130:/root

all:
	make build
	make docker
	make scp

在这里插入图片描述

5.3、构建

在这里插入图片描述

6、登录到centos上测试

在这里插入图片描述

有价值的参考文档
https://blog.51cto.com/u_12617333/5779129



已发表的技术专栏(订阅即可观看所有专栏,直接点击题目查看)
0  grpc-go、protobuf、multus-cni 技术专栏 总入口

1  grpc-go 源码剖析与实战  文章目录

2  零入门Kubernetes网络实战

3  Protobuf介绍与实战 图文专栏  文章目录

4  multus-cni   文章目录(k8s多网络实现方案)

5  grpc、oauth2、openssl、双向认证、单向认证等专栏文章目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/436224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zimbra 远程代码执行漏洞(CVE-2019-9670)环境搭建

漏洞简介 Zimbra是著名的开源系统,提供了一套开源协同办公套件包括WebMail,日历,通信录,Web文档管理和创作。一体化地提供了邮件收发、文件共享、协同办公、即时聊天等一系列解决方案。此漏洞的主要利用手法是通过 XXE (XML 外部…

【附代码】SSVEP解码算法 - 多变量同步指数(MSI)

1 算法来源 该算法来自电子科技大学张杨松博士,针对该算法的计算在张博士的博士论文中有详细介绍,有兴趣的读者可以下载阅读,本文重点在对该方法的代码实现。Zhang, Yangsong, et al. “Multivariate synchronization index for frequency recognition of SSVEP-based brain…

JS和CSS实现的原生轮播图

文章目录 🍗 前言🍖 JSCSS实现滑动轮播图🍔 纯CSS实现滑动轮播图🍿 JSCSS实现浅入浅出轮播图🥪 JSCSS实现滑动带遮罩轮播图🧀 JSCSS实现卡片式轮播图 🍗 前言 图片来自百度图片,可以…

分析解决【No module named ‘triton‘】的问题

(一)现象 在Windows11下训练Stable-Diffusion的LoRA模型的时候,总是重复提示: A matching Triton is not available, some optimizations will not be enabled. Error caught was: No module named ‘triton’ 意思是&#xff1a…

RocketMQ之 Consumer,消费者消费原理解析

B站 https://www.bilibili.com/video/BV1rX4y1z72v在线学习文档 https://d9bp4nr5ye.feishu.cn/wiki/wikcnjjvso9uytlgVJBfKcJh1Kq 今天我们阅读源码的目的:在SpringBoot项目中,RocketMQ是如何通过 RocketMQMessageListener 来进行消费的。 在SpringBoot…

Python数据结构-----leetcode用队列实现栈

目录 前言: 方法步骤 示例 Python代码实现 225. 用队列实现栈 前言: 上一期学习了怎么去通过两个栈来实现队列,同样这一期我就来讲讲怎么去通过两个队列来实现栈的功能,一起来学习吧。(上一期链接Python数据结构--…

【Git基础】常用git命令(一)

文章目录 1. 创建仓库1.1 创建仓库1.2 git add和git commit① git add② git commit③ 工作区、暂存区和仓库 2. 创建git服务器2.1 服务器:2.2 本地2.3 修改配置信息 3. git基础原理3.1 四个区域3.2 工作流程3.3 文件的四种状态① git rm② git checkout 4.优雅的提…

setup的两个注意点

setup的两个注意点 首先,我们原本在v2中,父组件给子组件传递参数时,使用props来接收,当然除了这个方法外,我们还可以通过$attr来接收,只不过使用$atter就不能对父组件传来的参数进行类型的限定&#xff0c…

你是一个资深API接口爬虫程序员,现在需要你介绍一下如何通过商品id来获取商品数据并读取出来

获取商品数据通常需要使用API接口,根据接口文档中的说明传递商品id参数,并使用相应的请求方式(通常为GET请求)向API服务器发送请求即可。 以下是一个获取商品数据的示例请求: 首先打开API接口文档,找到获…

小航助学答题系统编程等级考试scratch二级真题2023年3月(含题库答题软件账号)

青少年编程等级考试scratch真题答题考试系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手 1.小猫的程序如图所示,积木块的颜色与球的颜色一致。点击绿旗执行程序后&a…

USB TO SPI / USB TO I2C 软件概要 7 --- 专业版调试器

所需设备: 1、USB 转 SPI / I2C 适配器; 软件概述: SPI类: USB TO SPI 1.0-Slave SPI从机软件,适合单步调试,支持SPI工作模式0、1、2、3,自动跟随主机通讯速率,自动接收数据; …

【算法宇宙——在故事中学算法】背包dp之完全背包问题

学习者不灵丝相传,而自杖明月相反,子来此事却无得失。 文章目录 前言正文小明的探险之旅(2)最后的优化代码 前言 尽管计算机是门严谨的学科,但正因为严谨,所以要有趣味才能看得下去。在笔者的前几篇算法类…

C#基础学习--LINQ

什么是LINQ 从对象获取数据的方法一直都是作为程序的一部分而设计的,然而使用LINQ可以很轻松的查询对象集合 LINQ提供程序 匿名类型 匿名类型经常用于LINQ查询的结果之中 匿名类型的对象创建表达式: using System; using System.Collections; using …

BiFormer:基于双层路由注意力的视觉Transformer

文章目录 摘要1、简介2、相关工作3、我们的方法:BiFormer3.1、预备知识:注意力3.2、双层路由注意(BRA)3.3、BRA的复杂性分析 4、实验4.1、ImageNet-1K图像分类4.2. 目标检测与实例分割4.3. 基于ADE20K的语义分割4.4、消融研究4.5、注意图可视化 5、局限性和未来工作…

C++ -3- 类和对象(中) | (三)END

文章目录 6.日期类的实现构造函数赋值运算符 “”前置、后置日期 - 日期日期类实现—代码汇总流插入流提取 7.const成员const 与 权限放大 8.取地址及const取地址操作符重载 6.日期类的实现 #pragma once #include <stdbool.h> #include <iostream> using namespa…

vue vue-json-viewer 展示 JSON 格式数据

1、下载 vue-json-viewer npm 下载 vue-json-viewer &#xff1a; // Vue2 npm install vue-json-viewer2 --save // Vue3 npm install vue-json-viewer3 --saveyarn 下载 vue-json-viewer &#xff1a; // Vue2 yarn add vue-json-viewer2 // Vue3 yarn add vue-json-view…

基于LS1028 TSN 交换机软件系统设计与实现(三)

NXP 推出 OpenIL 作为用于工业领域的 Linux 发行版&#xff0c; OpenIL 新增的部分中 含有&#xff1a;支持实时的操作系统的扩展和支持工业厂房中自动化 OEM 的 Time-Sensitive 网络。 OpenIL 作为开放型的工业 Linux 系统最大的优势便是将实时计算在网络中 的…

JavaWeb——UDP的报文结构和注意事项

目录 一、UDP特点 1、无连接 2、不可靠 3、面向数据报 4、全双工通信 二、UDP报文结构 1、报头 2、载荷 三、端口 四、报文长度 五、校验和 1、定义 六、注意事项 1、UDP只有接收缓冲区、没有发送缓冲区 2、UDP大小受限 3、基于UDP的应用层协议 4、MTU对UDP协议…

《Java8实战》第11章 用 Optional 取代 null

11.1 如何为缺失的值建模 public String getCarInsuranceName(Person person) { return person.getCar().getInsurance().getName(); } 上面的这种代码就很容易出现NullPointerException的异常。 11.1.1 采用防御式检查减少 NullPointerException 为了避免NullPointerExce…

【Linux】基础IO——文件操作|文件描述符|重定向|缓冲区

文章目录 一、文件操作1. 文件预备知识2. 回顾C文件操作3. 文件操作的系统调用标志位的传递openwriteread 二、文件描述符1. 文件描述符的理解2. 文件描述符的分配规则 三、重定向1. 重定向的本质2. dup2系统调用 四、缓冲区1. 缓冲区的刷新策略2. 缓冲区的位置3. 简单模拟实现…