diff --git a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java index 330e4fafb..a199065de 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java +++ b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java @@ -7,7 +7,6 @@ import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Json; import com.github.catvod.utils.Path; import com.github.catvod.utils.Util; -import com.google.common.io.BaseEncoding; import java.io.File; import java.nio.charset.StandardCharsets; @@ -65,26 +64,22 @@ public class Decoder { } private static String ecb(String data, String key) throws Exception { - SecretKeySpec spec = new SecretKeySpec(padEnd(key), "AES"); + SecretKeySpec spec = new SecretKeySpec(padEnd(key).getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, spec); return new String(cipher.doFinal(decodeHex(data)), StandardCharsets.UTF_8); } private static String cbc(String data) throws Exception { - int indexKey = data.indexOf("2324") + 4; - String key = new String(decodeHex(data.substring(0, indexKey)), StandardCharsets.UTF_8); - key = key.replace("$#", "").replace("#$", ""); - int indexIv = data.length() - 26; - String iv = data.substring(indexIv).trim(); - iv = new String(decodeHex(iv), StandardCharsets.UTF_8); - SecretKeySpec keySpec = new SecretKeySpec(padEnd(key), "AES"); - IvParameterSpec ivSpec = new IvParameterSpec(padEnd(iv)); + String decode = new String(decodeHex(data)).toLowerCase(); + String key = padEnd(decode.substring(decode.indexOf("$#") + 2, decode.indexOf("#$"))); + String iv = padEnd(decode.substring(decode.length() - 13)); + SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES"); + IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); - data = data.substring(indexKey, indexIv).trim(); - byte[] encryptDataBytes = decodeHex(data); - byte[] decryptData = cipher.doFinal(encryptDataBytes); + data = data.substring(data.indexOf("2324") + 4, data.length() - 26); + byte[] decryptData = cipher.doFinal(decodeHex(data)); return new String(decryptData, StandardCharsets.UTF_8); } @@ -99,11 +94,13 @@ public class Decoder { return matcher.find() ? data.substring(data.indexOf(matcher.group()) + 10) : ""; } - private static byte[] padEnd(String key) { - return (key + "0000000000000000".substring(key.length())).getBytes(StandardCharsets.UTF_8); + private static String padEnd(String key) { + return key + "0000000000000000".substring(key.length()); } private static byte[] decodeHex(String s) { - return BaseEncoding.base16().decode(s.toUpperCase()); + byte[] bytes = new byte[s.length() / 2]; + for (int i = 0; i < bytes.length; i++) bytes[i] = Integer.valueOf(s.substring(i * 2, i * 2 + 2), 16).byteValue(); + return bytes; } } diff --git a/quickjs/src/main/java/com/fongmi/quickjs/utils/Crypto.java b/catvod/src/main/java/com/github/catvod/utils/Crypto.java similarity index 99% rename from quickjs/src/main/java/com/fongmi/quickjs/utils/Crypto.java rename to catvod/src/main/java/com/github/catvod/utils/Crypto.java index 574f52de2..13d432dc2 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/utils/Crypto.java +++ b/catvod/src/main/java/com/github/catvod/utils/Crypto.java @@ -1,4 +1,4 @@ -package com.fongmi.quickjs.utils; +package com.github.catvod.utils; import android.util.Base64; diff --git a/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java b/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java index 149eea4ac..edd1998af 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java @@ -5,7 +5,7 @@ import androidx.annotation.NonNull; import com.fongmi.quickjs.bean.Req; import com.fongmi.quickjs.utils.Connect; -import com.fongmi.quickjs.utils.Crypto; +import com.github.catvod.utils.Crypto; import com.fongmi.quickjs.utils.JSUtil; import com.fongmi.quickjs.utils.Parser; import com.fongmi.quickjs.utils.Proxy;