Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 853|回复: 0

教你Java中获取MAC地址

[复制链接]

该用户从未签到

发表于 2011-8-4 21:40:49 | 显示全部楼层 |阅读模式
   通过调用dos命令实现获取
import java.io.*;
public class Test {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec(“ipconfig /all”);
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null)
if (line.indexOf(“Physical Address”) 》 0) {
String MACAddr = line.substring(line.indexOf(“-”) - 2);
System.out.println(“MAC address = [” + MACAddr + “]”);
}
} catch (java.io.IOException e) {
System.err.println(“IOException ” + e.getMessage());
}
}
}
------------------------------------
  顺便转一篇关于MAC的文章:
  近来在网上经常见有人问起Mac地址的问题,那么究竟Mac地址是什么?在现行的网络中,扮演什么角色呢?下面我们就一同来探讨一下关于Mac地址的知识。
  什么是Mac地址?
  Mac地址就是在媒体接入层上使用的地址,通俗点说就是网卡的物理地址,现在的Mac地址一般都采用6字节48bit(在早期还有2字节16bit的Mac地址)
  前24位由是生产厂家向IEEE申请的厂商地址(这可是要花钱的哦!据说1000美元才能买一个地址块)。后24位就由生产厂家自行定以了。(早期的2字节的却不用申请)
  IP地址和Mac地址有什么联系和区别
  大家都知道,现在有很多计算机都是通过先组建局域网,然后通过交换机和Internet连接的(大学里的校园网就是这样)。然后给每个用户分配固定的IP地址,由管理中心统一管理,这样为了管理方便就需要使用Mac地址来标志用户,防止发生混乱,明确责任(比如网络犯罪)。另外IP地址和Mac地址是有区别的,虽然他们在局域网中是一一对应的关系。IP地址是跟据现在的IPv4标准指定的,不受硬件限制比较容易记忆的地址,而Mac地址却是用网卡的物理地址,多少与硬件有关系,比较难于记忆。
  如何知道自己的Mac地址
  方法比较多,也比较得简单,在这里介绍两种常用的方法,在Win9x 可用:WinIPcfg获得,在2000、XP可用IPconfig -all获得。如果你已经给自己的网卡分配了IP还可以用 nbtstat -A 自己的IP 如下图,后者只能在2000/XP下使用。
  如何获得别人的Mac
  其实上面已经涉及到了,如果是2000/XP用户可以用 nbtstat -A IP地址(还可以获得别的东东啊,可别学坏啊)。另外同一局域网内的,你可以用ping IP 或者ping 主机名,然后用arp -a 来获得。
  如何修改自己的Mac地址
  Mac地址是保存在网卡的EPROM里面,通过网卡生产厂家提供的修改程序可以更改存储器里的地址,即使网卡没有这样的设置我们也可以通过间接的方法修改,一般网卡发出的包的源Mac地址并不是网卡本身写上去的,而是应用程序提供的,只是在通常的实现中,应用程序先从网卡上得到Mac地址,每次发送的时候都用这个Mac做为源Mac而已,Windows中,网卡的Mac保存在注册表中,实际使用也是从注册表中提取的,所以只要修改注册表就可以简单的改变Mac
  Win9x中修改:
  打开注册表编辑器,在HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Service\Class\Net\下的0000,0001,0002 Win2000/XP中的修改:同样打开注册表编辑器,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\4D36E970-E325-11CE-BFC1-08002BE10318 中的0000,0001,0002中的DriverDesc,如果在0000找到 ,就在0000下面添加字符串变量,命名为“NetworkAddress”,值为要设置的Mac地址,例如:000102030405
  完成上述操作后重启就好了。
  Linux下的修改:
1.必须关闭网卡设备,否则会报告系统忙,无法更改。
命令是:“ifconfig eth0 down”
2.修改Mac地址,这一步较Windows中的修改要简单。
命令是:“ifconfig eth0 hw ether 00?AA?BB?CC?DD?EE”
3.重新启用网卡
“ifconfig eth0 up”网卡的Mac地址更改就完成了。
  现在还有很多软件提供了修改Mac地址的功能,如:Mac2001
  那么既然IP和Mac地址都可以改,那么怎么防御呢?通过简单的交换机端口绑定(端口的Mac表使用静态表项),可以在每个交换机端口只连接一台主机的情况下防止修改Mac地址的盗用,如果是三层设备还可以提供:交换机端口-IP-Mac 三者的绑定,防止修改Mac的IP盗用,这种方法更有效!还有些方法如配置交换机的VLAN,使用用户认证等,都略显复杂,再次不多浪费笔墨
回复

使用道具 举报

该用户从未签到

发表于 2011-8-4 22:58:06 | 显示全部楼层
谢谢楼主分享。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-23 23:42 , Processed in 0.461911 second(s), 48 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表