问题标签 [pcap-ng]

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.

0 投票
1 回答
2280 浏览

cross-platform - 在 Mac 上创建的字节序列 0a 0d 0d 0a 的奇怪 pcap 标头?

我有一个在 Mac 上创建的 PCAP 文件,mergecap可以在带有 Apple 的 libpcap 的 Mac 上解析,但无法在 Linux 系统上解析。组合文件有一个额外的 16 字节标题,包含在 pcap 文件中常见0a 0d 0d 0a 78 00 00 00的介绍之前。4d 3c 2b 1a这是一个十六进制转储:

有人知道这是什么吗?或者我如何在带有 libpcap 的 Linux 系统上阅读它?

0 投票
2 回答
4230 浏览

python-2.7 - 在 Windows 7 中为 Python 2.7.x 构建 libpcap

我尝试了几种不同的方法,并在许多论坛上四处寻找这个问题的答案。

我的目标是使用 Python 简单地解析一个 wireshark .pcap-ng 跟踪文件。据我所知,我似乎需要 Python 或 WinCap 的 libpcap 包装器(PyCapy?)

我对 Python 比较陌生,所以如果大家对如何安装这个模块有任何指示,请告诉我。早些时候我安装了一个 32 位版本的 Python 并找到了一个 win32 安装程序,并且能够解析 .pcap 文件,但我真的希望能够解析 .pcapng 文件。谢谢大家,~Kyte

0 投票
1 回答
1821 浏览

python - 如何在 Python 中打印 PCAPNG 元数据?

我正在尝试我的第一个 Python 程序,并且可以使用一些帮助。 我在 github 上的脚本

我需要一种在 PCAPNG 文件中打印元数据的方法。我想为初学者打印应用程序和版本、操作系统和界面。Section Header Block 和 Interface Description Block 包含我需要的数据。

我的问题是块/字段不是固定大小,因为每个块中的选项字段:
PCAPNG 格式,请参阅第 3.1 和 3.2 节

问题:

1.) 是否有任何 Python 库可以打印该信息?
2.)如果没有,有什么方法可以通过 Python 轻松获取信息

提前致谢。

0 投票
3 回答
16137 浏览

networking - 转换 pcap <-> pcap-ng, pcap-ng 工具/库

我正在寻找有关 pcap-ng 的一些信息。

pcap-ng 和 pcap 有什么区别?

是否有任何用于 pcap-ng 的工具/库?

如何将 pcap 转换为 pcap-ng 并将 pcap-ng 转换为 pcap?

0 投票
2 回答
9115 浏览

ffmpeg - 如何从 Wireshark Capture 中提取 RTP 数据包特定字段?

我有一个 PCAPNG 文件,我需要从中获取 RTP 数据包。具体来说,我的一个 RTP 数据包看起来像......

帧 N:线上 X 字节...

  • 以太网 II,源:...
  • IPv4,源:...
  • TCP,源端口:rstp ...
  • RTSP 交错帧,通道:0x02,163 字节
  • 实时传输协议

...而我从每个数据包中需要的是...

  1. 来自 RTSP 交错帧的通道
  2. RTSP 交错帧的长度
  3. 来自 RTP 的有效负载

...使用这些数据,我将重新创建一个音频和视频文件,以从本地有效负载重新构建完整的视频(播放不是流式传输)。

我可以使用任何一种方法成功获取 RTP 数据包...

tshark -r my.pcap -R -T fields -e rtp.payload -w rtp.out

或者...

tshark -r my.pcap -R -T fields -e rtp.payload > rtp.out

...但我遇到的问题是第一种方法将保存我需要的所有内容,但由于某种原因,它会在奇怪的地方添加额外的数据(即不仅仅是 RTP 有效负载和 RTSP 交错帧内容)......阻止我编写程序来生成我需要测试的数据。我尝试使用几个正则表达式删除所有额外的数据,但是有太多不同的场景与其他有效场景重叠。

第二种方法将仅提供 RTP 有效负载,而没有我需要的交错属性(它将生成每个字节之间带有冒号的十六进制,但这很容易处理)。即使我可以再次调用以获取所有 RTSP 交错帧属性,我也需要通过使用分隔符/定界符识别每个数据包来组合 2 个输出,我想避免这种情况(我无法获得 tshark要么这样做......)。

我查看了 tshark 读取过滤器,它似乎应该能够做我需要的,但到目前为止我还没有弄清楚。请注意,我这样做只是为了创建示例数据并编写格式化播放所需数据的逻辑。最终,我的一位同事将修改流式客户端以以适当的格式捕获数据(因此我可以简单地通过 ffmpeg 运行数据而无需修改它)。关于如何创建所需格式的任何想法?

0 投票
1 回答
1320 浏览

java - 将时间戳存储为两个 32 位字(pcapng 格式)

我正在生成我捕获的数据包的 PCAPNG 文件。一切似乎都很好,除了每个数据包的时间戳无效。

简而言之,我将时间戳与所有其他数据一起存储在字节缓冲区中,并将其写入文件。然后,当我使用十六进制编辑器检查文件时,我得到时间戳字段的以下值:

这似乎是一个有效的时间戳。但是,在 Wireshark 中打开文件我得到46860 年 1 月 12 日

查看有关时间戳的 PCAPNG 规范,它指出以下内容:

时间戳(高)和时间戳(低):表示时间戳的 64 位量的高 32 位和低 32 位。时间戳是一个 64 位无符号整数,表示自 1/1/1970 00:00:00 UTC 以来的单位数。解释该字段的方式由该数据包引用的接口描述块的“if_tsresol”选项(参见图 9)指定。请注意,与 libpcap 文件格式不同,时间戳不保存为两个 32 位值,用于计算自 1970 年 1 月 1 日以来的秒数和微秒数。它们保存为单个 64 位数量,另存为两个 32 位字。

所以我假设我只是将值作为 long 存储在字节缓冲区中然后将其保存到文件中是错误的。但是我应该如何将时间戳保存为两个 32 位字?我尝试了不同的方法,例如将值简单地存储为两个整数,但似乎没有什么能给我正确的格式。

请注意,我还在数据包中指定了 if_tsresol,但无论我给它什么值(3 表示 10^-3 => 毫秒),它都不会影响 Wireshark 解释文件的方式。

另一件需要注意的事情是,如果我将时间戳存储为秒,我会在 Wireshark 中得到一个有效的时间戳。如此处所见但是,毫秒被丢弃,这意味着在给定时间戳的情况下,无法解析在同一秒内接收到的所有数据包的顺序。

作为参考,这里是从之前的 wireshark TCP 捕获中获取的时间戳字段:

不知何故,我需要像他们一样存储我的时间戳。

可以在这里找到最新的 PCAP 规范草案

0 投票
1 回答
977 浏览

python - 有没有办法从 PcapNG 跟踪文件中提取 WiFi 协议类型?

我正在构建一个 PcapNG 解析器(在 Python 中)来分析 WiFi 数据包。
我希望能够显示链接类型(例如,协议变体:802.11b、802.11a、802.11g 或 802.11n)。

但是,阅读PcapNG 格式定义时,我只看到以下内容:

  • LINKTYPE_IEEE802_11 105 IEEE 802.11(无线)
  • LINKTYPE_IEEE802_11_RADIO 127 802.11 加上 BSD 无线电报头

有没有办法从 PcapNG 跟踪文件中提取 WiFi 协议类型?

0 投票
1 回答
828 浏览

python - 无法理解 PcapNG 文件中的 802.11 数据帧格式

我有Wireshark 创建的PcapNG文件,我尝试使用python-pcapng.

但是,我无法弄清楚如何协调从FileScanner's收到的输出packet_payload_info802.11 数据帧格式802.11 数据帧格式

这是我得到的输出(我的代码在底部):

你能告诉我packet_payload_data802.11 数据帧的位置吗?*

  • 即,它的第一个字节在帧中的位置

Python代码:

编辑1:

如果我打印几个EnhancedPacketpacket_payload_data我注意到它们都以00 00 19 00 6F 08 00 00. 现在,08是数据帧标记,这让我怀疑它packet_payload_data不仅是有效载荷数据,还包括帧控制位。

0 投票
1 回答
564 浏览

merge - 使用 Wireshark/mergecap 合并两个文件后丢失数据包

我有两个 pcapng 文件。每一个都是发生在同一路由器但在不同接口上的流量捕获。

由于我想在全球范围内研究路由器协议的行为,因此我考虑将这两个文件合并为一个,因此研究不同的协议会更容易。

我使用了工具mergcap,例如:

根据mergecap的手册,文件将根据每个file1.pcapng和file2.pcapng中每个数据包的时间戳按时间顺序合并。

我现在面临的问题是,在合并发生后,我在 file1.pcapng 中的数据包在 new_file.pcapng 上找不到相同的时间戳。

有没有人做过这样的事情?我正在使用合并帽 2.0.2。

谢谢!

卢卡斯

0 投票
1 回答
813 浏览

c++ - 在 C++ 程序中生成 pcapng 文件

我有一个能够生成pcap文件的 C++ 程序。但是,我想在记录的帧中嵌入额外的信息,并且我知道更新的格式pcapng允许向帧添加任意评论,我想利用这一点。我也知道libwiretap能够生成pcapng文件,但我找不到参考、教程或示例。我的需求很简单:我只需要打开一个pcapng文件,然后不时将一个数据包转储到其中,然后最后关闭它。您对从哪里开始有任何有用的参考吗?