pull/586/head
FongMi 1 year ago
parent 3ae452b224
commit 22745b5b8a
  1. 2
      app/src/main/java/com/fongmi/android/tv/bean/Drm.java
  2. 3
      app/src/main/java/com/fongmi/android/tv/bean/Parse.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/server/Nano.java
  5. 19
      catvod/src/main/java/com/github/catvod/utils/Util.java
  6. 4
      quickjs/src/main/java/com/fongmi/quickjs/bean/Res.java
  7. 4
      quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java
  8. 4
      quickjs/src/main/java/com/fongmi/quickjs/utils/Crypto.java

@ -44,7 +44,7 @@ public class Drm {
private String getUri() {
if (getKey().startsWith("http")) return getKey();
return Server.get().getAddress("license/") + Util.base64(getKey());
return Server.get().getAddress("license/") + Util.base64(getKey(), Util.URL_SAFE);
}
public MediaItem.DrmConfiguration get() {

@ -1,7 +1,6 @@
package com.fongmi.android.tv.bean;
import android.text.TextUtils;
import android.util.Base64;
import androidx.annotation.NonNull;
@ -128,7 +127,7 @@ public class Parse {
public String extUrl() {
int index = getUrl().indexOf("?");
if (getExt().isEmpty() || index == -1) return getUrl();
return getUrl().substring(0, index + 1) + "cat_ext=" + Util.base64(getExt().toString(), Base64.DEFAULT | Base64.URL_SAFE | Base64.NO_WRAP) + "&" + getUrl().substring(index + 1);
return getUrl().substring(0, index + 1) + "cat_ext=" + Util.base64(getExt().toString(), Util.URL_SAFE) + "&" + getUrl().substring(index + 1);
}
public HashMap<String, String> mixMap() {

@ -102,7 +102,7 @@ public class SiteViewModel extends ViewModel {
} else {
ArrayMap<String, String> params = new ArrayMap<>();
if (site.getType() == 1 && !extend.isEmpty()) params.put("f", App.gson().toJson(extend));
else if (site.getType() == 4) params.put("ext", Util.base64(App.gson().toJson(extend)));
if (site.getType() == 4) params.put("ext", Util.base64(App.gson().toJson(extend), Util.URL_SAFE));
params.put("ac", site.getType() == 0 ? "videolist" : "detail");
params.put("t", tid);
params.put("pg", page);

@ -61,7 +61,7 @@ public class Nano extends NanoHTTPD {
if (url.startsWith("/proxy")) return proxy(session);
if (url.startsWith("/tvbus")) return success(LiveConfig.getResp());
if (url.startsWith("/device")) return success(Device.get().toString());
if (url.startsWith("/license")) return success(Util.decode(url.substring(9)));
if (url.startsWith("/license")) return success(new String(Util.decode(url.substring(9), Util.URL_SAFE)));
for (Process process : process) if (process.isRequest(session, url)) return process.doResponse(session, url, files);
return getAssets(url.substring(1));
}

@ -25,25 +25,30 @@ import java.util.Enumeration;
public class Util {
public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36";
public static final int URL_SAFE = Base64.DEFAULT | Base64.URL_SAFE | Base64.NO_WRAP;
public static String base64(String s) {
return base64(s, Base64.URL_SAFE | Base64.NO_PADDING);
return base64(s.getBytes());
}
public static String base64(String s, int flags) {
return base64(s.getBytes(), flags);
public static String base64(byte[] bytes) {
return base64(bytes, Base64.DEFAULT | Base64.NO_WRAP);
}
public static String base64(byte[] bytes) {
return base64(bytes, Base64.DEFAULT);
public static String base64(String s, int flags) {
return base64(s.getBytes(), flags);
}
public static String base64(byte[] bytes, int flags) {
return Base64.encodeToString(bytes, flags);
}
public static String decode(String s) {
return new String(Base64.decode(s, Base64.URL_SAFE | Base64.NO_PADDING));
public static byte[] decode(String s) {
return decode(s, Base64.DEFAULT | Base64.NO_WRAP);
}
public static byte[] decode(String s, int flags) {
return Base64.decode(s, flags);
}
public static String basic(String userInfo) {

@ -1,9 +1,9 @@
package com.fongmi.quickjs.bean;
import android.text.TextUtils;
import android.util.Base64;
import com.github.catvod.utils.Json;
import com.github.catvod.utils.Util;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
@ -57,7 +57,7 @@ public class Res {
}
public ByteArrayInputStream getStream() {
if (getBuffer() == 2) return new ByteArrayInputStream(Base64.decode(getContent(), Base64.DEFAULT));
if (getBuffer() == 2) return new ByteArrayInputStream(Util.decode(getContent()));
return new ByteArrayInputStream(getContent().getBytes());
}
}

@ -1,7 +1,6 @@
package com.fongmi.quickjs.crawler;
import android.content.Context;
import android.util.Base64;
import androidx.media3.common.util.UriUtil;
@ -14,6 +13,7 @@ import com.fongmi.quickjs.utils.JSUtil;
import com.fongmi.quickjs.utils.Module;
import com.github.catvod.utils.Asset;
import com.github.catvod.utils.Json;
import com.github.catvod.utils.Util;
import com.whl.quickjs.wrapper.JSArray;
import com.whl.quickjs.wrapper.JSMethod;
import com.whl.quickjs.wrapper.JSObject;
@ -260,7 +260,7 @@ public class Spider extends com.github.catvod.crawler.Spider {
} else {
String content = o.toString();
if (base64 && content.contains("base64,")) content = content.split("base64,")[1];
return new ByteArrayInputStream(base64 ? Base64.decode(content, Base64.DEFAULT) : content.getBytes());
return new ByteArrayInputStream(base64 ? Util.decode(content) : content.getBytes());
}
}
}

@ -38,7 +38,7 @@ public class Crypto {
SecretKeySpec keySpec = new SecretKeySpec(keyBuf, "AES");
if (iv == null) cipher.init(encrypt ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, keySpec);
else cipher.init(encrypt ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(ivBuf));
byte[] inBuf = inBase64 ? Base64.decode(input.replaceAll("_", "/").replaceAll("-", "+"), Base64.DEFAULT) : input.getBytes("UTF-8");
byte[] inBuf = inBase64 ? Base64.decode(input, Base64.DEFAULT | Base64.URL_SAFE) : input.getBytes("UTF-8");
return outBase64 ? Base64.encodeToString(cipher.doFinal(inBuf), Base64.NO_WRAP) : new String(cipher.doFinal(inBuf), "UTF-8");
} catch (Exception e) {
e.printStackTrace();
@ -51,7 +51,7 @@ public class Crypto {
Key rsaKey = generateKey(pub, key);
int len = getModulusLength(rsaKey);
byte[] outBytes = new byte[0];
byte[] inBytes = inBase64 ? Base64.decode(input.replaceAll("_", "/").replaceAll("-", "+"), Base64.DEFAULT) : input.getBytes("UTF-8");
byte[] inBytes = inBase64 ? Base64.decode(input, Base64.DEFAULT | Base64.URL_SAFE) : input.getBytes("UTF-8");
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(encrypt ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, rsaKey);
int blockLen = encrypt ? len / 8 - 11 : len / 8;

Loading…
Cancel
Save