JAVA获取mac地址和cpu id(windows和linux)
public class HardwareUtil {
/**
* Return Opertaion System Name;
*
* @return os name.
*/
public static String getOsName() {
String os = "";
os = System.getProperty("os.name");
return os;
}
/**
* Returns the MAC address of the computer.
*
* @return the MAC address
*/
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;
}else if (line.indexOf("物理地址") > 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;
}
/**
* 获取CPU号,多CPU时,只取第一个
* @return
*/
public static String getCPUSerial() {
String result = "";
String os = getOsName();
if (os.startsWith("Windows")) {
try {
File file = File.createTempFile("tmp", ".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
String vbs = "On Error Resume Next \r\n\r\n" + "strComputer = \".\" \r\n"
+ "Set objWMIService = GetObject(\"winmgmts:\" _ \r\n"
+ " & \"{impersonationLevel=impersonate}!\\\\\" & strComputer & \"\\root\\cimv2\") \r\n"
+ "Set colItems = objWMIService.ExecQuery(\"Select * from Win32_Processor\") \r\n "
+ "For Each objItem in colItems\r\n " + " Wscript.Echo objItem.ProcessorId \r\n "
+ " exit for ' do the first cpu only! \r\n" + "Next ";
fw.write(vbs);
fw.close();
Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
result += line;
}
input.close();
file.delete();
} catch (Exception e) {
e.fillInStackTrace();
}
}else if (os.startsWith("Linux")) {
String CPU_ID_CMD = "dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}'";
Process p;
try {
p = Runtime.getRuntime().exec(new String[]{"sh","-c",CPU_ID_CMD});//管道
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
result += line;
break;
}
br.close();
} catch (IOException e) {
}
}
if (result.trim().length() < 1 || result == null) {
result = "无CPU_ID被读取";
}
return result.trim();
}
/**
* Main Class.
*
* @param args
* @throws NoSuchPaddingException
* @throws NoSuchAlgorithmException
*/
public static void main(String[] args) throws Exception {
String macAddress=HardwareUtil.getMACAddress();
String cpuSerial=HardwareUtil.getCPUSerial();
String test =macAddress+"@"+cpuSerial;
}
分享到:
相关推荐
得到机器的MAC,硬盘序列序列号和IP地址 public static void main(String[] args) ...{ String osName = System.getProperty("os.name"); StringBuffer systemPathBuff = new StringBuffer(""); if (osName.index...
在Java编程中,读取服务器硬件信息是一项重要的任务,尤其对于跨平台的应用程序来说,能够兼容Windows、Linux和Mac OS等不同操作系统是必不可少的。本文将深入探讨如何使用Java来获取这些不同系统的硬件信息。 首先...
这个jar包可能封装了获取MAC地址、处理和生成机器码的逻辑,以及可能的授权验证机制。开发者可以将其引入项目中,通过调用相应的API来实现服务器的授权和注册功能。 总的来说,基于MAC地址生成服务器唯一机器码是一...
在Android系统中,获取设备的Mac地址是一项常见的需求,特别是在设备标识、网络连接管理和蓝牙通信等场景下。然而,由于隐私保护政策的变化,Android对于获取Mac地址的方式进行了限制,使得这个过程比以前复杂了一些...
设计支持windows、linux、OS等操作系统平台,目前已经支持windows平台,可根据思路自行补充linux和OS平台下的一些api,取得机器硬件指纹(cpu 序列号、mac地址、BIOS序列号、硬盘ID),主要用作软件授权使用对象的...
通过这个小工具,用户能够方便地获取Mac地址并使用AES加密技术进行保护,确保Mac地址不会被轻易暴露,从而提升了网络安全。这种加密方法在许多场景下都十分有用,比如在设备认证、网络通信或者敏感数据存储等方面。
Java提供了`java.net.NetworkInterface`类来获取网络接口的信息,包括MAC地址。 ```java import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; public class...
对于网络信息,Java提供了一些内置类来获取IP地址、主机名等,例如`java.net.NetworkInterface`和`java.net.InetAddress`。但是,获取更详细的网络信息,如网卡速度、MAC地址等,可能需要通过JNA或JNI与操作系统底层...
本篇文章将详细讲解如何使用OSHI库来获取系统及硬件信息,并结合描述中的需求,探讨如何根据MAC地址、序列号和处理器ID生成加密字符串。 首先,引入OSHI库到项目中。通常,可以通过Maven或Gradle依赖管理工具添加...
3. **网卡信息**:获取网络接口的状态,如IP地址、MAC地址、接收和发送的数据量等,这些数据对于网络诊断和流量监控很有价值。 4. **进程信息**:能够列出系统上的所有进程,获取它们的ID、内存占用、CPU使用率等,...
总之,理解和掌握如何获取CPU的访问信息,包括其ID号和机器标识,是IT专业人士的基本技能之一。这不仅有助于更好地了解和利用硬件资源,也有助于解决和预防与硬件相关的问题。通过学习和使用各种工具,我们可以更...
前段时间,公司让写一个授权文件,要求软件只能在某台及其上运行,只要脱离该机器,就不能运行,因此,我参考了获取CPUID、MACID和硬盘序列号的获取信息代码,将软件和这些进行加密绑定。感觉这些还是挺有用的,大家...
它可能包含CPU型号、主板序列号、MAC地址等信息,确保即使更换了部分硬件,机器码仍能保持不变。生成机器码的目的是为了软件授权,因为每个安装软件的设备都将拥有一个独特的ID,这有助于软件开发商限制软件的使用...
2. **JavaScript API限制**:由于隐私和安全原因,JavaScript的标准API并不允许直接获取CPU ID、硬盘ID和MAC地址。这是为了防止恶意网站滥用这些信息侵犯用户隐私。然而,有些硬件信息可以通过浏览器API间接获取,如...
在实现订单号生成唯一的解决方案中,我们需要获取线程ID、进程ID 和 MAC 地址等信息。下面是获取这些信息的代码: * 获取线程ID:`Thread.currentThread().getId()` * 获取进程ID:`ManagementFactory....
获取MAC地址可以使用命令行(如Windows的`getmac`,Linux的`ifconfig`),或通过编程接口(如Java的`NetworkInterface`类)。 4. 电脑名称:电脑名称是操作系统中用于识别每台计算机的标识符,可以在网络环境中区分...
3. **字段ID和方法ID**:通过JNIEnv,我们可以获取到Java字段或方法的唯一标识符,用于后续的访问操作。 4. **字符串和数组处理**:JNI提供了转换Java字符串到C字符串,以及处理Java数组的API。 四、JNI的优点与...
总的来说,"基于java的sigar_mirror(系统信息收集API_Sigar).zip"提供的Java版Sigar库是一个强大的工具,它使得Java开发者能够轻松地获取和分析操作系统的各种核心信息,从而更好地理解和管理运行环境。使用这个库,...
- IP地址和子网掩码:通过`ifconfig`(Linux、Mac)或`ipconfig`(Windows)命令。 - 网络接口信息:`netstat`命令可以查看网络连接状态,`lsof`显示当前打开的网络连接。 - 在Java和Python中,`socket`库可以...
用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。 目前只支持Linux。原因是Mac、Windows的ps命令不支持列出进程的线程...