想要识别以太网mac地址-Java

想要识别以太网mac地址-Java,java,ethernet,Java,Ethernet,我正在使用以下代码来获取mac地址:(在main中) 如果我运行代码,我会得到很长的输出(大部分为空) 我还得到了一个包含6个地址的列表 我通过ip-config检查了我的以太网mac地址,它在列表中 我想知道哪一个是以太网的mac,即使我在不同的PC上运行它,我也想知道,如何检查他们是否伪造了mac地址 所谓欺骗,我的意思是,如果有人在安装windows后更改注册表中的mac地址或通过软件进行更改。 我在一篇关于stack overflow中其他问题的帖子中读到了这篇文章,一个人评论说,即使有

我正在使用以下代码来获取mac地址:(在main中)

如果我运行代码,我会得到很长的输出(大部分为空) 我还得到了一个包含6个地址的列表 我通过
ip-config
检查了我的以太网mac地址,它在列表中

我想知道哪一个是以太网的mac,即使我在不同的PC上运行它,我也想知道,如何检查他们是否伪造了mac地址

所谓欺骗,我的意思是,如果有人在安装windows后更改注册表中的mac地址或通过软件进行更改。 我在一篇关于stack overflow中其他问题的帖子中读到了这篇文章,一个人评论说,即使有人欺骗了mac,他写的代码也能工作,因此代码不好。所以我认为它可以用java实现。我本来会问的,但我不能。
我的意思是,如果PC或笔记本电脑没有无线网络,它应该使用以太网mac地址。

在某种意义上,关闭的网络接口的mac地址不存在。考虑到当设备初始化时,MAC地址可以作为命令行参数提供给接口。无论如何,这也是Java在非活动网络接口上报告MAC地址时遇到困难的原因之一

实际上,您可以使用
Runtime.exec(…)
或类似工具运行
ifconfig
命令,然后解析输出以提取MAC地址。然而,我不知道这是否会一直有效


我认为您尝试的操作没有多大意义(出于上述原因),但如果您要尝试此操作,首先需要确认运行
ifconfig
会告诉您未连接和/或未通电的WiFi网络接口的MAC地址。手册页是。一旦确认了这一点,请阅读
Runtime.exec(…)
ProcessBuilder
的javadocs。如果您需要更基础的教程,请尝试以下教程:


我想知道哪一个是以太网的mac,即使我在不同的PC上运行它

根据MAC地址,您无法可靠地区分以太网和WiFi网络

我还想知道如何检查他们是否伪造了mac地址

通过欺骗,我假设您想知道NIC的MAC地址是否已从其(硬件)默认值更改。您无法从Java中区分这一点。事实上,我甚至怀疑你是否能从本族语中看出这一点


坦率地说,如果您尝试用(纯)Java实现这一点,您是否能够取得任何进展是值得怀疑的。标准Java API根本不支持这类东西。

你试过这个答案吗?@cyon我读了一遍,但无法正确理解,我是个新手;我想也许我应该使用NetworkInterface.getNetworkInterfaces(),但是我搜索了一下,通过这个我可以得到ip,但不能得到macethernet@cyon先生,问题已更新。@DakshShah-问题标有OSX,我的答案是针对OSX的。如果您实际使用的是Windows,我相信该命令称为“ipconfig”。我的回答解释了一种在Java中实现这一点的方法,但我不能保证它会起作用。。。基于上述原因,我没有更多的补充。我认为我的答案的最后一段尽可能地总结了情况。你可以阻止某人欺骗他们的IP地址,而且你无法便携或可靠地检测到他们是否有IP地址。句点反复要求人们“再看一眼”不会改变答案。
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();

    while (interfaces.hasMoreElements())
    {
      NetworkInterface nif = interfaces.nextElement();
      byte[] lBytes = nif.getHardwareAddress();
      StringBuffer lStringBuffer = new StringBuffer();

      if (lBytes != null)
      {
        for (byte b : lBytes)
        {
          lStringBuffer.append(String.format("%1$02X ", new Byte(b)));
        }
      }

      System.out.println(lStringBuffer);
    }
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.*;