问题标签 [gopacket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 无阻塞以太网捕获
我使用此代码来捕获以太网数据包:
问题是 packetSource.Packets() 被阻塞:如果没有收到数据包,则存在无限循环。如何设置超时?
go - 使用 gopacket 测量 TCP/UDP 带宽
我应该使用gopacket来运行一些网络测试,比如测量 TCP/UDP 连接的带宽。我知道 lib 允许捕获、注入和分析数据包这一事实,但我想不出一种合适的方法来测量带宽。我寻找了一些标准方法,例如将“大”文件从一个系统传输到另一个系统并测量完成传输所需的时间,但我发现它很难令人信服(可能是由于我的网络知识有限)。
可以选择发送大量数据包(而不是文件)并测量完成所需的时间吗?
谢谢。
go - 如何使用 gopacket 创建和发送 vxlan 数据包?
我看过一些使用 gopacket 创建和发送 TCP/UDP 数据包的示例。现在我需要捕获和转发 udp vxlan 多播数据包,我不知道如何构造 vxlan 层及其有效负载。如何创建和发送 vxlan包机智gopacket?
go - 多个goroutine读取pcap文件不能提高性能?
我需要阅读大约 600 个 pcap 文件,每个文件大约 100MB。我使用 gopacket 加载 pcap 文件,并检查它。
Case1:使用 1 个例程检查。
案例 2:使用 40 个例程进行检查。
而且我发现case1和case2消耗的时间差不多。不同的是case1的cpu使用率只有200%,case2可以达到3000%。我的问题是为什么多个例程不能提高性能? 代码中有一些注释,希望对您有所帮助。
go - 如何使用 gopacket 为 32 位 mips 编译 Go 应用程序
我正在尝试在 32 位 mips cpu 上使用 gopacket 库将一个小应用程序编译到 linux 上。不幸的是,我收到了很多这样的错误:
在“普通”Linux 系统上,这些似乎是在“pcap_unix.go”中定义的,而在 Windows 上,这些值来自“defs_windows_amd64.go”。我的目标系统上确实有 32 位 mips 版本的 libpcap,这很好,因为我的目标系统没有额外的空间来安装编译任何东西所需的所有工具。我知道 libpcap 在 Windows 上不作为 1 对 1 版本存在,所以这可能解释了“defs”文件。但我通常希望它具有与我的 linux 系统上的 API 相同的 API。
[更新] 所以似乎需要确保的第一件事是执行 cgo。这是通过设置环境变量来完成的:
接下来,我们需要确保安装了与 mips 兼容的 libpcap 版本(头文件在任何架构上都是相同的)。为了在我的 Ubuntu 16.4 上执行此操作,我首先需要启用“mips”架构:
并将 debian repo 添加到 /etc/apt/sources.list
完成后,我可以安装 mips 二进制文件:
为了交叉编译,似乎我需要一个可以做到这一点的 gccgo 版本。为此,我安装了:
现在出现了一些我不确定我做对了的事情,但是当使用 compiler=gccgo 运行 go build 时,它总是选择 amd64 版本并且使用除 'gccgo' 之外的其他任何东西作为编译器参数都不起作用,所以我更新了 / 中的符号链接usr/bin/gccgo 指向:'mips-linux-gnu-gccgo-8'(在同一目录中)。
在所有这些更改之后,我几乎可以使用以下命令构建所有内容:
如果我使用“-x”选项启用附加输出,我可以看到 cgo 现在正在做这件事。它还在编译所有其他模块。但是在 pcap 上它现在失败了:
所以这就是我目前所困的地方。
go - 如何使用 gopacket 正确手工制作 DNS 数据包?
我正在尝试使用 gopacket 发送手工制作的 DNS 数据包。
这是我的代码:
没有问题,我正确地看到了通过线路传输的 UDP 数据包,但是,当我使用 Wireshark 捕获它时,它在“协议”列中被标记为“UDP”,但如果我尝试host www.google.com
,捕获的数据包被标记为“DNS”。所以我想我正在发送格式错误的数据包,但我找不到我丢失的东西。
我已经检查过这个问题,但它并没有解决我的问题。
sockets - 通过 VPN 发送欺骗的 UDP 数据包
我有一台运行 IP 欺骗测试的机器(服务器)。服务器上的所有端口都是打开的,它位于我连接的 VPN 网络上。
问题是,当我尝试使用 netcat 将数据发送到 UDP 上的机器时,它可以工作。我正在按照这个特殊的解决方案向机器发送数据: https ://gist.github.com/sandeshbhusal/c8fa09546ffc076e5103456dd4e3742d
欺骗代码在我的本地机器上运行良好;我可以看到正确发送和接收的数据。当我尝试在服务器上使用它时,代码停止工作(我完全按原样使用代码)。
几个问题:
- 我需要更改代码中的mac地址吗?如果是这样,它们应该具有什么价值?
- 当我从服务器内运行代码时,tcpdump 显示正在发送的数据,但 netcat 看不到数据。可能是什么原因?
go - 使用 gopacket/ip4defrag 进行碎片整理后如何从 ipv4 层获取应用层有效负载
我有一个 Golang 函数来解码 pcap 文件并获取应用层的有效负载。为此,我使用 gopacket。我的初始代码是:
此变通方法运行良好,但当 pacap 文件中存在碎片数据包时,此变通方法可能无法正常工作。为了解决这个问题,我在函数中添加了碎片整理:
我的问题是:如何使用 gopacket 从 layers.IPv4 获取应用层有效负载,而不是从 IPv4 有效负载中删除字节?
go - 从原始字节创建数据包并使用 gopacket 写入 pcap 文件
我想使用 gopacket 从原始字节创建一个数据包并将数据包写入 pcap 文件。
我从原始字节创建了一个 UDP 数据包,如下所示。
我很惊讶如何将这些数据包写入 pcap 文件。这是代码的那一部分。
这是我得到的错误。请帮助如何进一步进行
[root@centos-sqa-blr01 gopacket]# go run create_pcap.go
#command-line-arguments
./create_pcap.go:75:26: packet.MetaData undefined (type gopacket.Packet 没有字段或方法 MetaData,但是有有元数据)