我在java中编写一个网络实用程序(用于windows)。 我想更改/欺骗我的网络适配器的mac地址..我该怎么做? 如果有任何方法可以做这项工作,那就太好了。
通过执行三个命令,我的方法就是这样..
//禁用网络适配器 netsh接口设置接口名称="本地连接"管理员= DISABLED
//这就是我没有得到的......让我说我想要我的新欺骗地址是00112233445566,怎么做......?没有找到任何更改mac地址的cmd命令..在这里需要你的帮助来查找是否有任何cmd语句或任何执行该工作的java方法
//启用网络适配器 netsh接口设置接口名称="本地连接"管理员= ENABLED
谢谢,将等待你的帮助:)
答案 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 ");