gpt4 book ai didi

java - 如何欺骗 NetworkInterface.getHardwareAddress() (Java)

转载 作者:行者123 更新时间:2023-12-02 09:51:32 26 4
gpt4 key购买 nike

我有一个在 OpenShift (Kubernetes) 中运行的软件,其中许可证基于 MAC 地址。重新启动应用程序时,容器的MAC地址发生变化,我必须申请新的许可证文件。

由于 k8s pod 中没有静态 MAC 地址,因此我想欺骗对 NetworkInterface.getHardwareAddress() 的 Java 调用,以欺骗软件认为 MAC 地址仍然相同。

Enumeration enumeration = NetworkInterface.getNetworkInterfaces();
while (enumeration.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface) enumeration.nextElement();
if (networkInterface.isLoopback() || networkInterface.isPointToPoint() || networkInterface.isVirtual()) {
continue;
}
if (networkInterface.isUp()) {
byte[] arrayOfByte = networkInterface.getHardwareAddress();
if (arrayOfByte != null && arrayOfByte.length == 6) {
StringBuilder stringBuilder = new StringBuilder();
for (byte b = 0; b < arrayOfByte.length; b++) {
if (b != 0) {
stringBuilder.append(":");
}
stringBuilder.append(String.format("%02x", arrayOfByte[b]));
}
System.out.println(networkInterface.getName() + ": " + stringBuilder);
}
}
}

实际:eth0:01:14:4d:ec:01:42

预期:eth0: ee:ee:ee:ee:ee:ee

最佳答案

不幸的是,您无法在 Java 中执行此操作。

方法NetworkInterface::getNetworkInterfaces() 是作为native 实现的,这意味着它不会访问任何特定字段来获取其结果。如果确实如此,您可能会幸运地使用反射来破解一些东西,但就目前情况而言,您必须在操作系统配置中管理它。

编辑:至于 Kubernetes 解决方案,您可能需要查看 here

关于java - 如何欺骗 NetworkInterface.getHardwareAddress() (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56292659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com