如何获取捕获数据包的MAC地址?

时间:2016-03-20 19:03:19

标签: c# networking pcap.net

我试图构建一种嗅探器来捕获wifi探测请求。

使用Wireshark,我只需设置一个像eth.type eq 0x0806 and eth.dst eq ff:ff:ff:ff:ff:ff这样的过滤器,告诉我我正在监听所有广播数据包的ARP协议。我还没有找到如何监控信号强度,但也许有一天我会找到它......

我想对Pcap.Net做同样的事情。因此,一旦数据包被捕获,我会查看

//Check if the packet is Ethernet
if (packet.DataLink.Kind == DataLinkKind.Ethernet)
{
   //Check if the Ethernet packet is ARP
   if (packet.Ethernet.EtherType == EthernetType.Arp)
   {
      [...]
   }
}

但是使用Wireshark捕获数据包时,我的C#代码没有任何内容。

另一个问题,如何获取数据包源的MAC地址?如何通过无线设备获得信号强度?

1 个答案:

答案 0 :(得分:0)

获取MAC地址而言,也许我的这个建议可以帮到你。目前我正在使用pcap.net编码嗅探器。它在我的LAN连接上工作正常。但是当笔记本电脑与wifi网络连接时,我的代码没有捕获任何流量。它曾经做过,但在最近的几次尝试中它只是没有捕获任何类型的流量。而且我认为这很明显因为

  

pcap.net不包含任何AirPcap功能。

顺便说一下,我希望您已经看过pcap.net的示例代码。他们使用一个名为

的函数
... ... PacketHandler(Packet packet){ ... }

在这里我添加了这两行。它对我来说很好。

private void PacketHandler(Packet packet)
{
    string sourceMac = packet.Ethernet.Source.ToString();
    string destinationMac = packet.Ethernet.Destination.ToString();
    //--more code
}

现在它正在做它的工作。我已经测试了我的嗅探器以及NetworkMiner(C#中的另一个嗅探器项目,它比我的好得多:v)。我测试了很多,还在做,到目前为止我没有问题。

相关问题