如何在局域网中捕获Http数据包

时间:2014-03-29 03:41:41

标签: java http libpcap winpcap jnetpcap

我正在研究Java项目。为了创建一个应用程序,它将捕获我的局域网中的所有数据包,并能够看到HTTP流量。我目前正在使用Jnetpcap API,我成功列出了界面并进行实时捕获并提取HTTP PACKETS。我遇到的问题是我只捕获自己机器的流量。我已经在google中查找了这个。我到目前为止找到的唯一解决方案是启用混杂模式,我使用ifconfig cmd做到了,遗憾的是问题仍然存在。我不知道如何解决这个问题。任何解决方案.. ??

2 个答案:

答案 0 :(得分:0)

我使用的是winpcap(不是Jnetpcap),但我觉得有些事情是不变的。

无论是否在操作系统中启用混杂模式,都必须在打开巡视网络适配器时传递混杂模式标志。例如,在winpcap中我们喜欢如下代码:

pcap_open(d->name, 65536, PCAP_OPENFLAG_PROMISCUOUS /* promiscuous mode */ , 1000, NULL, errbuf) 

有关详细信息,请查看official winpcap documentation

祝你好运

Ya Ali。

答案 1 :(得分:0)

您只能捕获实际通过您正在侦听的框的流量。混杂模式仅意味着如果流量恰好到达您的盒子但未发送到它,它将读取该流量。但是,如果您使用的是网络集线器,则只会遇到这种情况。在交换网络上,只有实际用于您计算机的流量才会进入您的计算机。

您需要使用具有SPAN端口的交换机,以便监控通过该交换机的所有流量,或者在您的所有网络流量通过的系统上运行监控程序(位于您的网络边缘的计算机)网络,例如)。