mac地址好像在机器上是可以修改的,修改以后在网页中获取的是修改以后的吗?
解决方案 »
- SecurityError: Error #2148: 只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源。
- 请教验证码原理
- 为什么我上传的文件字节都是0呀!!急死了……
- 数据库设计问题2(hibernate)
- double 怎么保存数据到数据库里啊 ?
- hibernate更新及取值的问题
- spring下junit对持久代码的测试
- 请教struts2文件上传的java.io.FileNotFoundException: D:\workspace\Struts2\WebRoot\upload (拒绝访问。)错误~~
- 我是Struts初学者,有些问题不解,望指点!
- 实在搞不清Apache和Tomcat的关系。
- img标签的值 用jsp:getProperty 怎么不显示
- 一个java输出的问题
import java.io.IOException;
import java.io.InputStreamReader;public class TestMac
{
public static void main(String[] args) {
System.out.println("Operation System=" + getOsName());
System.out.println("Mac Address=" + getMACAddress());
System.out.println("通过ip获取mac"+getMACAddress("192.168.1.101"));
} public static String getOsName() {
String os = "";
os = System.getProperty("os.name");
return os;
}
public static String getMACAddress() {
String address = "";
String os = getOsName();
if (os.startsWith("Windows")) {
try {
String command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") > 0) {
int index = line.indexOf(":");
index += 2;
address = line.substring(index);
break;
}
}
br.close();
return address.trim();
} catch (IOException e) {
}
} else if (os.startsWith("Linux")) {
String command = "/bin/sh -c ifconfig -a";
Process p;
try {
p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("HWaddr") > 0) {
int index = line.indexOf("HWaddr") + "HWaddr".length();
address = line.substring(index);
break;
}
}
br.close();
} catch (IOException e) {
}
}
address = address.trim();
return address;
} public static String getMACAddress(String ipAddress) {
String str = "", strMAC = "", macAddress = "";
try {
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
if (str != null) {
if (str.indexOf("MAC Address") > 1) {
strMAC = str.substring(str.indexOf("MAC Address") + 14,
str.length());
break;
}
}
}
} catch (IOException ex) {
return "Can't Get MAC Address!";
}
//
if (strMAC.length() < 17) {
return "Error!";
}
macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)
+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)
+ ":" + strMAC.substring(12, 14) + ":"
+ strMAC.substring(15, 17);
//
return macAddress;
}
}
剑天梦的回答原理和我这个一样,都是通过Process 执行命令。 我直接补充到答案里了。不过
我这边运行那个命令出来的结果很多,那么花的时间就长了。优点是能够获取别人的mac地址 。赞同
1| 评论
向TA求助 回答者: 此间的记者 | 二级采纳率:50% 擅长领域: 程序设计 JAVA相关 数据库 参加的活动: 暂时没有参加的活动
提问者对于答案的评价:谢谢
相关内容
2009-1-21 JAVA中如何获取指定IP的MAC地址 8
2009-3-9 求助:JAVA中如何获取客户端网卡MAC地址和IP地址? 3
2008-2-28 怎样通过java script来获取主机的MAC地址?
2008-5-14 一个获取MAC地址的JAVA程序,不知道错误再哪?谢谢! 2
2007-9-12 JAVA查询MAC地址问题 1
更多关于java获取mac地址的问题>>
其他回答 共3条
检举 | 2011-7-15 17:12 剑天梦 | 三级
先获取ip通过request.getRemoteAddr();
通过ip获取mac
public String getMACAddress(String ipAddress) {
String str = "", strMAC = "", macAddress = "";
try {
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
if (str != null) {
if (str.indexOf("MAC Address") > 1) {
strMAC = str.substring(str.indexOf("MAC Address") + 14,
str.length());
break;
}
}
}
} catch (IOException ex) {
return "Can't Get MAC Address!";
}
//
if (strMAC.length() < 17) {
return "Error!";
}
macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)
+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)
+ ":" + strMAC.substring(12, 14) + ":"
+ strMAC.substring(15, 17);
//
return macAddress;
} 修改后获取的肯定是修改后的啊,要不别人修改mac地址做什么,我用卡巴斯基 试用期到了,修改mac地址就又能用一个月了
这个可以获取本机IP
public class MacAddress {
public static String hexByte(byte b) {
String s = "000000" + Integer.toHexString(b);
return s.substring(s.length() - 2);
} public static String getMAC() {
Enumeration<NetworkInterface> el;
String mac_s = "";
try {
el = NetworkInterface.getNetworkInterfaces();
while (el.hasMoreElements()) {
NetworkInterface ni = el.nextElement();
byte[] mac = ni.getHardwareAddress();
if (mac == null)
continue;
if (mac != null && mac.length>=6){
mac_s = hexByte(mac[0]) + "-" + hexByte(mac[1]) + "-"
+ hexByte(mac[2]) + "-" + hexByte(mac[3]) + "-"
+ hexByte(mac[4]) + "-" + hexByte(mac[5]);
System.out.println(mac_s + "MAC地址");
} }
} catch (SocketException e1) {
e1.printStackTrace();
}
return mac_s;
}
public static void main(String[] args) {
MacAddress m = new MacAddress();
m.getMAC();
}
}