如何在pcap4j中捕获域?

Jua*_*ian 4 java url android pcap4j

我正在一个Java(Android)项目中工作,主要思想是捕获url并阻止对危险页面的访问,因此为了获取用户访问的url,我正在使用pcap4j库如下:

IpV4Packet ipV4Packet = packet.get (IpV4Packet.class);
Inet4Address srcAddr = ipV4Packet.getHeader().GetSrcAddr();
System.out.println(srcAddr);
Run Code Online (Sandbox Code Playgroud)

因此,如果我访问网址(https://es.wikipedia.org/wiki/Google),代码将生成域名,类似于:(wikipedia.org),但我真正需要的是生成的主网址请求,如何获取完整的 URL ( https://es.wikipedia.org/wiki/Google )?

kai*_*toy 5

我想确实很难。

为了获取 URL,您需要查看 HTTP 数据包的请求行。但Pcap4J现在不支持HTTP,因此您需要编写数据包类来解析HTTP数据包。

而且,HTTP 是在 TCP 上的,TCP 通常会对上层数据包进行分段。在解析 HTTP 数据包之前,您需要重新组装它们。

更重要的是,如果是 https,则 HTTP 数据包由 TLS 层加密和分段。在这种情况下,您需要重新组装并解密HTTP数据包来获取URL。要解密 TLS 数据包,您需要 HTTP 服务器的密钥。但是,即使您拥有密钥,当在 TLS 会话中使用 Diffie-Hellman 密钥交换算法时,您也无法解密数据包。