You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
6.7 KiB
Java
192 lines
6.7 KiB
Java
package com.glxp.api.util;
|
|
|
|
import cn.hutool.core.util.CharsetUtil;
|
|
import cn.hutool.crypto.SmUtil;
|
|
import cn.hutool.crypto.symmetric.SymmetricCrypto;
|
|
|
|
import java.applet.Applet;
|
|
import java.awt.*;
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.FileWriter;
|
|
import java.io.InputStreamReader;
|
|
import java.net.InetAddress;
|
|
import java.net.NetworkInterface;
|
|
|
|
public class HardWareUtils extends Applet {
|
|
|
|
public HardWareUtils() {
|
|
}
|
|
|
|
@Override
|
|
public void paint(Graphics paint) {
|
|
super.paint(paint);
|
|
paint.drawString("获取硬件信息", 10, 10);
|
|
paint.drawString("CPU SN:" + HardWareUtils.getCPUSerial(), 10, 30);
|
|
paint.drawString("主板 SN:" + HardWareUtils.getMotherboardSN(), 10, 50);
|
|
// paint.drawString("C盘 SN:" + HardWareUtils.getHardDiskSN("c"), 10, 70);
|
|
paint.drawString("MAC SN:" + HardWareUtils.getMac(), 10, 90);
|
|
}
|
|
|
|
/**
|
|
* 29 * 获取主板序列号
|
|
* 30 *
|
|
* 31 * @return
|
|
* 32
|
|
*/
|
|
public static String getMotherboardSN() {
|
|
String result = "";
|
|
try {
|
|
File file = File.createTempFile("realhowto", ".vbs");
|
|
file.deleteOnExit();
|
|
FileWriter fw = new FileWriter(file);
|
|
String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
|
|
+ "Set colItems = objWMIService.ExecQuery _ \n"
|
|
+ " (\"Select * from Win32_BaseBoard\") \n"
|
|
+ "For Each objItem in colItems \n"
|
|
+ " Wscript.Echo objItem.SerialNumber \n"
|
|
+ " exit for ' do the first cpu only! \n" + "Next \n";
|
|
|
|
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();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return result.trim();
|
|
}
|
|
|
|
/**
|
|
* 64 * 获取硬盘序列号
|
|
* 65 *
|
|
* 66 * @param drive
|
|
* 67 * 盘符
|
|
* 68 * @return
|
|
* 69
|
|
*/
|
|
public static String getHardDiskSN(String drive) {
|
|
String result = "";
|
|
try {
|
|
File file = File.createTempFile("realhowto", ".vbs");
|
|
file.deleteOnExit();
|
|
FileWriter fw = new FileWriter(file);
|
|
String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
|
|
+ "Set colDrives = objFSO.Drives\n"
|
|
+ "Set objDrive = colDrives.item(\""
|
|
+ drive
|
|
+ "\")\n"
|
|
+ "Wscript.Echo objDrive.SerialNumber"; // see note
|
|
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();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return result.trim();
|
|
}
|
|
|
|
/**
|
|
* 101 * 获取CPU序列号
|
|
* 102 *
|
|
* 103 * @return
|
|
* 104
|
|
*/
|
|
public static String getCPUSerial() {
|
|
String result = "";
|
|
try {
|
|
File file = File.createTempFile("tmp", ".vbs");
|
|
file.deleteOnExit();
|
|
FileWriter fw = new FileWriter(file);
|
|
String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
|
|
+ "Set colItems = objWMIService.ExecQuery _ \n"
|
|
+ " (\"Select * from Win32_Processor\") \n"
|
|
+ "For Each objItem in colItems \n"
|
|
+ " Wscript.Echo objItem.ProcessorId \n"
|
|
+ " exit for ' do the first cpu only! \n" + "Next \n";
|
|
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();
|
|
}
|
|
if (result.trim().length() < 1 || result == null) {
|
|
result = "无CPU_ID被读取";
|
|
}
|
|
return result.trim();
|
|
}
|
|
|
|
/**
|
|
* 139 * 获取MAC地址
|
|
* 140
|
|
*/
|
|
public static String getMac() {
|
|
try {
|
|
byte[] mac = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()).getHardwareAddress();
|
|
StringBuffer sb = new StringBuffer();
|
|
for (int i = 0; i < mac.length; i++) {
|
|
if (i != 0) {
|
|
sb.append("-");
|
|
}
|
|
String s = Integer.toHexString(mac[i] & 0xFF);
|
|
sb.append(s.length() == 1 ? 0 + s : s);
|
|
}
|
|
return sb.toString().toUpperCase();
|
|
} catch (Exception e) {
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public static String getMachineInfo() {
|
|
String msg = getCPUSerial() + getMotherboardSN().replace(".", "") +
|
|
getHardDiskSN("c") + getMac().replace("-", "");
|
|
return msg;
|
|
}
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
System.out.println(getCPUSerial());//CPU
|
|
System.out.println(getMotherboardSN());//主板
|
|
System.out.println(getHardDiskSN("c"));//c盘
|
|
System.out.println(getMac());//MAC
|
|
String msg = getCPUSerial() + getMotherboardSN().replace(".", "") + getHardDiskSN("c") + getMac().replace("-", "");
|
|
System.out.println("原始数据:" + msg);//rT7DaHDt68m9IjVr
|
|
// String encrypt = DesUtil.encrypt(msg);
|
|
// System.out.println("加密:" + encrypt);
|
|
// String decrypt = DesUtil.decrypt(encrypt);
|
|
// System.out.println("解密:" + decrypt);
|
|
|
|
SymmetricCrypto sm4 = SmUtil.sm4();
|
|
String encryptHex = sm4.encryptHex("rT7DaHDt68m9IjVr" + msg);
|
|
String decryptStr = sm4.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
|
|
System.out.println("加密后:" + msg);//rT7DaHDt68m9IjVr
|
|
|
|
// MyHardWareUtils.getCPUID();
|
|
}
|
|
}
|