【问题标题】:Tell if a mac address is present on a network using c#使用c#判断网络上是否存在mac地址
【发布时间】:2016-12-15 22:30:24
【问题描述】:

我正在尝试使用 c# 判断网络上是否存在 mac 地址

我们正在尝试在办公室仪表板中创建一个 whos,我们将检查该人的手机是否通过 wifi 连接(我们将从谁那里获取 mac 地址)是

我的网络能力不是很强,所以我什至不知道从哪里开始。

【问题讨论】:

  • 这就是 ARP 的用途。您的主机对它使用的每个 MAC 地址都有一个 ARP 缓存。除非您尝试使用 IP 连接到主机,否则无法获取 MAC 地址,然后 ARP 将第 3 层地址解析为第 2 层地址。 ARP 缓存会超时条目,但这个时间因操作系统而异。

标签: c# networking arp


【解决方案1】:

MAC 地址在第一个路由器/交换机上被剥离,因此它们对于确定连接的内容不会有用,除非您可以访问路由器/交换机上的监控端口并且您只有一个。如果你在一个多跳网络上,那就没用了。

编辑

好的,我已经删除了我说的一堆东西,现在我知道你在谈论手机和 wifi 连接。

我能想到的最简单的方法是将路由器的 DHCP 租用时间设置为 10 分钟左右,然后询问路由器“谁连接了”。

只要客户端还在,最短的时间就会在到期时自动续订。

许多路由器在管理页面上显示当前的 DHCP 租约。您可以使用您的应用程序抓取页面并获取所有当前活动的 DHCP 租约的列表。

如果您正在运行使用 dnsmasq 的路由器,您也可以从 /tmp/dnsmasq.leases(在路由器上)获取它。 (位置可能会改变,但 /tmp 很常见)。

第一种解决方案需要解析网页,第二种需要从路由器获取纯文本文件并进行解析。

无论如何,了解“谁已连接”的最佳方式是询问他们所连接的设备。

【讨论】:

  • 我们都在一个交换机上用于以太网和 wifi,所以我不担心 mac 地址被剥离。我的计划是每 60-90 秒扫描一次,如果有人离开了 2-3 次扫描,则将其标记为“不在办公室”
  • 我也指的是通过 wifi 连接到我的网络的手机,如果我在原始帖子中不清楚,请原谅
  • 应该可以。如果您在几分钟内无法 ping 手机的 WiFi 接口,它可能已经消失(或者只是没有连接)。这假设手机 wifi 连接是可 ping 的。我不确定他们是不是。
【解决方案2】:

您可以运行 windows arp -a 命令行来找出所有连接到当前网络的设备。

然后你可以解析出每一行的mac地址来确定谁在办公室。

【讨论】:

  • @M.Hassan 是用来获取你自己的 MAC 地址的,不是吗?
  • 这不会只显示 ARP 缓存中的条目吗?这可能不是一个完整的清单,除非我没有完全理解 arp 命令。
  • 链接包括GetMacUsingARP(string IPAddr)stackoverflow.com/a/1413201/3142139
  • @rmc00 是的。如果服务器保持打开状态,我会假设 arp 缓存有一个完整的列表。但如果它只是重​​新启动,那么我们就不走运了
猜你喜欢
  • 2014-03-27
  • 2011-02-03
  • 2012-08-06
  • 1970-01-01
  • 2011-06-15
  • 2010-11-19
  • 2010-09-18
  • 1970-01-01
相关资源
最近更新 更多