问题标签 [pcap4j]

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

java - 使用 pcap4j 读取数据包内容

我有下面的代码,它可以使用 pcap4j 从接口捕获数据包,但我不确定如何打印数据包中存在的请求和响应数据。例如,如果我从邮递员那里进行 REST 调用,那么我想跟踪请求和响应。这与 Wireshark 相同。我陷入了能够捕获数据包的最后一部分,但不确定如何读取可以在控制台上打印的数据包内容。

所以我有两个问题:

  1. 如何捕获 HTTP 请求和响应并将其打印在控制台上。
  2. 我怎样才能让 java 代码连续运行,以便它继续捕获数据包。

我确实检查了 pcap4j 文档,但不确定如何读取可以读取 HTTP 请求和 HTTP 响应的数据包内容。

0 投票
1 回答
619 浏览

pcap4j - 无法在 pcap4j 中读取 TcpPacket

我正在尝试使用 pcap4j 从环回地址获取 TcpPackets。我可以成功读取数据包,但无法将它们转换为 TcpPackets:

注意事项:

我正在使用 getNextPacketEx 所以我可以从数据包工厂中受益

我在 pom.xml 中的依赖项看起来像

我还尝试过手动打开数据包(参见注释代码)。在我得到一个包含碎片数据的 IpV4Packet 之前,它会成功运行。

当我尝试构建 TcpPacket.newPacket... 我收到错误:

我想做的是读取 tcp 数据包,重新组装它们,然后读取我想要嗅探的 http 内容。任何人都可以帮忙吗?

更新:这是 ipv4 数据包的完整转储,用于在端口 8080 的 localhost 上进行简单的 Http 获取:

0 投票
1 回答
117 浏览

wireshark - 使用 pcap4j 模拟 HTTP/2 流

我正在尝试捕获 TLS 连接的未加密字节并将它们记录到 cap 文件中以分析 HTTP/2 流量。我做了很多假设,这甚至是可能的。但是,如果我可以在 Wireshark 等有用的工具中看到流量,我愿意捏造 HTTP/2 层以下的几乎所有内容。

https://github.com/yschimke/okhttp/commit/c6b0b4c0ba3b59d44cf292955eef2685ed6094e7#diff-d4b38ff70d61641e49af93db2892080f47a2480af92ca151b2daabb50bbc459b

我的方法最终归结为

有没有人对 pcap4j 或 pcap 文件有任何建议,看看我做错了什么?

我正在写的数据包是 IPv4>TCP>Data

tcp 转储数据包

但 Wireshark 显示

HTTP/2 序言

0 投票
0 回答
54 浏览

rest - Pcap4j:使用 IPv6 地址获取客户端 MAC 地址

我正在尝试使用数据包捕获(pcap4j)获取客户端的 MAC 地址。我已经尝试MacAddress通过MacAddress.getByName(IP_ADDRESS)Where the IP_ADDRESSis taken from创建对象HttpServletRequest.getRemoteAddress()

示例代码

现在是问题部分:

我一直在我的本地主机上对此进行测试,request.getRemoteHost()并且addr.getHostName()两者都返回了我的 ipv6 环回地址。因此无法创建 MacAddress 对象,stacktrace:

我如何确保它适用于 ipv4 和 ipv6,因为我不确定客户端的地址方案是什么。我打算在 RESTful Web 服务中使用它。

0 投票
0 回答
19 浏览

java - DNS MX 重传 PCAP4J

我需要使用 pcap4j 查找域中的所有邮件服务器

我用代码创建 MX DNS 数据包并发送它,但数据包要重新传输(wireshark img)

nslookup -type=mx vk.com 运行正常(cmd)

创建 Dns 数据包:

0 投票
0 回答
67 浏览

java - 使用 pcap4j 截断 pcap 文件

我正在使用 pcap4j java 库,以便将到达/发送到/来自设备的流量保存在 pap 文件中。我对只保存数据包的标头(IP、TCP/UDP/ICMP)特别感兴趣,因为有效负载对我的应用程序并不重要。我看到 tshark 有一个选项可以做到这一点: -s 允许保存到达数据包的第 x 个字节。

pcap4j库可以吗?我怎么能做到?

我试图通过将 x 字节保存在 byte[] 中来保存它们,但随后 pcap 的内容发生了变化,例如 TCP 标头中的长度。

0 投票
0 回答
67 浏览

networking - PCAP4J 发送和监控 TCP/UDP 数据包

我计划实现类似于 Nmap 的远程操作系统检测,但我不想使用 Nmap 并且想使用本机库或 java 或 C++。

我探索了 pcap4j 但使用 pcap4j 我只能捕获网络接口上的数据包。pcap4j 有发送数据包命令,但不知何故它没有响应任何东西。

任何人都知道如何将 TCP 或 UDP 数据包发送到远程机器并使用 pcap4j 从它获取响应。

0 投票
0 回答
20 浏览

java - G1 Old Gen 发生 pcap4j 实现

在我的工作中,我们开发了一个应用程序来捕获 Linux Dev Env 上的数据包。我们使用了 pcap4j 库。就像 dumpbypacketcount 的 API 一样简单,G1 Old gen 是在针对 100000 个数据包计数的 1 TPS 负载测试一段时间后进行的。我们在 a 中捕获实时数据包并将它们存储在 HashMap 中,然后将此映射传输到线程。该线程仅使用 dumper.dumpRaw() 转储数据包。我们观察到 dumper.dumpRaw() 正在获取资源/对象并在 Jconsole 上飙升。

我们无法调试该问题。我们在 javaopts 中将堆内存保持在 8G(也尝试过 16G)。有什么建议么?