使用c#获取连接到我的热点的设备的MAC地址

时间:2016-01-29 18:55:59

标签: c#

此代码提供了我的PC的MAC地址,但我想找到连接到我的wifi热点的那些移动或计算机设备的MAC地址。

string mac = "";
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{

    if (nic.OperationalStatus == OperationalStatus.Up &&
       (!nic.Description.Contains("Virtual") && !nic.Description.Contains("Pseudo")))
    {
        if (nic.GetPhysicalAddress().ToString() != "")
        {
            mac = nic.GetPhysicalAddress().ToString();
        }
    }
}
MessageBox.Show(mac);

我想做类似的事情,比如下面的伪代码:

string MAC;
//method for retrieving mac address of the connected devices to my hotspot. 

ConnectedDevices() 
{
    // some code which will give you MAC of that device.
    MAC = mac address of connected device;
}
label1.text=mac.toString();

谢谢!

3 个答案:

答案 0 :(得分:1)

在第一次近似时,您需要一个ARP缓存查看器(尝试执行" arp -a"并查看它是否是您想要的。)。

请参阅this question

答案 1 :(得分:0)

对此的一些想法:

  1. 从热点的界面中删除IP地址。我有telnet,ssh和web接口,所以我可以从中获得IP和MAC。

  2. 使用热点的ARP表 - 它也将包含IP / MAC。

  3. 在子网上使用ARP(如果您有幸拥有子网热点流量)

  4. 为了处理ARP数据,这里有人处理命令的输出和提供VB代码的帖子直接访问列表,可以翻译。 http://blog.laplante.io/2011/11/reading-arp-entries-with-c/

    在过去的经验中,我不得不广播ping网络以查看所有设备。例如ping 192.168.1.255(ping C类192.168.1。*) - 这里有很多方法: Send a ping to each IP on a subnet 这会强制地址在arp中注册。

    当然,您需要将ARP数据过滤到您要从热点查找的特定数据,因为如果您在服务器或本地计算机上运行此数据,则LAN上的所有内容都不是必需的,这不是必需的热点上的所有内容,所以你想要写一些东西来专门从热点获取数据。

答案 2 :(得分:0)

您可以从代码中运行netsh wlan show hosted并解析输出。 netsh wlan show hosted将为您提供热点连接设备的数量和每个设备的MAC地址:

enter image description here