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 * @return 104 */ 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(p 122 .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());//CPU 162 System.out.println(getMotherboardSN());//主板 163 System.out.println(getHardDiskSN("c"));//c盘 164 System.out.println(getMac());//MAC 165 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 }