Groovy web console

subscribe to the feed Subscribe
to this
site

TESTE HAPA ALPHA

Published 5 months ago by Anonymous
Actions Execute script  ▶ Edit in console Back to console Show/hide line numbers View recent scripts
import javax.crypto.Cipherimport javax.crypto.SecretKey
import javax.crypto.SecretKeyFactory
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.PBEKeySpec
import javax.crypto.spec.SecretKeySpec
import java.security.Key
import java.security.spec.KeySpec
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

encrypt("1100000000000000000000000000") //Your text here
Map map = dispose("1KQ+dHUDvoMx3ozllr6gBPmW/5bgKUv7hQTPVcbVVImRb5UY7mW814o85tEfykVKzwTSr6OTWSN2HvWk+bHLNXYmTP/KZt0ELI8cINmylwruRZgcxgD0leF3jUeYAz5C5pjC6BdQ+GjFNg==".replaceAll("[\\r\\n]", ""), "56789jskwijskcnxmesd");

String encrypt(String strToEncrypt) {
    int lockEvents = ((0x000001f0 & 0xFF) << 24 | (0x000001f0 & 0xFF) << 16 | (0x000001f0 & 0xFF) << 8 | 0x000001f0 & 0xFF);
    int n = ((String) strToEncrypt).length() / 2;
    byte[] byArray = new byte[n];
    byte[] retorno = new byte[64];
    byte[] byArray2 = new byte[16];
    byte[] byArray3 = new byte[16];
    //byArray2 = [0x11, 0x00,0x00,0x01,0x63,0x63,0xEC,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,];
    byArray2 = [0x65, 0xAF,0x9A,0xCC,0xB9,0x75,0x11,0xFC, 0xE2, 0xD0, 0xFC, 0xCA, 0x12, 0x09, 0x5B, 0x39];
    byArray3 = [0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
    String string = "";
    String encryptionKey = "1234567890123456";//Paste your key here
    //return Bytes2HexString(byArray2);
    retorno = Encrypt(byArray3, encryptionKey);
    byArray2 = retorno;
    //return Bytes2HexString (retorno);
    System.out.println(Bytes2HexString (retorno));
    //return null;
    retorno = Decrypt1(byArray2, encryptionKey);
    System.out.println(Bytes2HexString (retorno));
    return null;
    return Decrypt1(retorno , encryptionKey);
    return Decrypt1(byArray2 , encryptionKey);
    byArray = hexStringToByte(strToEncrypt);
    //int lockEvents = -411493796;
    //var0.setRoomEvents(0);
    //setGuestEvents(0);

    //var4_23 = var0.getRoomMainKey().getBytes();
    //var7_26 /* !! */  = generateWorkingKey(var4_23, 0);
    //return generateSignatureV2(var7_26  , lockEvents, Bytes2AsciiString(var13_31, 3, var3_22));

    // var0 = generateSignatureV2(generateWorkingKey(var4_23, var0.getRoomEvents()), var0.getLockEvents(), Bytes2AsciiString(var13_31, 3, var2_21));

    return generateSignatureV2(byArray2, lockEvents, Bytes2AsciiString(byArray, 3, 4));
    //Key aesKey = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");
    if (!strToEncrypt) return strToEncrypt
    //Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding")
    //cipher.init(1, aesKey);
    //retorno = cipher.doFinal(byArray);
    //int i;
    //String x = "0123456789ABCDEF";
    //for (i = 0; i < retorno.length; i++){
        //char ch = (retorno[i] >> ((32-4) - i*4)) & 0xF;
    //    string += Integer.toHexString((retorno[i] >> ((32-4) - i*4)) & 0xF);
    //}
      //  unsigned char ch = (a >> ((32-4) - i*4)) & 0xF;      
      //  string[i] = arr[ch];
    //}
    //string[i] = '\0';
    //String encryptedStr = cipher.doFinal(strToEncrypt.getBytes("UTF-8")).encodeBase64()
    //System.arraycopy(byArray, 0, retorno, 0, 5);
    //return byArray;
    //return retorno;
    retorno = Encrypt(byArray, encryptionKey);
    return Bytes2HexString (retorno);
    //return string;
    //return bytesToHexString (retorno);
}
 
public static byte[] Encrypt(byte[] byArray, String object) throws Exception {
        if (object == null) {
            return null;
        }
        if (((String)object).length() < 16) {
            return null;
        }
        Object object2 = object;
        if (((String)object).length() > 16) {
            object2 = ((String)object).substring(0, 16);
        }
        Key aesKey = new SecretKeySpec(object2.getBytes("UTF-8"), "AES");
        //object = new SecretKeySpec(((String)object2).getBytes("utf-8"), "AES");
        object2 = Cipher.getInstance("AES/ECB/PKCS5Padding");
        ((Cipher)object2).init(1, aesKey);
        return ((Cipher)object2).doFinal(byArray);
    }

    public byte toByte(char c) {
        String x = "0123456789ABCDEF";
        byte z = x.indexOf((String)c); 
        return z;
    }

    public byte[] hexStringToByte(String object) {
        int n = ((String)object).length() / 2;
        byte[] byArray = new byte[n];
        object = ((String)object).toCharArray();
        for (int i = 0; i < n; ++i) {
            int n2 = i * 2;
            byte by = this.toByte((char)object[n2]);
            byArray[i] = (byte)(this.toByte((char)object[n2 + 1]) | by << 4);
        }
        return byArray;
    }

    public static String Bytes2AsciiString(byte[] byArray, int n, int n2) {
        byte[] byArray2 = new byte[n2 - n];
        for (int i = n; i < n2; ++i) {
            byArray2[i - n] = byArray[i];
        }
        return byteToString(byArray2);
    }

    public static String Bytes2HexString(byte[] byArray) {
        byte[] hex = "0123456789ABCDEF".getBytes();
        byte[] byArray2 = new byte[byArray.length * 2];
        for (int i = 0; i < byArray.length; ++i) {
            int n = i * 2;
            byte[] byArray3 = hex;
            byArray2[n] = byArray3[byArray[i] >> 4 & 0xF];
            byArray2[n + 1] = byArray3[byArray[i] & 0xF];
        }
        return new String(byArray2);
    }

    public static String byteToString(byte[] byArray) {
        String string = "";
        int n = byArray.length;
        for (int i = 0; i < n; ++i) {
            char c = (char)byArray[i];
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append(string);
            stringBuilder.append(c);
            string = stringBuilder.toString();
        }
        return string;
    }

    public static char getCheckSum(byte[] byArray, int n, int n2) {
        char c;
        char c2 = c = '\u0000';
        for (int i = 0; i < n; ++i) {
            c = (char)(c2 + byArray[i + n2]);
            c2 = c;
        }
        return c2;
    }


   public String bytesToHexString(byte[] paramArrayOfbyte) {
    StringBuffer stringBuffer = new StringBuffer(paramArrayOfbyte.length);
    for (byte b = 0;; b++) {
      if (b >= paramArrayOfbyte.length)
        return stringBuffer.toString(); 
      String str = Integer.toHexString(paramArrayOfbyte[b] & 0xFF);
      if (str.length() < 2)
        stringBuffer.append(0); 
      stringBuffer.append(str.toUpperCase());
    } 
  }

    private static byte[] XOR64BufferWith36(byte[] byArray) {
        for (int i = 0; i < 64; ++i) {
            byArray[i] = (byte)(byArray[i] ^ 0x36);
        }
        return byArray;
    }

    private static byte[] XOR64BufferWith5c(byte[] byArray) {
        for (int i = 0; i < 64; ++i) {
            byArray[i] = (byte)(byArray[i] ^ 0x5C);
        }
        return byArray;
    }

    public static byte[] generateGuestWorkingKey(String string, int n, String string2) {
        byte[] byArray = new byte[string2.length() + 8];
        byte by = (byte)(n >> 24);
        int n2 = 0;
        byArray[0] = by;
        byArray[1] = (byte)(n >> 16);
        byArray[2] = (byte)(n >> 8);
        byArray[3] = (byte)n;
        for (n = n2; n < string2.length(); ++n) {
            byArray[n + 7] = (byte)string2.charAt(n);
        }
        return hmacSha1(string, byteToString(byArray));
    }

    public static byte[] generatePsw(byte[] byArray) {
        byte[] byArray2 = new byte[8];
        int n = hotp4ToInt(byArray, byArray[19] & 0xF) % 100000000;
        for (int i = 0; i < 8; ++i) {
            if (i == 0) {
                byArray2[7 - i] = (byte)48;
            }
            byArray2[7 - i] = (byte)(n % 10 + 48);
            n /= 10;
        }
        return byArray2;
    }

    public static byte[] generatePswV2(byte[] byArray) {
        byte[] byArray2 = new byte[8];
        for (int i = 0; i < 4; ++i) {
            byte by = byArray[i + 16];
            int n = i * 2;
            byArray2[n] = byArray[by >> 4 & 0xF];
            byArray2[n + 1] = byArray[by & 0xF];
        }
        return byArray2;
    }

    public static byte[] generateSignatureV2(byte[] byArray, int n, String object) {
        int n2;
        int n3 = ((String)object).length();
        byte[] byArray2 = new byte[((String)object).length() + 68];
        int n4 = 0;
        for (n2 = 0; n2 < 20; ++n2) {
            byArray2[n2] = byArray[n2];
        }
        byArray2 = XOR64BufferWith36(byArray2);
        for (n2 = 0; n2 < ((String)object).length(); ++n2) {
            byArray2[n2 + 64] = (byte)((String)object).charAt(n2);
        }
        n2 = n3 + 64;
        byArray2[n2] = (byte)(n >> 24);
        byArray2[n2 + 1] = (byte)(n >> 16);
        byArray2[n2 + 2] = (byte)(n >> 8);
        byArray2[n2 + 3] = (byte)n;
        object = digest(byArray2);
        byArray2 = new byte[184];
        for (n = 0; n < 20; ++n) {
            byArray2[n] = byArray[n];
        }
        byArray = XOR64BufferWith5c(byArray2);
        for (n = n4; n < ((Object)object).length(); ++n) {
            byArray[n + 64] = (byte)object[n];
        }
        return generatePswV2(digest(byArray));
    }

    public static byte[] generateWorkingKey(byte[] byArray, int n) {
        byte[] byArray2 = new byte[72];
        int n2 = 0;
        for (int i = 0; i < byArray.length; ++i) {
            byArray2[i] = byArray[i];
        }
        byArray2 = XOR64BufferWith36(byArray2);
        byArray2[68] = (byte)(n >> 24);
        byArray2[69] = (byte)(n >> 16);
        byArray2[70] = (byte)(n >> 8);
        byArray2[71] = (byte)n;
        byArray2 = digest(byArray2);
        byte[] byArray3 = new byte[84];
        for (n = 0; n < byArray.length; ++n) {
            byArray3[n] = byArray[n];
        }
        byArray = XOR64BufferWith5c(byArray3);
        for (n = n2; n < byArray2.length; ++n) {
            byArray[n + 64] = byArray2[n];
        }
        return digest(byArray);
    }

    public static byte[] hmacSha1(String object, String object2) {
        int n;
        byte[] byArray = new byte[((String)object2).length() + 64];
        int n2 = 0;
        for (n = 0; n < 20; ++n) {
            byArray[n] = (byte)((String)object).charAt(n);
        }
        byArray = XOR64BufferWith36(byArray);
        for (n = 0; n < ((String)object2).length(); ++n) {
            byArray[n + 64] = (byte)((String)object2).charAt(n);
        }
        object2 = digest(byArray);
        byArray = new byte[84];
        for (n = 0; n < 20; ++n) {
            byArray[n] = (byte)((String)object).charAt(n);
        }
        object =XOR64BufferWith5c(byArray);
        for (n = n2; n < ((Object)object2).length; ++n) {
            object[n + 64] = (byte)object2[n];
        }
        return digest((byte[])object);
    }

    public static int hotp4ToInt(byte[] byArray, int n) {
        byte by = byArray[n];
        byte by2 = byArray[n + 1];
        byte by3 = byArray[n + 2];
        return byArray[n + 3] & 0xFF | ((by & 0x7F) << 24 | (by2 & 0xFF) << 16 | (by3 & 0xFF) << 8);
    }

    public static byte[] digest(byte[] byArray) {        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
            messageDigest.update(byArray);
            byArray = messageDigest.digest();
            return byArray;
        }
        catch (Exception exception) {
            throw new RuntimeException(exception);
        }
    }

    public static byte[] Decrypt1(byte[] string, String object) throws Exception {        
        if (object == null) {
            System.out.print("Key为空null");
            return null;
        }
        if (((String)object).length() != 16) {
            System.out.print("Key的长度有误");
            return null;
        }

        System.out.println((String)object);
        System.out.println(object.getBytes("UTF-8"));

        Object object2 = object;
        object2 = ((String)object).substring(0, 16);

        Key aesKey = new SecretKeySpec(object2.getBytes("UTF-8"), "AES");
        object2 = Cipher.getInstance("AES/ECB/PKCS5Padding");
        ((Cipher)object2).init(2, aesKey);

        System.out.println("AQUI");
        return ((Cipher)object2).doFinal(string);

        //return Bytes2HexString(((Cipher)object2).doFinal(string));
    }

    public static String jdkSHA1(String string) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA");
            messageDigest.update(string.getBytes());
            string = Bytes2HexString(messageDigest.digest());
            return string;
        }
        catch (NoSuchAlgorithmException noSuchAlgorithmException) {
            noSuchAlgorithmException.printStackTrace();
            return null;
        }
    }


  public static Map<String, Object> disposeX(String paramString1, String paramString2) {    String str2;
    String str3 = Bytes2HexString(Base64.decode(paramString1.getBytes(), 0));
    paramString1 = str3.substring(str3.length() - 20);
    str3 = str3.substring(0, str3.length() - 20);
    StringBuilder stringBuilder2 = new StringBuilder();
    stringBuilder2.append(str2HexStr(paramString2));
    stringBuilder2.append(str3);
    if (!paramString1.equals(jdkSHA2(stringBuilder2.toString()).substring(0, 20))) {
      System.out.println("Assinatura Incorreta");
      return null;
    } 
    paramString1 = "";
    try {
      str3 = Decrypt1(str3, paramString2.substring(0, 16));
      paramString1 = str3;
    } catch (Exception exception) {
      exception.printStackTrace();
    } 
    str3 = paramString1.substring(0, 32);
    String str5 = paramString1.substring(32, 96);
    String str4 = paramString1.substring(96, 160);
    paramString1 = paramString1.substring(160, 176);
    String str6 = hexStr2Str(str3).trim();
    String str7 = hexStr2Str(paramString1).trim();
    StringBuilder stringBuilder1 = new StringBuilder();
    stringBuilder1.append(str6);
    stringBuilder1.append(paramString2);
    String str8 = jdkSHA1(stringBuilder1.toString());
    String str1 = "";
    str3 = "";
    try {
      paramString2 =Decrypt(str5, str8);
      str1 = paramString2;
      str4 = Decrypt(str4, str8);
      str1 = paramString2;
      paramString2 = str4;
    } catch (Exception exception) {
      exception.printStackTrace();
      str2 = str3;
    } 
    HashMap<Object, Object> hashMap = new HashMap<Object, Object>();
    hashMap.put("lockSn", str6);
    hashMap.put("lockType", str7);
    hashMap.put("manufactureKey", str1);
    hashMap.put("bindingKey", str2);
    return (Map)hashMap;
  }
  

  public static String bytesToHexFun1(byte[] paramArrayOfbyte) {
    char[] arrayOfChar = new char[paramArrayOfbyte.length * 2];
    int i = paramArrayOfbyte.length;
    byte b = 0;
    int j = 0;
    while (b < i) {
      byte b1 = paramArrayOfbyte[b];
      int m = b1;
      if (b1 < 0)
        m = b1 + 256; 
      int k = j + 1;
      char[] arrayOfChar1 = new char[16];
        arrayOfChar1 = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
      arrayOfChar[j] = (char)arrayOfChar1[m / 16];
      j = k + 1;
      arrayOfChar[k] = (char)arrayOfChar1[m % 16];
      b++;
    } 
    return new String(arrayOfChar);
  }
  
  public static String bytesToHexFun2(byte[] paramArrayOfbyte) {
    char[] arrayOfChar = new char[paramArrayOfbyte.length * 2];
    int i = paramArrayOfbyte.length;
    byte b = 0;
    int j = 0;
    while (b < i) {
      byte b1 = paramArrayOfbyte[b];
      int k = j + 1;
      char[] arrayOfChar1 = new char[16];
      arrayOfChar1 = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];

      arrayOfChar[j] = (char)arrayOfChar1[b1 >>> 4 & 0xF];
      j = k + 1;
      arrayOfChar[k] = (char)arrayOfChar1[b1 & 0xF];
      b++;
    } 
    return new String(arrayOfChar);
  }
  
    public static String hexStr2Str(String string) {
        if (string != null && !string.equals("")) {
            string = string.replace(" ", "");
            byte[] byArray = new byte[string.length() / 2];
            for (int i = 0; i < byArray.length; ++i) {
                int n = i * 2;
                try {
                    byArray[i] = (byte)(Integer.parseInt(string.substring(n, n + 2), 16) & 0xFF);
                    continue;
                }
                catch (Exception exception) {
                    exception.printStackTrace();
                }
            }
            try {
                String string2;
                string = string2 = new String(byArray, "UTF-8");
            }
            catch (Exception exception) {
                exception.printStackTrace();
            }
            return string;
        }
        return null;
    }
  
  public static String str2HexStr(String paramString) {
    char[] arrayOfChar = "0123456789ABCDEF".toCharArray();
    StringBuilder stringBuilder = new StringBuilder("");
    byte[] arrayOfByte = paramString.getBytes();
    for (byte b = 0; b < arrayOfByte.length; b++) {
      stringBuilder.append(arrayOfChar[(arrayOfByte[b] & 0xF0) >> 4]);
      stringBuilder.append(arrayOfChar[arrayOfByte[b] & 0xF]);
    } 
    return stringBuilder.toString().trim();
  }
  
  public static byte[] toBytes(String paramString) {
    byte b = 0;
    if (paramString == null || paramString.trim().equals(""))
      return new byte[0]; 
    byte[] arrayOfByte = new byte[paramString.length() / 2];
    while (b < paramString.length() / 2) {
      int i = b * 2;
      arrayOfByte[b] = (byte)(byte)Integer.parseInt(paramString.substring(i, i + 2), 16);
      b++;
    } 
    return arrayOfByte;
  }

  public static Map<String, Object> dispose(String paramString1, String paramString2) {
    String str2;
    String str3 = bytesToHexFun1(Base64.decode(paramString1.getBytes(), 0));
    paramString1 = str3.substring(str3.length() - 20);
    str3 = str3.substring(0, str3.length() - 20);
    StringBuilder stringBuilder2 = new StringBuilder();
    stringBuilder2.append(str2HexStr(paramString2));
    stringBuilder2.append(str3);
    if (!paramString1.equals(jdkSHA2(stringBuilder2.toString()).substring(0, 20))) {
      System.out.println("");
      return null;
    } 
    paramString1 = "";
    try {
      str3 = Decrypt1(str3, paramString2.substring(0, 16));
      paramString1 = str3;
    } catch (Exception exception) {
      exception.printStackTrace();
    } 
    str3 = paramString1.substring(0, 32);
    String str5 = paramString1.substring(32, 96);
    String str4 = paramString1.substring(96, 160);
    paramString1 = paramString1.substring(160, 176);
    String str6 = hexStr2Str(str3).trim();
    String str7 = hexStr2Str(paramString1).trim();
    StringBuilder stringBuilder1 = new StringBuilder();
    stringBuilder1.append(str6);
    stringBuilder1.append(paramString2);
    String str8 = jdkSHA1(stringBuilder1.toString());
    String str1 = "";
    str3 = "";
    try {
      paramString2 = Decrypt(str5, str8);
      str1 = paramString2;
      str4 = Decrypt(str4, str8);
      str1 = paramString2;
      paramString2 = str4;
    } catch (Exception exception) {
      exception.printStackTrace();
      str2 = str3;
    } 
    HashMap<Object, Object> hashMap = new HashMap<Object, Object>();
    hashMap.put("lockSn", str6);
    hashMap.put("lockType", str7);
    hashMap.put("manufactureKey", str1);
    hashMap.put("bindingKey", str2);
    return (Map)hashMap;
  }
  
  
  public static String jdkSHA2(String paramString) {
    try {
      MessageDigest messageDigest = MessageDigest.getInstance("SHA");
      messageDigest.update(toBytes(paramString));
      return bytesToHexFun1(messageDigest.digest());
    } catch (NoSuchAlgorithmException noSuchAlgorithmException) {
      noSuchAlgorithmException.printStackTrace();
      return null;
    } 
  }