pull/149/head
FongMi 3 years ago
parent f33a4ef955
commit 63b412c377
  1. 29
      app/src/main/java/com/fongmi/android/tv/api/Decoder.java
  2. 2
      catvod/src/main/java/com/github/catvod/utils/Crypto.java
  3. 2
      quickjs/src/main/java/com/fongmi/quickjs/method/Global.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;
}
}

@ -1,4 +1,4 @@
package com.fongmi.quickjs.utils;
package com.github.catvod.utils;
import android.util.Base64;

@ -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;

Loading…
Cancel
Save