当前位置: 首页 > 知识库问答 >
问题:

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

秦奇
2023-03-14
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.*;

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

共有1个答案

公西志文
2023-03-14

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

实际上,您可以使用runtime.exec(...)或类似的方法来运行ifconfig命令,然后解析输出以提取MAC地址。但是,我不知道这是否永远行得通。

我不认为您试图做的事情有多大意义(因为上面的原因),但是如果您要尝试这样做,您首先需要确认运行ifconfig会告诉您未连接和/或未通电的WiFi网络接口的MAC地址。手册页在这里。确认之后,阅读javadocs forruntime.exec(...)processbuilder。如果您需要更基本的教程,请尝试以下教程:http://alvinalexander.com/java/java-exec-processbuilder-process-1

我还想知道如何检查他们是否欺骗了mac adress

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

坦率地说,如果您尝试在(纯)Java中这样做,是否会取得任何进展是值得怀疑的。标准的Java API根本不支持这种事情。

 类似资料:
  • 问题内容: 我使用的是Api级别8的Android,我想获取我的以太网接口的地址(eth0)。 在API级别8中,NetworkInterface类没有函数getHardwareAddress()。WifiManager也不起作用,因为它不是无线接口。 提前致谢! 问题答案: 假设您的以太网接口是eth0,请尝试打开并读取文件。

  • 本文向大家介绍IP地址和MAC地址之间的区别,包括了IP地址和MAC地址之间的区别的使用技巧和注意事项,需要的朋友参考一下 MAC地址和IP地址,都用于识别网络或Internet上的计算机。MAC地址由NIC卡的制造商提供,并提供计算机的物理地址。IP地址由Internet服务提供商提供,被称为网络上连接的计算机的逻辑地址。 以下是MAC地址和IP地址之间的一些重要区别。 序号 键 MAC地址 I

  • 问题内容: 我想检索用于访问特定网站的网络接口的以太网地址。 用Java如何做到这一点? 解决方案 请注意,公认的的解决方案仅在Java 6中可用。除了执行i(f | p)confing,似乎没有Java 5的解决方案。 问题答案: java.net.NetworkInterface.getHardwareAddress(Java 6中添加的方法) 必须在您感兴趣的机器上调用它- MAC不会跨网络

  • 问题内容: 我正在尝试制作一个可以更改PC /笔记本电脑IP地址和子网掩码的程序。我要输入的内容与Windows(ip / subnet,dns / alternate dns)上IPv4属性的接口相似。 我现在可以想到的是使用netsh命令更改Windows ip。我想做的是在Windows上设置/获取以太网设置 提前致谢 问题答案: 您可以在JAVA中更改注册表,这应该可以解决问题。这些应该有

  • 说明 地址URL /v1/common/Address/getAddress 支持格式 {url}?k1=v1&k2=v2&k3=v3&... HTTP请求方式 GET 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的AppKey access_token string yes 授权

  • 问题内容: 我需要一种跨平台的方法来在运行时确定计算机的MAC地址。对于Windows,可以使用“ wmi”模块,在Linux下,我能找到的唯一方法是运行ifconfig并在其输出中运行正则表达式。我不喜欢使用只能在一个OS上运行的程序包,而且更不用说容易出错的语法解析另一个程序的输出。 有谁知道跨平台方法(Windows和Linux)方法来获取MAC地址?如果没有,还有谁比我上面列出的方法更优雅