是否有一个BPF表达式只能捕获 arp-reply 数据包?目前,我正在使用 Pcap4J 和以下 BPF 表达式:
arp 和 dst 主机主机和以太网 dst mac
其中host是我的设备的 IP 地址,mac是我的主网络接口的 MAC 地址。不幸的是,当捕获数据包时,该过滤器也允许捕获 ARP 广播请求,因此我必须采取额外的步骤来检查 ARP 标头的操作字段是否为 2 而不是 1。
我有下面的代码,它可以使用 pcap4j 从接口捕获数据包,但我不确定如何打印数据包中存在的请求和响应数据。例如,如果我从邮递员那里进行 REST 调用,那么我想跟踪请求和响应。这与 Wireshark 相同。我被困在我能够捕获数据包的最后一部分,但不确定如何读取可以在控制台上打印的数据包内容。
try {
InetAddress addr = InetAddress.getByName("10.227.178.25");
PcapNetworkInterface device = Pcaps.getDevByAddress(addr);
System.out.println("You chose: " + device);
int snapshotLength = 64 * 1024; // in bytes
int readTimeout = 50; // in milliseconds
final PcapHandle handle;
handle = device.openLive(snapshotLength, PromiscuousMode.PROMISCUOUS, readTimeout);
String filter = "tcp port 80";
handle.setFilter(filter, BpfCompileMode.OPTIMIZE);
// Create a listener that defines what to do with the received packets
PacketListener listener = new PacketListener() {
@Override
public void gotPacket(Packet packet) {
// …
Run Code Online (Sandbox Code Playgroud) 我正在一个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 )?