1 package com.szht.gpy.util; 2 3 import java.applet.Applet; 4 import java.awt.Graphics; 5 import java.io.BufferedReader; 6 import java.io.File; 7 import java.io.FileWriter; 8 import java.io.InputStreamReader; 9 import java.net.InetAddress; 10 import java.net.NetworkInterface; 11 12 13 public class HardWareUtils extends Applet { 14 public HardWareUtils(){ 15 } 16 private static final long serialVersionUID = 1L; 17 18 @Override 19 public void paint(Graphics paint) { 20 super.paint(paint); 21 paint.drawString("获取硬件信息", 10, 10); 22 paint.drawString("CPU SN:" + HardWareUtils.getCPUSerial(), 10, 30); 23 paint.drawString("主板 SN:" + HardWareUtils.getMotherboardSN(), 10, 50); 24 paint.drawString("C盘 SN:" + HardWareUtils.getHardDiskSN("c"), 10, 70); 25 paint.drawString("MAC SN:" + HardWareUtils.getMac(), 10, 90); 26 } 27 28 /** 29 * 获取主板序列号 30 * 31 * @return 32 */ 33 public static String getMotherboardSN() { 34 String result = ""; 35 try { 36 File file = File.createTempFile("realhowto", ".vbs"); 37 file.deleteOnExit(); 38 FileWriter fw = new java.io.FileWriter(file); 39 String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n" 40 + "Set colItems = objWMIService.ExecQuery _ \n" 41 + " (\"Select * from Win32_BaseBoard\") \n" 42 + "For Each objItem in colItems \n" 43 + " Wscript.Echo objItem.SerialNumber \n" 44 + " exit for ' do the first cpu only! \n" + "Next \n"; 45 46 fw.write(vbs); 47 fw.close(); 48 Process p = Runtime.getRuntime().exec( 49 "cscript //NoLogo " + file.getPath()); 50 BufferedReader input = new BufferedReader(new InputStreamReader(p 51 .getInputStream())); 52 String line; 53 while ((line = input.readLine()) != null) { 54 result += line; 55 } 56 input.close(); 57 } catch (Exception e) { 58 e.printStackTrace(); 59 } 60 return result.trim(); 61 } 62 63 /** 64 * 获取硬盘序列号 65 * 66 * @param drive 67 * 盘符 68 * @return 69 */ 70 public static String getHardDiskSN(String drive) { 71 String result = ""; 72 try { 73 File file = File.createTempFile("realhowto", ".vbs"); 74 file.deleteOnExit(); 75 FileWriter fw = new java.io.FileWriter(file); 76 77 String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n" 78 + "Set colDrives = objFSO.Drives\n" 79 + "Set objDrive = colDrives.item(\"" 80 + drive 81 + "\")\n" 82 + "Wscript.Echo objDrive.SerialNumber"; // see note 83 fw.write(vbs); 84 fw.close(); 85 Process p = Runtime.getRuntime().exec( 86 "cscript //NoLogo " + file.getPath()); 87 BufferedReader input = new BufferedReader(new InputStreamReader(p 88 .getInputStream())); 89 String line; 90 while ((line = input.readLine()) != null) { 91 result += line; 92 } 93 input.close(); 94 } catch (Exception e) { 95 e.printStackTrace(); 96 } 97 return result.trim(); 98 } 99 100 /**101 * 获取CPU序列号102 * 103 * @return104 */105 public static String getCPUSerial() {106 String result = "";107 try {108 File file = File.createTempFile("tmp", ".vbs");109 file.deleteOnExit();110 FileWriter fw = new java.io.FileWriter(file);111 String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"112 + "Set colItems = objWMIService.ExecQuery _ \n"113 + " (\"Select * from Win32_Processor\") \n"114 + "For Each objItem in colItems \n"115 + " Wscript.Echo objItem.ProcessorId \n"116 + " exit for ' do the first cpu only! \n" + "Next \n";117 fw.write(vbs);118 fw.close();119 Process p = Runtime.getRuntime().exec(120 "cscript //NoLogo " + file.getPath());121 BufferedReader input = new BufferedReader(new InputStreamReader(p122 .getInputStream()));123 String line;124 while ((line = input.readLine()) != null) {125 result += line;126 }127 input.close();128 file.delete();129 } catch (Exception e) {130 e.fillInStackTrace();131 }132 if (result.trim().length() < 1 || result == null) {133 result = "无CPU_ID被读取";134 }135 return result.trim();136 }137 138 /**139 * 获取MAC地址140 */141 public static String getMac() {142 try {143 byte[] mac = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()).getHardwareAddress();144 StringBuffer sb = new StringBuffer();145 for (int i = 0; i < mac.length; i++) {146 if (i != 0) {147 sb.append("-");148 }149 String s = Integer.toHexString(mac[i] & 0xFF);150 sb.append(s.length() == 1 ? 0 + s : s);151 }152 return sb.toString().toUpperCase();153 } catch (Exception e) {154 return "";155 }156 157 }158 159 160 public static void main(String[] args) throws Exception {161 System.out.println(getCPUSerial());//CPU162 System.out.println(getMotherboardSN());//主板163 System.out.println(getHardDiskSN("c"));//c盘164 System.out.println(getMac());//MAC165 String msg = getCPUSerial()+getMotherboardSN().replace(".", "")+getHardDiskSN("c")+getMac().replace("-", "");166 System.out.println("原始数据:"+msg);167 168 String encrypt = DesUtil.encrypt(msg);169 System.out.println("加密:"+encrypt);170 String decrypt = DesUtil.decrypt(encrypt);171 System.out.println("解密:"+decrypt);172 }173 }