E7段获取远程主机MAC地址的方法与java实现

合集下载

获取MAC地址方法

获取MAC地址方法

获取MAC地址和ip地址方法
一、获取本机MAC地址和ip地址方法:
方法一:
在桌面右下角找到“两个小电视”的图标(如果右下角没有,就在桌面右击“网上邻居”点属性,找到“本地连接”双击,也会出现本地属性状态窗口)
鼠标指向它右击---点状态
在状态窗口中点击“支持”标签
接着点击“详细信息”标签
实际地址就是MAC地址,其它信息还有ip地址,子网掩码,网关,还有dns服务器地址方法二:
点开始-运行,输入cmd,回车,然后输入:ipconfig(空格)/all 命令,回车,就一目了然的看到了
二、通过网络获取其它电脑MAC地址方法:
方法一:
点开始-运行,输入cmd,回车,然后输入:arp –a命令,回车,就看到局域网内所有电脑的MAC地址。

方法二:
点开始-运行,输入cmd,回车,然后输入:nbtstat -a 10.3.222.12 ,这样就可以查看某台具体机器的MAC地址(我这里举例查看的就是10.3.222.12这台机器的MAC地址)。

三、查看路由器MAC地址:
登录到路由器界面,找到状态,在状态中查看WAN口MAC地址。

大家看清楚,上报表中填写的路由器mac地址是要wan口的mac地址,而不是lan口的。

java 根据IP获取客户端Mac地址

java 根据IP获取客户端Mac地址

import java.io.IOException;import java.io.InputStreamReader;import java.io.LineNumberReader;publicclass GetMACAddress {public String getMACAddress(String ipAddress) {String str = "", strMAC = "", macAddress = "";try {Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);InputStreamReader ir = newInputStreamReader(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;}publicstaticvoid main(String[] args) {GetMACAddress getMACAddress = new GetMACAddress();System.out.println(getMACAddress.getMACAddress("59.78.63.38")); //获得该ip地址的mac地址}publicstatic String procAll(String str) {return procStringEnd(procFirstMac(procAddress(str)));publicstatic String procAddress(String str) {int indexof = str.indexOf("Physical Address");if (indexof >0) {return str.substring(indexof, str.length());}return str;}publicstatic String procFirstMac(String str) {int indexof = str.indexOf(":");if (indexof >0) {return str.substring(indexof + 1, str.length()).trim(); }return str;}publicstatic String procStringEnd(String str) {int indexof = str.indexOf("\r");if (indexof >0) {return str.substring(0, indexof).trim();}return str;}。

JAVA获得MAC地址

JAVA获得MAC地址

JAVA获得MAC地址package com.etong.bms;import java.io.BufferedInputStream;import java.io.IOException;import java.io.InputStream;import .InetAddress;import java.util.StringTokenizer;import .apache.xerces.internal.impl.xpath.regex.Pars eException;public final class GetMacAddr {private final static String getMacAddress() throws IOEx ception {String os = System.getProperty("");try {if (os.startsWith("Windows")) {return windowsParseMacAddress(windowsRun IpConfigCommand());} else if (os.startsWith("Linux")) {return linuxParseMacAddress(linuxRunIfConfig Command());} else {throw new IOException("unknown operating s ystem: " + os);}} catch (ParseException ex) {ex.printStackTrace();throw new IOException(ex.getMessage());}}/** Linux stuff*/private final static String linuxParseMacAddress(String ipConfigResponse)throws ParseException {String localHost = null;try {localHost = InetAddress.getLocalHost().getHostA ddress();} catch (.UnknownHostException ex) {ex.printStackTrace();throw new ParseException(ex.getMessage(), 0);}StringTokenizer tokenizer = new StringTokenizer(ip ConfigResponse, "\n");String lastMacAddress = null;while (tokenizer.hasMoreTokens()) {String line = tokenizer.nextToken().trim();boolean containsLocalHost = line.indexOf(localH ost) >= 0;// see if line contains IP addressif (containsLocalHost && lastMacAddress != null) {return lastMacAddress;}// see if line contains MAC addressint macAddressPosition = line.indexOf("HWaddr" );if (macAddressPosition <= 0)continue;String macAddressCandidate = line.substring(ma cAddressPosition + 6).trim();if (linuxIsMacAddress(macAddressCandidate)) {lastMacAddress = macAddressCandidate;continue;}}ParseException ex = new ParseException("cannot re ad MAC address for "+ localHost + " from [" + ipConfigResponse + "]", 0);ex.printStackTrace();throw ex;}private final static boolean linuxIsMacAddress(StringmacAddressCandidate) {// TODO: use a smart regular expressionif (macAddressCandidate.length() != 17)return false;return true;}private final static String linuxRunIfConfigCommand() throws IOException {Process p = Runtime.getRuntime().exec("ifconfig");InputStream stdoutStream = new BufferedInputStre am(p.getInputStream());StringBuffer buffer = new StringBuffer();for (;;) {int c = stdoutStream.read();if (c == -1)break;buffer.append((char) c);}String outputText = buffer.toString();stdoutStream.close();return outputText;}/** Windows stuff*/private final static String windowsParseMacAddress(St ring ipConfigResponse)throws ParseException {String localHost = null;try {localHost = InetAddress.getLocalHost().getHostA ddress();} catch (.UnknownHostException ex) {ex.printStackTrace();throw new ParseException(ex.getMessage(), 0);}StringTokenizer tokenizer = new StringTokenizer(ip ConfigResponse, "\n");String lastMacAddress = null;while (tokenizer.hasMoreTokens()) {String line = tokenizer.nextToken().trim();// see if line contains IP addressif (line.endsWith(localHost) && lastMacAddress ! = null) {return lastMacAddress;}// see if line contains MAC addressint macAddressPosition = line.indexOf(":");if (macAddressPosition <= 0)continue;String macAddressCandidate = line.substring(ma cAddressPosition + 1).trim();if (windowsIsMacAddress(macAddressCandidate) ) {lastMacAddress = macAddressCandidate;continue;}}ParseException ex = new ParseException("cannot re ad MAC address from ["+ ipConfigResponse + "]", 0);ex.printStackTrace();throw ex;}private final static boolean windowsIsMacAddress(Stri ng macAddressCandidate) {// TODO: use a smart regular expressionif (macAddressCandidate.length() != 17)return false;return true;}private final static String windowsRunIpConfigComma nd() throws IOException {Process p = Runtime.getRuntime().exec("ipconfig /a ll");InputStream stdoutStream = new BufferedInputStre am(p.getInputStream());StringBuffer buffer = new StringBuffer();for (;;) {int c = stdoutStream.read();if (c == -1)break;buffer.append((char) c);}String outputText = buffer.toString();stdoutStream.close();return outputText;}/** Main*/public final static void main(String[] args) {try {System.out.println("Network infos");System.out.println(" Operating System: "+ System.getProperty(""));System.out.println(" IP/Localhost: "+ InetAddress.getLocalHost().getHostAddre ss());System.out.println(" MAC Address: " + getMacAddress());} catch (Throwable t) {t.printStackTrace();}}}。

MAC地址获取方法

MAC地址获取方法

Winxp获取IP方法
第一步:鼠标点击“开始”->“运行”,图 1 所示
图 1
第二步:在图 1 中,点击“运行(R)...” 出现运行窗口,在“打开”命令行中输入 cmd,如图 2 所示
图 2
第三步:在图 2 中,点击“确定”按钮,
出现命令窗口,在命令窗口中键入命令:ipconfig/all,回车,如图3
图 3
第四步:请您记录下图4 红圈中显示的本机 MAC 地址(网卡地址)
注:MAC 地址由“0、1、2、3、4、5、6、7、8、9”和小写字母“a、b、c、d、e、f”组成,共 12 位
图4
WIN7获取MAC方法
1、点击开始菜单,输入CMD,回车。

2、输入 ipconfig/all 回车
3、在弹出的信息里,找到获取到IP的基本信息,复制MAC地址。

如下图
MAC地址获取办法之二:
1、鼠标右键点击网络图标
点击【打开网络和共享中心】
2、单击【无线网络连接】
3、鼠标单击【详细信息】
4、详细信息,获取到无线MAC地址。

Java获取浏览器端MAC地址

Java获取浏览器端MAC地址
192.168.1.100 用户真实 IP 为: 192.168.1.110
String str = ""; String macAddress = ""; try {
Process p = Runtime.getRuntime().exec("nbtstat -A " + ip); InputStreamReader ir = new InputStreamReader(p.getInputStream()); LineNumberReader input = new LineNumberReader(ir); for (int i = 1; i < 100; i++) {
//所以又第二个 if 判断 你可先在你机器上 cmd 测试下 nbtstat -A 命令 当然得有 一个你可以 ping 通的 //网络 ip 地址,然后根据你得到的结果中 mac 地址显示方式来确定这个循环取值
} } } catch (IOException e) { e.printStackTrace(System.out); } return macAddress; } 附: 通过代理了的客户端 ip 地址获取方式 于是可得出获得客户端真实 IP 地址的方法一: public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); }

获取设备信息——获取客户端ip地址和mac地址

获取设备信息——获取客户端ip地址和mac地址

获取设备信息——获取客户端ip地址和mac地址1、获取本地IP(有可能是内⽹IP,192.168.xxx.xxx)/*** 获取本地IP** @return*/public static String getLocalIpAddress() {try {Enumeration<networkinterface> en = NetworkInterface.getNetworkInterfaces();while (en.hasMoreElements()) {NetworkInterface ni = en.nextElement();Enumeration<inetaddress> enIp = ni.getInetAddresses();while (enIp.hasMoreElements()) {InetAddress inet = enIp.nextElement();if (!inet.isLoopbackAddress()&& (inet instanceof Inet4Address)) {return inet.getHostAddress().toString();}}}} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();}return "0";}</inetaddress></networkinterface>2.获取⽹络ip,⽐上述⽅法更加精确,但是要异步执⾏。

public class GetLocalHostIP implements Callable<String>{private GetLocalHostIP(){super();}public static String getIP(){ExecutorService executorService = Executors.newCachedThreadPool();Future<String> localIP = executorService.submit(new GetLocalHostIP());String ip = null;try {ip = localIP.get();}catch (InterruptedException e){e.printStackTrace();}catch (ExecutionException e){e.printStackTrace();}if(ip == null || ip.startsWith("192.168")){return "10.142.92.242";}else{return ip;}}@Overridepublic String call() throws Exception {URL infoUrl = null;String ipLine = "";try {infoUrl = new URL("");BufferedReader in = new BufferedReader(new InputStreamReader(infoUrl.openStream()));ipLine = in.readLine();} catch (Exception e) {try {infoUrl = new URL("/");BufferedReader in = new BufferedReader(new InputStreamReader(infoUrl.openStream()));ipLine = in.readLine();} catch (Exception e2) {e2.printStackTrace();}}return ipLine;}}上述⽅法可以获取ip,但是获取速度较慢,对⽹速要求较⾼。

Java实现跨平台的MAC地址读取

Java实现跨平台的MAC地址读取

Java实现跨平台的MAC地址读取
洪勇军
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2009(000)017
【摘要】为满足Java开发跨平台的网络唤醒、版权保护等的类型应用需要,在分析目前常用的MAC地址查询方法的原理与不足的基础上,提出了一种应用NetworkInterface Java工具类.实现跨平台的MAC地址查询功能的新方法.使用这种方法可以实现真正跨平台的纯Java MAC地址查询功能,并进一步实现与之相关的各类应用系统.
【总页数】2页(P52-53)
【作者】洪勇军
【作者单位】(Missing)
【正文语种】中文
【中图分类】TP3
【相关文献】
1.运用Java实现跨平台E-mail系统 [J], 朱堂全
2.第1章Visual Basic网络与通信编程实例——例题1 读取网卡MAC地址OCX 控件的设计 [J], 陈增吉
3.直接读取PCI网卡的MAC地址的原理与方法 [J], 李全忠;王希超
4.跨网段获取远程主机MAC地址的方法与java实现 [J], 郭建波;李志明;刘宁宁
5.跨网段获取远程主机MAC地址的方法与java实现 [J], 郭建波;李志明;刘宁宁
因版权原因,仅展示原文概要,查看原文内容请购买。

如何获取网卡的MAC地址

如何获取网卡的MAC地址

如何获取网卡的MAC地址获取网卡的MAC地址可以通过以下几种方法:1.使用操作系统提供的命令行工具:不同的操作系统提供了不同的命令行工具来获取网卡的MAC地址。

下面分别介绍Windows和Linux操作系统下的方法。

- Windows操作系统:在命令提示符或PowerShell中输入"ipconfig /all"命令,会列出所有网络接口的详细信息,包括MAC地址。

- Linux操作系统:在终端中输入"ifconfig"命令,会列出所有网络接口的详细信息,包括MAC地址。

2.使用编程语言获取:可以使用各种编程语言(如Python、Java、C++等)提供的网络编程库来获取网卡的MAC地址。

下面以Python为例,演示如何通过编程获取网卡的MAC地址:```pythonimport subprocessimport redef get_mac_address(:result = subprocess.run(["ipconfig", "/all"],capture_output=True, text=True)output = result.stdoutmac_pattern = r"Physical Address[ .]*: (.*)"mac_address = re.findall(mac_pattern, output)[0].replace("-", ":")return mac_addressmac = get_mac_addressprint(mac)```这段代码通过执行"ipconfig /all"命令,并使用正则表达式匹配输出中的MAC地址,最终返回网卡的MAC地址。

3.使用网络管理工具:可以使用一些网络管理工具来获取网卡的MAC地址,这些工具通常提供了更丰富的功能和更友好的界面,比如Wireshark、NetCut等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

跨网段获取远程主机MAC地址的方法与java实现 The method of requesting from remote host MAC and java application (1. 唐山学院; 2保定金融专科学校; 3.北京邮电大学) 郭建波1 李志明2 刘宁宁3 guo,jianbo li,zhiming liu,ningning

摘 要 本文分析了利用SendARP方法(基于ARP协议)来获取远程主机MAC地址的缺陷,提出了一种新思路——研究并利用SNMP协议来快速获取远程主机MAC地址的方法,并给出了其在JAVA中实现的程序。 关键词 MAC地址,远程主机,SNMP,JAVA 中图分类号:TN911.73 Abstract The article analyzes the faults of requesting from remote host MAC in SendARP way,putting forward a new method, researching and applying SNMP protocol to request remote host MAC and delivering application programme in JAVA. Key Words MAC,remote host,SNMP,JAVA 一、引言 在计算机网络通信中,网卡中的信息最重要就是MAC地址,即网卡的物理地址。MAC地址固化在网卡的ROM中,不易改动。在网络通信中需要监控一台计算机的最好的方法就是获取它的MAC地址。 获取远程主机的MAC地址,采用IpHelperAPI的SendARP方法,在跨网段情况下,它只能获取“本网段”内主机的MAC地址,如果源主机与目的主机不在同一个网段内,该方法就只能获取“网关”的MAC地址,而无法获取目的主机的MAC地址。本文利用SNMP协议从三层交换机缓存中获取到所有网段的MAC地址,采用 jawa编程,实现了获取远程主机的MAC地址,供同行借鉴。 二、原理 交换机是一种基于MAC(网卡的硬件地址)识别,完成封装转发数据包功能的网络设备。交换机可以"学习"MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址,SNMP(Simple Network Management Protocol)即简单网络管理协议为网络管理系统提供了底层网络管理的框架,通过SNMP协议来获取MAC地址速度快、效率高。 SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。可处理管理代理定义的各种任务。SNMP协议对外提供了三种用于控制MIB对象的基本操作命令。它们是:Set 、Get 和 Trap。 一条SNMP报文由三个部分组成:版本域(version field),分区域(community field)和SNMP协议数据单元域(SNMP protocol data unit field),数据包的长度不是固定的。 版本域:这个域用于说明现在使用的是哪个版本的SNMP协议。目前,version 1是使用最广泛的SNMP协议。 分区域:分区(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。 协议数据单元域:SNMPv1的PDU有五种类型,有些是报文请求(Request),有些则是响应(Response)。它们包括:GetRequest、GetNextRequest、SetRequest、GetResponse、Trap 。SNMPv2又增加了两种PDU:GetBulkRequest和InformRequest 。 SNMP管理员使用GetRequest从拥有SNMP代理的网络设备中检索信息,SNMP代理以GetResponse消息响应GetRequest。可以交换很多的信息,如系统的名字,系统自启动后正常运行的时间,系统中的网络接口数等等。GetRequest和GetNextRequest结合起来使用可以获得一个表中的对象。GetRequest取回一个特定对象;而使用GetNextRequest则是请求表中的下一个对象。使用SetRequest可以对一个设备中的参数进行远程配置。Set-Request可以设置设备的名字,关掉一个端口或清除一个地址解析表中的项。Trap即SNMP陷阱,是SNMP代理发送给管理站的非请求消息。这些消息可告知管理站本设备发生了一个特定事件,如端口失败,掉电重起等,管理站可相应的作出处理。 管理信息数据库(MIB)是一个信息存储库,它包含了管理代理中的有关配置和性能的数据,有一个组织体系和公共结构,其中包含分属不同组的许多个数据对象。 MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标识符。 在三层交换机中利用SNMP协议获取CAM表的内容,实现IP与MAC的对应。其中ipNetToMeiaPhysAddress(1.3.6.1.2.1.4.22.1.2)对象用于将IP映射到物理地址的地址转换。通过SNMP查询得到类似下面的结果: IP-MIB::ipNetToMediaPhysAddress.42.192.168.171.37 = STRING: 0:0:e2:47:b9:16 IP-MIB::ipNetToMediaPhysAddress.42.192.168.171.40 = STRING: 0:0:e2:43:f1:ae 其中ipNetToMediaPhysAddress后面的42表示的是VLAN接口号,如果需要按网段得到MAC地址,ipRouteIfIndex(1.3.6.1.2.1.4.21.1.2)唯一指定本地接口的索引值,可以用来得到VLAN号,两者组合起来可以得到某一个具体网段的MAC地址。 三、实现 下面是采用JAVA和netsnmp4_13开发包来完成获取远程主机MAC地址的程序。 public class getMac implements Observer { final static String myoid = "1.3.6.1.2.1.4.21.1.2"; //ipRouteIfIndex的oid private SnmpContextv2c context; private OneGetNextPdu pdu; private Util util; private int oidlen=0; String oid; int i=0; private String[] oidValue=new String[50]; boolean init=true; public getMac(String propertiesFilename){ util = new Util(propertiesFilename, this.getClass().getName()); } public void init () //首先得到vlan号 { String host = util.getHost(); int port = util.getPort(SnmpContextBasisFace.DEFAULT_PORT); String socketType = util.getSocketType(); oid = util.getOid(myoid); String community = util.getCommunity(); oidlen=oid.length(); int aa=oid.lastIndexOf("."); try { context = new SnmpContextv2c(host, port, socketType); context.setCommunity(community); pdu = new OneGetNextPdu(context); pdu.addObserver(this); pdu.addOid(oid); pdu.send(); } catch (java.io.IOException exc) { System.out.println("IOException " + exc.getMessage()); System.exit(0); } catch(uk.co.westhawk.snmp.stack.PduException exc) { System.out.println("PduException " + exc.getMessage()); System.exit(0); } } public void update(Observable obs, Object ov) //得到vlan中的mac地址表 { boolean isFinished = false; if (pdu.getErrorStatus() == AsnObject.SNMP_ERR_NOERROR) { varbind var = (varbind) ov; AsnObject obj = var.getValue(); int a=var.getOid().toString().indexOf(".",21); if(var.getOid().toString().substring(0,oidlen).equals(oid.substring(0,oidlen))) { pdu = new OneGetNextPdu(context); pdu.addObserver(this); if(init){ oid="1.3.6.1.2.1.4.22.1.2."+obj.toString(); //构造ipNetToMediaPhysAddress oidlen=oid.lastIndexOf("."); pdu.addOid(oid); init=false; } else{ System.out.print("ip="+var.getOid().toString().substring(a+1)); System.err.println(" mac="+obj.toString().substring(2)); oid=var.getOid().toString(); pdu.addOid(oid); oidlen=oid.lastIndexOf("."); } try { pdu.send();

相关文档
最新文档