获取指定IP的终端的MAC地址

    因为业务需要,需要给公司部分终端进行登记,以保证授权终端能够登录业务系统,最好的方法就是记录下每台终端的MAC地址来进行验证是否有授权。

    下面是采用调用API的方式获取指定IP的终端的MAC地址:

  [DllImport("Iphlpapi.dll")]
  public static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
  //dest为目标机器的IP;Host为本机器的IP

  [DllImport("Ws2_32.dll")]
  public static extern Int32 inet_addr(string ip);

  public static string GetNetCardAddress(string strIp)
  {
   try
   {
    IPHostEntry host = Dns.GetHostByName(System.Environment.MachineName);
    Int32 local = inet_addr(host.AddressList[0].ToString());
    Int32 remote = inet_addr(strIp);

    Int64 macinfo = new Int64();
    Int32 length = 6;
    SendARP(remote, local, ref macinfo, ref length);

    string temp = System.Convert.ToString(macinfo, 16).PadLeft(12, '0').ToUpper();

    StringBuilder strReturn = new StringBuilder();
    int x = 12;
    for(int i=0;i<6;i++)
    {
     strReturn.Append(temp.Substring(x-2, 2));
     x -= 2;
    }

    return strReturn.ToString();
   }
   catch(Exception error)
   {
    throw new Exception(error.Message);
   }
  }

    在上面的方式使用一段时间之后发现只能获取到同一网段或没有经过任何路由的终端的MAC地址,而对那些不同网段或经过了路由的终端的MAC地址则无法正常获取到MAC地址。下面的操作系统命令方式可以解决此问题:

  public static string GetNetCardAddress2(string strIp)
  {
   string mac = "";

   System.Diagnostics.Process process = new System.Diagnostics.Process();
   process.StartInfo.FileName = "nbtstat";
   process.StartInfo.Arguments = "-a "+strIp;
   process.StartInfo.UseShellExecute = false;
   process.StartInfo.CreateNoWindow = true;
   process.StartInfo.RedirectStandardOutput = true;
 
   process.Start();
 
   string output = process.StandardOutput.ReadToEnd();
   int length = output.IndexOf("MAC Address = ");

   if(length>0)
   {
    mac = output.Substring(length+14, 17);
   }
 
   process.WaitForExit();
 
   return mac.Replace("-", "").Trim();
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Kali是一种流行的渗透测试和网络安全工具的Linux发行版。要查询内网的MAC地址,可以使用以下步骤: 1. 打开终端:在Kali的桌面或应用程序菜单中,找到终端图标并点击打开。 2. 启动网络接口:在终端输入以下命令以启动网络接口: ``` sudo ifconfig eth0 up ``` 这里的"eth0"是一种常见的网络接口名称,如果你使用的是其他网络接口名称,请相应地修改。 3. 扫描网络:使用以下命令扫描当前网络中的设备: ``` sudo arp-scan --localnet ``` 这将扫描所有与你的Kali系统相连的设备,并显示它们的IP地址MAC地址。 4. 查找目标设备:在输出结果中,查找你想要查询MAC地址的目标设备的IP地址。然后,记录其对应的MAC地址MAC地址将以十六进制格式显示,通常由6组冒号分隔的数字和字母组成。 通过这些步骤,你可以在Kali中查询内网的MAC地址。请注意,你需要对网络扫描和查询设备MAC地址进行合法和授权的活动。 ### 回答2: 在Kali中查询内网的MAC地址,我们可以使用一些命令如ifconfig、arp和nmap。 首先,我们可以使用ifconfig命令来查看Kali机器自己的网络接口以及对应的MAC地址。打开终端,输入ifconfig命令,列出网络接口信息,会显示每个接口的MAC地址。 然后,我们可以使用arp命令来查看网络中其他设备的MAC地址。在终端中输入arp命令,可以列出路由器和其他设备的IP地址和对应的MAC地址。但请注意,arp只能查看本地网络中已经响应过通信的设备,对于那些没有响应过通信的设备,我们无法通过arp来查询到。 此外,我们还可以使用nmap工具来扫描局域网中的设备并获取他们的MAC地址。使用nmap需要安装该工具并学习其使用方法。nmap可以扫描整个局域网或指定IP范围,并提供设备的详细信息,包括MAC地址。 需要注意的是,以上方法均需要在内网环境中操作,并且具有足够的权限才能查询到MAC地址。 ### 回答3: Kali查询内网MAC地址的方法很简单,可以使用命令行工具来完成。下面是具体的步骤: 首先打开终端,可以通过点击左上角的“Applications”(应用程序)菜单,然后选择“Terminal”(终端)来打开。也可以使用快捷键Ctrl+Alt+T来快速打开终端。 接下来,在终端中输入以下命令: ```shell sudo arp-scan --interface=<your_network_interface> --localnet ``` 请将`<your_network_interface>`替换为您正在使用的网络接口名。例如,如果您正在使用以太网接口,则可以将其替换为"eth0"。如果您使用的是无线网卡,则可能是"wlan0"或"wlp2s0"。 执行命令后,系统可能会提示您输入密码。请输入您的密码,并按下Enter键。 然后,命令行工具将扫描您的本地网络,并显示所有连接到网络的设备的MAC地址及其相关信息。 扫描结果将显示每个设备的IP地址MAC地址和设备型号等信息。您可以通过查看MAC地址列,找到您感兴趣的设备的MAC地址。 请注意,在执行这个命令之前,确保您已经获得了合法的授权,并且只能在您有权访问的网络上使用。这是为了避免非法侵入他人的网络并保护您和他人的隐私。 希望这个回答能够帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值