Java MAC地址授权

时间:2011-04-02 16:09:21

标签: java

基本上我希望java检索mac地址并打开一个带有Mac地址编码的URL。 URL将利用PHP来检查MAC地址是否在允许MAC地址列表中(我已经完成了这部分)并输出“true”或Java可以检查的任何内容。如果确实如此,Java会将boolean授权更改为true。在那之后,我可以简单地发出一个if语句来继续或不继续。

我只需要一些简单的东西,因为我不是一个出色的程序员。我还在学习。

3 个答案:

答案 0 :(得分:3)

  1. 获取MAC地址

  2. 使用URLEncoder#encode(String, String)

  3. 对参数进行网址编码

答案 1 :(得分:1)

这是一个示例,列出了Java 6中的网络接口的名称和MAC:

Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements()) {
    NetworkInterface ni = e.nextElement();
    if (!ni.isUp()) {
        continue;
    }

    byte[] address = ni.getHardwareAddress();
    if (address == null || address.length == 0) {
        continue;
    }

    StringBuilder sb = new StringBuilder(2 * address.length);
    for (byte b : address) {
        sb.append("0123456789ABCDEF".charAt((b & 0xF0) >> 4));
        sb.append("0123456789ABCDEF".charAt((b & 0x0F)));
        sb.append(":");
    }
    sb.deleteCharAt(sb.length() - 1);
    String mac = sb.toString();

    System.out.println(ni.getName() + " " + mac);
}

您可以轻松获得多个(由于VMware网络适配器,我得到3个)。可以确定特定NetworkInterface的{​​{1}}。您可以查询localhost,它可以工作:

InetAddress

但是我发现,如果我连接到VPN,它将提供一个空的MAC地址。因此,如果您正在处理可以配置不同的系统,我不完全确定如何可靠地获得所需的MAC。希望这会有所帮助。

获得正确的MAC地址后,您可以打开一个URL,将其发送到您的服务器,如下所示:

InetAddress localhost = InetAddress.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(localhost);

答案 2 :(得分:1)

你不应该用Java来做这件事。 Mac Addess过滤是防火墙的领域。如果需要执行此操作,请配置防火墙。这至少可以通过Java完成,具体取决于您的防火墙。

在Linux中,配置你的iptables,这要归功于命令行界面,这很容易来自Java。

在Windows上,应该有一个易于使用的API。使用JNA访问它。