问题标签 [pcap]

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 回答
3243 浏览

tcp - 使用 libnids 捕获和组装 TCP 流

我一直在写一个简单的嗅探器工具。我开始使用 libpcap,但后来意识到跟踪 TCP 流信息会很有用,所以我开始阅读并尝试使用 libnids。

这是一个很棒的工具,但是如果它没有见证某个流的 TCP 握手(SYN、SYN/ACK、ACK),它就不会在其内部的流哈希表中创建新记录。因此,除非我在握手发生之前启动嗅探器,否则我将无法看到大量数据。文档有点缺乏。有谁知道是否有可能绕过这个限制?

0 投票
1 回答
250 浏览

c - C pcap 检测入站数据报

在 CI 中,将数据报套接字(AF_INET、SOCK_DGRAM)绑定到 INADDR_ANY。然后我会定期使用这个套接字来发送和接收数据报,并使用 pcap 监视数据包的流向。问题是,我无法使用 pcap 判断数据包是传入还是传出。

传输/接收和 pcap 监控在不同的线程中运行,出于同步原因,它们无法通信。我只想跟踪传入的数据包,而不是发送的数据包,所以有人知道我该怎么做吗?

我已经考虑过测试目标IP地址,但我想不出任何方法来获取我的本地IP。正在运行的机器没有静态 ip,更不用说分配的域名,而且似乎 getsockname 在绑定到 INADDR_ANY 的套接字上不起作用。还尝试使用 ioctl(sockfd, SIOCGIFCONF, &buffer),它也不起作用 - 设置 buffer.ifc_len=0。

0 投票
2 回答
816 浏览

filter - WinPcap如何忽略自己的数据包?

当我通过 WinPcap 注入任何数据包时,它将在这一刻被捕获。我不想捕获数据包,我自己注入了女巫。最简单的方法是什么?

0 投票
2 回答
894 浏览

c# - 使用 C# 的 Pcap 进行数据包记录

我目前正在使用 C# 的 pcap 库,想知道是否有任何内置函数可以删除 IP 标头和 TCP/UDP/ECT 标头?如果没有,任何人都可以发布他们是如何实现删除此类标题的吗?

0 投票
1 回答
1561 浏览

c - pcap 的零读取超时

-1 是 pcap 的有效读取超时吗?

有人告诉我,将 to_ms 设置为 -1pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf);会导致它在检测到数据包时立即返回 - 实际上是零超时。有一些方法可以设置零超时是很有意义的,但是为什么不让 -1 是无限的,而 0 是 0 呢?那会更合乎逻辑。此外,我无法以任何方式确认 -1 的 to_ms 值对 pcap 有什么影响。

那么,-1 是一个有效的超时值吗?如果有,它有什么作用?如果没有,有没有办法将检测超时设置为零?

0 投票
1 回答
510 浏览

c# - C# 奇怪问题的 Pcap 库

我目前正在使用 PCAP C# 库,并且没有对收到的数据包进行任何更改。下图说明了该问题。

http://img269.imageshack.us/img269/6549/wtfisthisshitx.jpg

左边是 Wireshark(捕获数据包的正确版本),右边是我使用 Pcapсфз 库捕获的。c2s不属于。有没有其他人见过这个?

我用来接收数据包的代码几乎 100% 与他们网站上发布的示例一样。

0 投票
1 回答
1149 浏览

c - 使用 libpcap 同时收听两台设备

我正在尝试使用 libpcap 在两台设备上收听,但我仍然不知道如何做到这一点。我试图将设备设置为“任何”,但它不起作用。我正在尝试编写 dhcp 中继代理,所以我需要监听 eth0 和 eth1。

我尝试创建两个 pcap_loop,每个都有不同的设备和处理程序,但只有第一个 pcap_loop 有效,第二个被忽略。

有什么方法可以做到这一点,还是我应该离开 libpcap 并尝试使用原始套接字来做到这一点?

0 投票
3 回答
12319 浏览

c++ - 如何解析 TCP 数据包有效负载

我正在使用 pcap 来捕获我想为其解析有效负载的 TCP 数据包。我的策略如下:

  1. 获取以太网标头并检查它是否具有类型ETHERTYPE_IP(IP 数据包)
  2. 检查IP包是否有协议IPPROTO_TCP(TCP包)
  3. 检查有效载荷大小 > 0 (size = ntohs(ip_header->total_length - ip->header_length*4 - sizeof(struct tcp_header))

  4. 解析有效载荷(获取主机 url)

我还没有开始解析有效载荷,因为我得到了差异。下面是使用 filter 捕获的 10 个 TCP 数据包的有效负载的打印输出"host = www.google.com"

数据包编号:3:TCP 数据包:源端口:80 目标端口:58723 数据包中没有数据

数据包编号:4:TCP 数据包:源端口:58723 目标端口:80 数据包中没有数据

数据包编号:5:TCP 数据包:源端口:58723 目标端口:80负载: GET / HTTP/1.1 主机:www.google.com 用户代理:Mozilla/5.0(Macintosh;U;Intel Mac OS X 10_6_5;en- us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8 ,image/png, / ;q=0.5 Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: THICNT=25; SID=DQAAAKIAAAB2ktMrEftADifGm05WkZmlHQsiy1Z2v-连接:保持活动

数据包编号:6:TCP 数据包:源端口:80 目标端口:58723 数据包中没有数据

数据包编号:7:TCP 数据包:源端口:80 目标端口:58723有效负载: \272نu\243\255\375\375}\336H\221\227\206\312~\322\317N\236\255A\343 #\226\370֤\245[\327`\306ըnE\263\204\313\356\3268 )p\344\301_Y\255\267\240\222x\364

数据包编号:8:TCP 数据包:源端口:58723 目标端口:80 数据包中没有数据

数据包号:9:TCP 数据包:源端口:80 目标端口:58723有效负载: HTTP/1.1 200 OK 日期:星期一,2010 年 11 月 29 日 10:11:36 GMT 过期:-1 缓存控制:私有,max-age= 0 内容类型:文本/html;charset=UTF-8 内容编码:gzip 服务器:gws 内容长度:8806 X-XSS-Protection:1;模式=块 \213

为什么有效载荷和端口存在差异?理想情况下,我只想解析像数据包 5 这样的数据包。如何忽略像 7 和 9 这样的数据包?

0 投票
1 回答
359 浏览

c - Ruby/C/Makefile,-lpcap/#include 中使用的默认 pcap.h 文件是什么

如何确定哪个 pcap.h 文件包含在通过 Makefile 编译/安装的 C 源代码中?

具体来说,它是一个 Ruby 库 (pcaprub),通过以下方式安装:

而 extconf.rb 是:

0 投票
2 回答
135 浏览

c - pcap 只接受新的连接

我编写了一个非常简单的 C 程序来使用 pcap 进行数据包捕获。问题是,它只涉及我网络活动的一小部分。(我认为模式是它只接收新的 TCP 连接。)

例如,当我使用浏览器或 wget 执行 GET 请求时,或者当我启动 X-Chat IRC 客户端并连接时,它会接收到一堆数据包。

但是,当我让 IRC 客户端运行时,它不会接收与文本消息对应的数据包。同样,它不会接收我家庭网络上的 ARP 广播,或者当我 ping 网站时 ping 数据包。

我想知道为什么它只接收我发送/接收的一小部分数据包。这是我的代码。我很感激任何反馈。

代码: http: //pastebin.com/QDHRy6jM