正在查看: 度娘 v1.0.1 应用的 m0.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 度娘 v1.0.1 应用的 m0.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package d1;
import android.annotation.SuppressLint;
import android.media.MediaCrypto;
import android.media.MediaCryptoException;
import android.media.MediaDrm;
import android.media.MediaDrm$PlaybackComponent;
import android.media.UnsupportedSchemeException;
import android.media.metrics.LogSessionId;
import android.text.TextUtils;
import androidx.recyclerview.widget.RecyclerView;
import d1.f0;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import r0.l;
import z0.u1;
public final class m0 implements f0 {
public static final f0.c f7142d = new f0.c() {
@Override
public final f0 a(UUID uuid) {
f0 A;
A = m0.A(uuid);
return A;
}
};
private final UUID f7143a;
private final MediaDrm f7144b;
private int f7145c;
private static class a {
public static boolean a(MediaDrm mediaDrm, String str) {
boolean requiresSecureDecoder;
requiresSecureDecoder = mediaDrm.requiresSecureDecoder(str);
return requiresSecureDecoder;
}
public static void b(MediaDrm mediaDrm, byte[] bArr, u1 u1Var) {
MediaDrm$PlaybackComponent playbackComponent;
LogSessionId a10 = u1Var.a();
if (a10.equals(LogSessionId.LOG_SESSION_ID_NONE)) {
return;
}
playbackComponent = mediaDrm.getPlaybackComponent(bArr);
((MediaDrm$PlaybackComponent) u0.a.e(playbackComponent)).setLogSessionId(a10);
}
}
private m0(UUID uuid) {
u0.a.e(uuid);
u0.a.b(!r0.f.f13341b.equals(uuid), "Use C.CLEARKEY_UUID instead");
this.f7143a = uuid;
MediaDrm mediaDrm = new MediaDrm(u(uuid));
this.f7144b = mediaDrm;
this.f7145c = 1;
if (r0.f.f13343d.equals(uuid) && B()) {
w(mediaDrm);
}
}
public static f0 A(UUID uuid) {
try {
return C(uuid);
} catch (r0 unused) {
u0.o.c("FrameworkMediaDrm", "Failed to instantiate a FrameworkMediaDrm for uuid: " + uuid + ".");
return new c0();
}
}
private static boolean B() {
return "ASUS_Z00AD".equals(u0.j0.f14956d);
}
public static m0 C(UUID uuid) {
try {
return new m0(uuid);
} catch (UnsupportedSchemeException e10) {
throw new r0(1, e10);
} catch (Exception e11) {
throw new r0(2, e11);
}
}
private boolean D() {
return u0.j0.f14953a < 21 && r0.f.f13343d.equals(this.f7143a) && "L3".equals(x("securityLevel"));
}
private static byte[] p(byte[] bArr) {
u0.x xVar = new u0.x(bArr);
int t10 = xVar.t();
short v10 = xVar.v();
short v11 = xVar.v();
if (v10 != 1 || v11 != 1) {
u0.o.f("FrameworkMediaDrm", "Unexpected record count or type. Skipping LA_URL workaround.");
return bArr;
}
short v12 = xVar.v();
Charset charset = x6.d.f16755e;
String E = xVar.E(v12, charset);
if (E.contains("<LA_URL>")) {
return bArr;
}
int indexOf = E.indexOf("</DATA>");
if (indexOf == -1) {
u0.o.h("FrameworkMediaDrm", "Could not find the </DATA> tag. Skipping LA_URL workaround.");
}
String str = E.substring(0, indexOf) + "<LA_URL>https://x</LA_URL>" + E.substring(indexOf);
int i10 = t10 + 52;
ByteBuffer allocate = ByteBuffer.allocate(i10);
allocate.order(ByteOrder.LITTLE_ENDIAN);
allocate.putInt(i10);
allocate.putShort(v10);
allocate.putShort(v11);
allocate.putShort((short) (str.length() * 2));
allocate.put(str.getBytes(charset));
return allocate.array();
}
private String q(String str) {
if ("<LA_URL>https://x</LA_URL>".equals(str)) {
return "";
}
if (u0.j0.f14953a >= 33 && "https://default.url".equals(str)) {
String x10 = x("version");
if (Objects.equals(x10, "1.2") || Objects.equals(x10, "aidl-1")) {
return "";
}
}
return str;
}
private static byte[] r(UUID uuid, byte[] bArr) {
return r0.f.f13342c.equals(uuid) ? d1.a.a(bArr) : bArr;
}
private static byte[] s(java.util.UUID r3, byte[] r4) {
throw new UnsupportedOperationException("Method not decompiled: d1.m0.s(java.util.UUID, byte[]):byte[]");
}
private static String t(UUID uuid, String str) {
return (u0.j0.f14953a < 26 && r0.f.f13342c.equals(uuid) && ("video/mp4".equals(str) || "audio/mp4".equals(str))) ? "cenc" : str;
}
private static UUID u(UUID uuid) {
return (u0.j0.f14953a >= 27 || !r0.f.f13342c.equals(uuid)) ? uuid : r0.f.f13341b;
}
private static void w(MediaDrm mediaDrm) {
mediaDrm.setPropertyString("securityLevel", "L3");
}
private static l.b y(UUID uuid, List<l.b> list) {
boolean z10;
if (r0.f.f13343d.equals(uuid)) {
if (u0.j0.f14953a >= 28 && list.size() > 1) {
l.b bVar = list.get(0);
int i10 = 0;
for (int i11 = 0; i11 < list.size(); i11++) {
l.b bVar2 = list.get(i11);
byte[] bArr = (byte[]) u0.a.e(bVar2.f13450l);
if (!u0.j0.c(bVar2.f13449k, bVar.f13449k) || !u0.j0.c(bVar2.f13448j, bVar.f13448j) || !q2.o.c(bArr)) {
z10 = false;
break;
}
i10 += bArr.length;
}
z10 = true;
if (z10) {
byte[] bArr2 = new byte[i10];
int i12 = 0;
for (int i13 = 0; i13 < list.size(); i13++) {
byte[] bArr3 = (byte[]) u0.a.e(list.get(i13).f13450l);
int length = bArr3.length;
System.arraycopy(bArr3, 0, bArr2, i12, length);
i12 += length;
}
return bVar.c(bArr2);
}
}
for (int i14 = 0; i14 < list.size(); i14++) {
l.b bVar3 = list.get(i14);
int g10 = q2.o.g((byte[]) u0.a.e(bVar3.f13450l));
int i15 = u0.j0.f14953a;
if (i15 < 23 && g10 == 0) {
return bVar3;
}
if (i15 >= 23 && g10 == 1) {
return bVar3;
}
}
}
return list.get(0);
}
public void z(f0.b bVar, MediaDrm mediaDrm, byte[] bArr, int i10, int i11, byte[] bArr2) {
bVar.a(this, bArr, i10, i11, bArr2);
}
@Override
public Map<String, String> a(byte[] bArr) {
return this.f7144b.queryKeyStatus(bArr);
}
@Override
public f0.d b() {
MediaDrm.ProvisionRequest provisionRequest = this.f7144b.getProvisionRequest();
return new f0.d(provisionRequest.getData(), provisionRequest.getDefaultUrl());
}
@Override
public byte[] d() {
return this.f7144b.openSession();
}
@Override
public boolean e(byte[] bArr, String str) {
boolean z10;
MediaCrypto mediaCrypto;
if (u0.j0.f14953a >= 31) {
z10 = a.a(this.f7144b, str);
} else {
MediaCrypto mediaCrypto2 = null;
try {
mediaCrypto = new MediaCrypto(this.f7143a, bArr);
} catch (MediaCryptoException unused) {
} catch (Throwable th) {
th = th;
}
try {
z10 = mediaCrypto.requiresSecureDecoderComponent(str);
mediaCrypto.release();
} catch (MediaCryptoException unused2) {
mediaCrypto2 = mediaCrypto;
if (mediaCrypto2 != null) {
mediaCrypto2.release();
}
z10 = true;
if (z10) {
}
} catch (Throwable th2) {
th = th2;
mediaCrypto2 = mediaCrypto;
if (mediaCrypto2 != null) {
mediaCrypto2.release();
}
throw th;
}
}
return (z10 || D()) ? false : true;
}
@Override
public void f(byte[] bArr, byte[] bArr2) {
this.f7144b.restoreKeys(bArr, bArr2);
}
@Override
public void g(byte[] bArr) {
this.f7144b.closeSession(bArr);
}
@Override
public byte[] h(byte[] bArr, byte[] bArr2) {
if (r0.f.f13342c.equals(this.f7143a)) {
bArr2 = d1.a.b(bArr2);
}
return this.f7144b.provideKeyResponse(bArr, bArr2);
}
@Override
public void i(byte[] bArr) {
this.f7144b.provideProvisionResponse(bArr);
}
@Override
@SuppressLint({"WrongConstant"})
public f0.a j(byte[] bArr, List<l.b> list, int i10, HashMap<String, String> hashMap) {
byte[] bArr2;
String str;
l.b bVar = null;
if (list != null) {
bVar = y(this.f7143a, list);
bArr2 = s(this.f7143a, (byte[]) u0.a.e(bVar.f13450l));
str = t(this.f7143a, bVar.f13449k);
} else {
bArr2 = null;
str = null;
}
MediaDrm.KeyRequest keyRequest = this.f7144b.getKeyRequest(bArr, bArr2, str, i10, hashMap);
byte[] r10 = r(this.f7143a, keyRequest.getData());
String q10 = q(keyRequest.getDefaultUrl());
if (TextUtils.isEmpty(q10) && bVar != null && !TextUtils.isEmpty(bVar.f13448j)) {
q10 = bVar.f13448j;
}
return new f0.a(r10, q10, u0.j0.f14953a >= 23 ? keyRequest.getRequestType() : RecyclerView.UNDEFINED_DURATION);
}
@Override
public void k(final f0.b bVar) {
this.f7144b.setOnEventListener(bVar == null ? null : new MediaDrm.OnEventListener() {
@Override
public final void onEvent(MediaDrm mediaDrm, byte[] bArr, int i10, int i11, byte[] bArr2) {
m0.this.z(bVar, mediaDrm, bArr, i10, i11, bArr2);
}
});
}
@Override
public void l(byte[] bArr, u1 u1Var) {
if (u0.j0.f14953a >= 31) {
try {
a.b(this.f7144b, bArr, u1Var);
} catch (UnsupportedOperationException unused) {
u0.o.h("FrameworkMediaDrm", "setLogSessionId failed.");
}
}
}
@Override
public int m() {
return 2;
}
@Override
public synchronized void release() {
int i10 = this.f7145c - 1;
this.f7145c = i10;
if (i10 == 0) {
this.f7144b.release();
}
}
@Override
public g0 c(byte[] bArr) {
return new g0(u(this.f7143a), bArr, D());
}
public String x(String str) {
return this.f7144b.getPropertyString(str);
}
}