问题标签 [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.
libpcap - 如何使用 libpcap 在多个设备上进行嗅探?
我正在尝试创建一个可以在多个设备上嗅探的嗅探器。在我的代码中,程序将接收用户想要嗅探的设备列表。我获取设备列表并将其存储到一个数组中,该数组用于循环并传递给创建 pcap_t 句柄的函数,如下面的函数:
但是,当我在我的 for 循环中调用此函数时,它只能在一台设备上捕获,因为它似乎卡在 pcap_loop 回调函数中。因此,我尝试进行多线程处理,并且我用来传递所有设备以打开和捕获以通过循环的 for 循环,但 pcap_loop 回调函数似乎没有执行。以下代码显示了我对多线程的使用:
有谁知道我做错了什么,你能为我提供如何解决这个问题的建议吗?
谢谢,林
libpcap - 使用 pcap_next_ex 或 pcap_next (libpcap) 的正确方法
我在一个项目中看到了这种代码:
pcap_next_ex 返回后,数据包状态将设置为 TP_STATUS_KERNEL,表示该 buf 已返回内核。代码:
在某些高速环境下,会不会出现内存问题?
使用 pcap_next / pcap_next_ex 的正确方法是什么?
ruby - 将 C 结构转换为 FFI::Struct
我很难从 FFI 中的 pcap 库中设置结构。
结构:
相关的 Ruby 代码
以上附函数定义
测试代码(以root身份运行)
输出是
偏移量对我来说看起来不错,但我的 C 非常生锈。我期待 2 个设备:lo 和 eth0 作为名称。
linux - 如何确定目的MAC地址
我的应用程序在 CentOS 5.5 上运行我需要使用 libpcap API 发送原始数据包:
到特定的 IP 地址 如何确定 MAC 地址属于特定目标?
linux - 使用 libpcap 加入/离开多播组
我需要接收多播流,但在 CentOS 5.5 上按源 MAC 地址过滤传入的数据包。我打算使用libpcap
图书馆。是否可以使用 加入/离开多播组libpcap
?如果是,该怎么做?
谢谢
tcp - 从 * char eth/ip/tcp 打包程序表示中获取 TCP 选项(超出 tcphdr->doff)
使用http://www.tcpdump.org/sniffex.c获取数据包选项。
- data + struct ip 指向(指针)(无符号字符)内存中的 TCP 标头
- data + struct ip + thdr->doff*4 指向 TCP 选项的结尾 = 数据的开头
鉴于以下结构,
TCPDump 代码中也有一个参考:
因此,要读取选项所在的数据包的一部分,需要:
- 假设数据包中指定的长度大于结构长度
- 在 (ethernet + ip + tcphdr) 结构的长度之后读取 N 个字节?
- 删除这些字节,现在读取有效负载。
正确的?读取随机有效负载的字节序列而不是实际数据让我很生气。
python - 用于数据包创建//操作的 Python 库
我目前正在研究 libpcap-python,我发现它对修改数据包数据没有帮助(我不知道如何)。有没有可以用来创建网络数据包的库?
c - 从 PPP 接口捕获数据包的问题
我正在使用 libpcap 从 PPP 接口捕获数据,并添加过滤器如下:
但是当我在回调函数中嗅探数据包时,我发现ip数据包的格式是
不正确,标头大小不是 20 字节。
而当我从 eth0 抓包时,一切正常。
那么谁能告诉我如何通过 libpcap 从 PPP 接口获取正确的 ip 数据包,谢谢!
c - 使用 libpcap 查找设备地址
我正在尝试在我的计算机中查找设备的地址。到目前为止,我设法获得了设备列表(使用 pcap_findalldevs),但我不知道如何到达这些地址。我看到了这个手册页 - http://www.tcpdump.org/pcap3_man.html 写着这样的东西
寻址一个指向接口地址列表的第一个元素的指针
然后这个
地址列表的每个元素都是 pcap_addr_t 类型,并具有以下成员:
所以我有这个代码
编译没问题,但是当我尝试运行它时,我得到了这个:
设备:1. eth0 - (null)addres: 144.208.30.8 2. wlan0 - (null)addres: 128.213.30.8 分段错误
我可以理解段错误,因为第三个设备是 USB 并且它没有地址,但是 eth0 和 wlan0 的那些 IP 是错误的,它们不匹配。
我究竟做错了什么?
c - 使用 libpcap 同时收听两台设备
我正在尝试使用 libpcap 在两台设备上收听,但我仍然不知道如何做到这一点。我试图将设备设置为“任何”,但它不起作用。我正在尝试编写 dhcp 中继代理,所以我需要监听 eth0 和 eth1。
我尝试创建两个 pcap_loop,每个都有不同的设备和处理程序,但只有第一个 pcap_loop 有效,第二个被忽略。
有什么方法可以做到这一点,还是我应该离开 libpcap 并尝试使用原始套接字来做到这一点?