Forum RSS Feed Follow @ Twitter Follow On Facebook

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[-]
Welcome
You have to register before you can post on our site.

Username:


Password:





[-]
Latest Threads
[REQUEST] Gigabyte Aero 15 OLED KC BIOS ...
Last Post: blender8247
Today 08:38 AM
» Replies: 14
» Views: 8159
[REQUEST] Lenovo G70-70 BIOS Whitelist R...
Last Post: Dudu2002
Today 06:36 AM
» Replies: 139
» Views: 121033
[REQUEST] Lenovo Thinkpad X240 (GIETxxWW...
Last Post: obstinate
Yesterday 02:46 AM
» Replies: 44
» Views: 41165
[REQUEST] Lenovo IdeaPad Y580 (5DCNxxWW)...
Last Post: MageLeader
10-29-2026 01:07 PM
» Replies: 92
» Views: 72638
[Unlocked] Acer Aspire One D255E
Last Post: ethaniel
10-29-2026 08:43 AM
» Replies: 4
» Views: 7281
[REQUEST] Lenovo T440(S) (GJETxxWW) Whit...
Last Post: Ederandra14
10-29-2026 07:56 AM
» Replies: 504
» Views: 338833
Unlock BIOS Password Request - HP ProBoo...
Last Post: zxdpxl
10-28-2026 03:43 AM
» Replies: 1
» Views: 522
[REQUEST] Lenovo G510 (79CNxxWW) Whiteli...
Last Post: Dudu2002
10-27-2026 02:50 AM
» Replies: 607
» Views: 444494
[REQUEST] Acer Aspire E1-570G BIOS Unloc...
Last Post: Dudu2002
10-27-2026 02:46 AM
» Replies: 78
» Views: 78561
[REQUEST] Lenovo L440 Whitelist Removal
Last Post: DeadMashine
10-26-2026 05:12 PM
» Replies: 147
» Views: 105358
[REQUEST] Lenovo G40-70 (9ACNxxWW) BIOS ...
Last Post: ((CHT_Player))
10-25-2026 05:13 PM
» Replies: 68
» Views: 55176
Fujitsulifebook u758
Last Post: DeviniusMaximus
10-25-2026 05:44 AM
» Replies: 1
» Views: 374
[REQUEST] HP 630 BIOS Unlock
Last Post: SPCM
10-24-2026 12:36 PM
» Replies: 50
» Views: 59379
【HELP】m75q gen2 AM4IV VER:0.2 BIOS
Last Post: FoggySea
10-24-2026 08:48 AM
» Replies: 0
» Views: 197
PC tinkerers chat: how do you thank the ...
Last Post: ShaneWhi87
10-23-2026 10:46 AM
» Replies: 0
» Views: 322
[solved] ASUS 1000HE - Enable AHCI mode ...
Last Post: Fontestic
10-23-2026 05:49 AM
» Replies: 17
» Views: 48313
[REQUEST] Lenovo Z410 & Z510 (8DCNxxWW) ...
Last Post: Grishman
10-22-2026 05:21 PM
» Replies: 505
» Views: 314875
[REQUEST] Lenovo X270 (R0IETxxW) Whiteli...
Last Post: interfare
10-22-2026 05:46 AM
» Replies: 27
» Views: 20605
[REQUEST] Lenovo Thinkpad E130 (H4ETxxWW...
Last Post: ch1980
10-22-2026 02:16 AM
» Replies: 498
» Views: 296427
[REQUEST] Dell Inspiron 15R SE 7520 BIOS...
Last Post: pcnerdwantobe
10-22-2026 01:32 AM
» Replies: 102
» Views: 92426

Analyze java class System Identifier code of a windows application to Modify uniqueID
#1
Heart 
Hello friends ...
Please some one help me to change unique ID created by below mentioned java class script..
The script create an Unique ID by mixing - OEM name +Bios serial Number + Ethernet MAC Address + Processor Serial Number but I can't find and edit all of these.. 
so, please help me to understand the mechanism of the script..
Code:
WindowsMachineIdentity.java WindowsMachineIdentity.java import com.citumpe.ctpTools.jWMI; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.NetworkInterface; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.Scanner; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class WindowsMachineIdentity implements IMachineIdentity {    private static final Logger LOGGER = LoggerFactory.getLogger(WindowsMachineIdentity.class);    private static final String BLANK_STRING = "";    private static final String MACHINE_ID_TYPE_PRIMARY = "primary";    private static final String MACHINE_ID_TYPE_SECONDARY = "secondary";    private static final String[] INVALID_OEM_NAMES = new String[]{"Not Available", "NA", "To be filled by", "Provided by"};    private String machineId;    private String machineHash;    private String oemName = "";    private String primaryMachineHash = "";    private String secondaryMachineHash = "";    private String machineIdRegisteredMode = "";    private static String getMacAddress(byte[] macBytes) {       StringBuilder strBuilder = new StringBuilder();       for(int i = 0; i < macBytes.length; ++i) {          strBuilder.append(String.format("%02X%s", macBytes[i], i < macBytes.length - 1 ? ":" : ""));       }       return strBuilder.toString().toUpperCase();    }    public final String getUniqueMachineId() throws Exception {       if (this.machineId != null) {          LOGGER.debug("getUniqueMachineId method machineId: " + this.machineId);          return this.machineId;       } else {          String oemName = this.getOEMName();          this.machineId = oemName + this.getUniqueMachineHash();          if (oemName.equals("")) {             LOGGER.warn("OEM name is a blank value");          }          return this.machineId;       }    }    public final String getPrimaryMachineHash() {       if (!this.primaryMachineHash.isEmpty()) {          return this.primaryMachineHash;       } else {          String biosSerial = this.getWindowsBiosSerialNo();          boolean isBIOSDefault = this.isDefaultString(biosSerial);          if (isBIOSDefault) {             LOGGER.warn("BIOS serial number is a default value");          }          byte[] machineCode = biosSerial.getBytes();          this.primaryMachineHash = this.hash(machineCode);          return this.primaryMachineHash;       }    }    public final String getSecondaryMachineHash() throws Exception {       if (!this.secondaryMachineHash.isEmpty()) {          return this.secondaryMachineHash;       } else {          String macID = this.getWindowsEthernetMacAddress();          String processorID = this.getProcessorSerialNo();          String hardDiskSerialNumber = this.getWindowsHardDiskSerialNo();          String uniqueSysID = macID + hardDiskSerialNumber + processorID;          if (this.isDefaultString(uniqueSysID)) {             LOGGER.warn("Secondary combination for machine ID appears to be a default value");          }          byte[] machineCode = uniqueSysID.getBytes();          this.secondaryMachineHash = this.hash(machineCode);          return this.secondaryMachineHash;       }    }    public String getMachineDetails() {       String biosSerialNo = this.getWindowsBiosSerialNo();       String hardDiskSerialNo = this.getWindowsHardDiskSerialNo();       String processorSerialNo = this.getProcessorSerialNo();       String macId;       try {          macId = this.getWindowsEthernetMacAddress();       } catch (Exception var6) {          macId = "";       }       this.machineIdRegisteredMode = "primary";       if (StringUtils.isEmpty(biosSerialNo) || !this.isAlphaNumericOrNumeric(biosSerialNo) || this.isDefaultString(biosSerialNo)) {          this.machineIdRegisteredMode = "secondary";       }       return biosSerialNo + "|" + macId + "|" + hardDiskSerialNo + "|" + processorSerialNo;    }    public void diagnoseChangeInMachineIdentity(String registeredMachineDetails) {       if (registeredMachineDetails != null) {          String systemMachineDetails = this.getMachineDetails();          String[] calculatedComponents = systemMachineDetails.split("\\|");          String[] registeredComponents = registeredMachineDetails.split("\\|");          if (LOGGER.isDebugEnabled()) {             for(int i = 0; i < registeredComponents.length; ++i) {                if (!registeredComponents[i].equals(calculatedComponents[i])) {                   LOGGER.debug("Component " + (i + 1) + " for calculating machine code doesn't match");                }             }          }       }    }    public String getMachineIdMode() {       return this.machineIdRegisteredMode;    }    public final String getUniqueMachineHash() throws Exception {       if (this.machineHash != null) {          LOGGER.debug("getUniqueMachineHash method machineHash:" + this.machineHash);          return this.machineHash;       } else {          String biosSerial = this.getWindowsBiosSerialNo();          boolean isBIOSDefault = this.isDefaultString(biosSerial);          if (this.isAlphaNumericOrNumeric(biosSerial) && !isBIOSDefault) {             this.machineIdRegisteredMode = "primary";             this.machineHash = this.getPrimaryMachineHash();             LOGGER.debug("getUniqueMachineId method primary :" + this.machineHash);          } else {             if (isBIOSDefault) {                LOGGER.warn("primary combination is a default value. Attempting new combination for machine ID");             }             this.machineIdRegisteredMode = "secondary";             this.machineHash = this.getSecondaryMachineHash();             LOGGER.debug("getUniqueMachineId method secondary :" + this.machineHash);          }          return this.machineHash;       }    }    private String hash(byte[] bytes) {       HashGeneratorImpl hashGen = new HashGeneratorImpl();       byte[] hashSysId = hashGen.generateHash(bytes);       String hashedSysId = this.byteArrayToHexString(hashSysId);       return this.convertToUUID(hashedSysId.replace("-", "")).toUpperCase();    }    boolean isDefaultString(String uniqueSysID) {       if (StringUtils.isEmpty(uniqueSysID)) {          return true;       } else {          int length = uniqueSysID.length();          char[] defaultValueArray = new char[length];          Arrays.fill(defaultValueArray, '0');          String defaultValueString = new String(defaultValueArray);          return defaultValueString.equals(uniqueSysID);       }    }    private String getProcessorSerialNo() {       String serialnum = "";       try {          Process process = Runtime.getRuntime().exec(new String[]{"wmic", "cpu", "get", "processorid"});          process.getOutputStream().close();          Scanner sc1 = new Scanner(process.getInputStream());          String property = sc1.next();          serialnum = sc1.next();       } catch (Exception var5) {          LOGGER.error("Failed to get primary component for machine id");       }       return serialnum.trim();    }    private String getWindowsHardDiskSerialNo() {       Process hdd = null;       StringBuilder output = new StringBuilder("");       try {          hdd = Runtime.getRuntime().exec(new String[]{"wmic", "path", "win32_physicalmedia", "get", "serialnumber"});          BufferedReader input = new BufferedReader(new InputStreamReader(hdd.getInputStream()));          String line;          while((line = input.readLine()) != null) {             if (!line.contains("Microsoft") && !line.equals("")) {                output.append(line).append("\r\n");             }          }       } catch (Exception var6) {       }       if (hdd != null) {          hdd.destroy();          hdd = null;       }       if (output.toString().contains("SerialNumber")) {          output = new StringBuilder(output.toString().replaceFirst("SerialNumber", ""));       }       return output.toString().trim();    }    private String getWindowsBiosSerialNo() {       String serialNumber = "";       try {          Process process = Runtime.getRuntime().exec(new String[]{"wmic", "bios", "get", "serialnumber"});          process.getOutputStream().close();          Scanner sc = new Scanner(process.getInputStream());          String var1 = sc.next();          try {             serialNumber = sc.next();          } catch (Exception var6) {          }          if (StringUtils.isEmpty(serialNumber) || !this.isAlphaNumericOrNumeric(serialNumber)) {             return " ";          }       } catch (Exception var7) {          LOGGER.debug("primary machine code calculation exception" + var7);       }       return serialNumber;    }    private String getWindowsEthernetMacAddress() throws Exception {       Enumeration<NetworkInterface> inetAddresses = NetworkInterface.getNetworkInterfaces();       ArrayList addresses = new ArrayList();       while(inetAddresses.hasMoreElements()) {          byte[] macBytes = ((NetworkInterface)inetAddresses.nextElement()).getHardwareAddress();          if (macBytes != null) {             addresses.add(getMacAddress(macBytes));          }       }       Collections.sort(addresses);       if (((String)addresses.get(0)).equals("")) {          addresses.remove(0);       }       return (String)addresses.get(0);    }    private String convertToUUID(String convertString) {       return convertString.substring(0, 8) + "-" + convertString.substring(8, 12) + "-" + convertString.substring(12, 16) + "-" + convertString.substring(16, 20) + "-" + convertString.substring(20, 32);    }    private String byteArrayToHexString(byte[] bytes) {       StringBuilder result = new StringBuilder();       byte[] var3 = bytes;       int var4 = bytes.length;       for(int var5 = 0; var5 < var4; ++var5) {          byte b = var3[var5];          result.append(Integer.toString((b & 255) + 256, 16).substring(1));       }       return result.toString();    }    public String getOEMName() {       String oem = "";       if (!this.oemName.equals("")) {          return this.oemName;       } else {          try {             oem = jWMI.getWMIValue("Select Manufacturer from Win32_BIOS", "Manufacturer");          } catch (Exception var3) {             LOGGER.error("Error retrieving OEM name.");          }          this.oemName = this.isOEMNameCorrect(oem) ? oem.replace(",", "") : "";          return this.oemName;       }    }    private boolean isOEMNameCorrect(String oemName) {       String[] var2 = INVALID_OEM_NAMES;       int var3 = var2.length;       for(int var4 = 0; var4 < var3; ++var4) {          String element = var2[var4];          if (element.equalsIgnoreCase(oemName) || element.startsWith(oemName) || element.contains(oemName)) {             return false;          }       }       return true;    }    private boolean isAlphaNumericOrNumeric(String num) {       String pattern = "^[0-9A-Za-z-]*$";       String numRegex = "(.)*(\\d)(.)*";       if (num.matches(numRegex) && num.matches(pattern)) {          return true;       } else {          LOGGER.info("isAlphaNumericOrNumeric pattern does not match:");          return false;       }    } }   

please feel the desire and kindly help me..
Thanks in advance to all of you who try to solve 
My Email:psassk0236@gmail.com
find
quote


Forum Jump:


Users browsing this thread: 1 Guest(s)