问题标签 [libpcap]

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 投票
2 回答
4343 浏览

c++ - 如何捕获接入点和连接到它的主机的 MAC 地址?

我知道我必须使用 libpcap 库来捕获 IEEE 802.11 帧以显示它们的 MAC 地址,例如我的无线适配器处于监控模式,并且在我执行 pcap_datalink 时仅支持“802.11 plus radiotap radio header”。

在 pcap_loop 的回调函数中,我应该如何从数据包中提取 MAC 地址?我如何区分不同类型的数据包?谷歌搜索并没有太多答案,主要是关于如何从有线接口提取数据包。

0 投票
3 回答
10235 浏览

c - libpcap 从 AF_LINK sockaddr_dl (OSX) 获取 MAC

我正在尝试使用 C 在 OSX 上获取我所有接口的 MAC 地址。获取它的常用方法 Linux 在 BSD 上不起作用 - 从我所看到的一切来看,您必须获取接口并查找类型AF_LINK。我的问题是 LLADDR(sockaddr_dl) 给了我一大堆数据(包括我的 MAC),我不知道数据的格式。例如;以下代码将输出:

设备:en1 链接 sdl_alen:101 mac:31:f8:1e:df:d6:22:1d :00:00:00:00:00:00:00:00:00:00:00:00:00:00 :00:b0:06:10:00:01:00:00:00:c0:02:10:00:01:00:00:00:00:00:00:00:00:00:00:00 :40 :03:10:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:03:00:6c :6f:30:00:00:00:00:00:00:00:00:00:00:00:00:00:70:03:10:00:01:00:00:00:e0:02 :10:00:01:00:00:

我的 MAC 是粗体的。似乎这是一直以来的格式,但如果我可以将 LLADDR(sockaddr_dl) 转换为某些东西,我会更舒服。在 net/if_dl.h 中,LLADDR 定义为:

据我所知,这就是说结果是类型 (void *) - 没有帮助。

其他帖子如:

在弄清楚如何使用 ioctl/SIOCGIFADDR/SIOCGIFCONF 在 Mac OS X 上获取以太网接口信息时遇到问题?

似乎认为他们已经弄清楚了,但是如果您查看代码,您会发现它不会工作,因为 sdl_alen 不是 6。

0 投票
2 回答
2958 浏览

c++ - 线程和 pcap 问题

我有一个允许用户扫描网络的 GUI 程序,问题是当调用 pcap_loop 函数时,我的 GUI 程序变得无响应。(pcap_loop 阻塞了当前线程)。

当我尝试使用 pthreads 时,我在 pcap_loop 函数处遇到了 SIGSEGV 错误。为什么?就好像线程看不到 procPacket 函数本身一样。

0 投票
1 回答
710 浏览

c++ - libpcap 和 winpcap 中的函数名称是否相同?

libpcap 和 winpcap 中的函数名称是否相同?如果不是,哪些名称不同,或者大多数名称不同?

另外,libpcap++ 可以用于 winpcap 吗?

0 投票
3 回答
1200 浏览

c - 使用 libpcap 测量上传/下载速率

我在 C 应用程序中使用 libpcap(和 Windows 上的 winpcap)来监控网络流量。我需要区分每个网络适配器上的上传和下载流量,以生成连接速度统计信息,但库使用的过滤器表达式似乎不太容易支持这一点(即没有“传入”/“传出”运算符)。

我考虑过的一种方法是查询每个适配器的 IP 地址,然后使用过滤器,例如src host 1.2.3.4(测量上传)和dst host 1.2.3.4(测量下载)。

我的问题是:

是否有比上述更好/更简单的方法(让我对每个适配器使用相同的过滤器表达式的方法会很好)?

如果上述方法是可行的方法,那么单个适配器是否有可能具有多个关联的 IP 地址?我问的原因是pcap_addr保存单个适配器(in struct pcap_if)地址详细信息的结构有一个“下一个”成员,表明这是可能的。

0 投票
1 回答
1388 浏览

perl - 如何从 Net::Pcap 重组 HTTP 数据包?

我正在使用该Net::Pcap模块通过此过滤器捕获数据包:

在 Net::Pcap 事件循环中,我使用了一个回调函数:

my_callback看起来像这样:

如何将 HTTP 数据包组合成一个数据包并提取其标头?

0 投票
3 回答
233 浏览

c - C libpcap 解析 DLT 条目,一些讨厌的错误

在编写自己的嗅探器时,我发现了一个示例,该示例仅在谈论以太网时才开始。其他 DLT_types 已被忽略。它们可以在 pcap-bpf.h 中找到。我写了一些行,试图实现缺少的 pcap_resolve_dlt()。这确实是讨厌的代码(1),似乎可以工作,尽管我遇到了一个讨厌的错误,需要为相应的数字留一个空格,例如:

也许这种方法本身是完全错误的,应该直接 grep pcap-bpf.h。

1) http://nopaste.info/4a2470cc83.html,使用 strstr()

亲切的问候,

查尔斯

标签:C libpcap DLT_

0 投票
1 回答
263 浏览

perl - 为什么不打印这个 HTTP 标头?

我有以下代码:

有人可以解释为什么要打印此行:

以及为什么不打印:

这里可能是什么问题?有人可以给个建议吗?是不是和libpcap的回调机制有关?

0 投票
3 回答
6335 浏览

c - libpcap 函数的 root 权限要求

pcap_lookupdev()非 root 用户运行时填充 errbuf 变量,而以 root 用户运行时,相同的函数返回第一个可用网络接口的值。

操作系统或库是否禁用了此访问权限。我认为是操作系统。什么是正确答案?

这不是作业问题

0 投票
1 回答
10760 浏览

networking - pcap_loop 和 pcap_dispatch 的区别

pcap_loop 和 pcap_dispatch 之间到底有什么区别?