- 81
- 2
Надо создать получение HWID для функций бана. Насколько я знаю в Java нету средств для создания HWID по этому покопавшись а интернете я нашел код который получает переменные (которые как я понимаю можно не сложно подменить) и преобразует его в HEX значит при изменении хоть одного параметра всё будет меняться. Вопрос ,как сделать нормальный HWID для нормального бана пользователей чтобы привязка была по железу а не по переменным? Код в комплекте к вопросу.
UPD: Еще на гите есть такой вариант
Java:
public static String getHWID() {
try{
String toEncrypt = System.getenv("COMPUTERNAME") + System.getProperty("user.name") + System.getenv("PROCESSOR_IDENTIFIER") + System.getenv("PROCESSOR_LEVEL");
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(toEncrypt.getBytes());
StringBuffer hexString = new StringBuffer();
byte byteData[] = md.digest();
for (byte aByteData : byteData) {
String hex = Integer.toHexString(0xff & aByteData);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
} catch (Exception e) {
e.printStackTrace();
return "Error";
}
}
}
Java:
public class HWID {
private final static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static byte[] generateHWID() {
try {
MessageDigest hash = MessageDigest.getInstance("MD5");
String s = System.getProperty("os.name") +
System.getProperty("os.arch") +
System.getProperty("os.version") +
Runtime.getRuntime().availableProcessors() +
System.getenv("PROCESSOR_IDENTIFIER") +
System.getenv("PROCESSOR_ARCHITECTURE") +
System.getenv("PROCESSOR_ARCHITEW6432") +
System.getenv("NUMBER_OF_PROCESSORS");
return hash.digest(s.getBytes());
} catch (NoSuchAlgorithmException e) {
throw new Error("Algorithm wasn't found.", e);
}
}
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16));
}
return data;
}
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
Последнее редактирование: