如何使用java代码欺骗mac地址?

时间:2015-02-05 21:28:53

标签: java windows networking mac-address

我在java中编写一个网络实用程序(用于windows)。 我想更改/欺骗我的网络适配器的mac地址..我该怎么做? 如果有任何方法可以做这项工作,那就太好了。

通过执行三个命令,我的方法就是这样..

//禁用网络适配器 netsh接口设置接口名称="本地连接"管理员= DISABLED

//这就是我没有得到的......让我说我想要我的新欺骗地址是00112233445566,怎么做......?没有找到任何更改mac地址的cmd命令..在这里需要你的帮助来查找是否有任何cmd语句或任何执行该工作的java方法

//启用网络适配器 netsh接口设置接口名称="本地连接"管理员= ENABLED

谢谢,将等待你的帮助:)

3 个答案:

答案 0 :(得分:1)

稍微弄清楚这一点后,我发现了一种简单的方法。 Windows将欺骗性MAC存储在注册表中的此位置:

  

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\类{4D36E972-E325-11CE-BFC1-08002BE10318} \ 0007

名称为“NetworkAddress”=“00E04D18XXXX”

我与cmd混淆,看看是否有任何方法可以使用cmd编辑注册表;以下命令可以完美地完成工作

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007 /t REG_SZ /v NetworkAddress /d XXXXXXXXXXXX /f

然后这将是您的Java代码:

mac = textField.getText();

String commandChangeMac = "reg add HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0007 /t REG_SZ /v NetworkAddress /d " + mac + " /f";

obj.executeCommand(commandChangeMac);

答案 1 :(得分:0)

编写自己的SocketImpl子类,需要将JNI代码用于原始套接字。请注意,原始套接字在大多数操作系统上都需要特权操作。

答案 2 :(得分:0)

String mac =“2d345678U987”;

Process p = Runtime
                .getRuntime() .exec("cmd /c start cmd.exe /K \"  \"reg add HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0007 /t REG_SZ /v NetworkAddress /d " + mac + " /f ");