导航菜单

页面标题

页面副标题

万能钥匙 v1.1.23 - j0.java 源代码

正在查看: 万能钥匙 v1.1.23 应用的 j0.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package f4;

import android.annotation.SuppressLint;
import android.media.DeniedByServerException;
import android.media.MediaCrypto;
import android.media.MediaCryptoException;
import android.media.MediaDrm;
import android.media.MediaDrmException;
import android.media.NotProvisionedException;
import android.media.UnsupportedSchemeException;
import android.media.metrics.LogSessionId;
import android.text.TextUtils;
import androidx.annotation.DoNotInline;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.media3.common.DrmInitData;
import b4.a2;
import cn.fly.verify.BuildConfig;
import f4.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;

public final class j0 implements f0 {

    @t3.h0
    public static final f0.c f12807d = new f0.c() {
        @Override
        public final f0 acquireExoMediaDrm(UUID uuid) {
            return j0.c(uuid);
        }
    };

    public final UUID f12808a;

    public final MediaDrm f12809b;

    public int f12810c;

    @RequiresApi(31)
    public static class a {
        @DoNotInline
        public static boolean a(MediaDrm mediaDrm, String str) {
            return mediaDrm.requiresSecureDecoder(str);
        }

        @DoNotInline
        public static void b(MediaDrm mediaDrm, byte[] bArr, a2 a2Var) {
            LogSessionId a10 = a2Var.a();
            if (a10.equals(LogSessionId.LOG_SESSION_ID_NONE)) {
                return;
            }
            ((MediaDrm.PlaybackComponent) t3.a.f(mediaDrm.getPlaybackComponent(bArr))).setLogSessionId(a10);
        }
    }

    public j0(UUID uuid) throws UnsupportedSchemeException {
        t3.a.f(uuid);
        t3.a.b(!q3.i.f16866b.equals(uuid), "Use C.CLEARKEY_UUID instead");
        this.f12808a = uuid;
        MediaDrm mediaDrm = new MediaDrm(j(uuid));
        this.f12809b = mediaDrm;
        this.f12810c = 1;
        if (q3.i.f16868d.equals(uuid) && p()) {
            l(mediaDrm);
        }
    }

    public static f0 c(UUID uuid) {
        try {
            return q(uuid);
        } catch (o0 unused) {
            t3.s.d("FrameworkMediaDrm", "Failed to instantiate a FrameworkMediaDrm for uuid: " + uuid + ".");
            return new c0();
        }
    }

    public static void d(j0 j0Var, f0.b bVar, MediaDrm mediaDrm, byte[] bArr, int i10, int i11, byte[] bArr2) {
        j0Var.getClass();
        bVar.a(j0Var, bArr, i10, i11, bArr2);
    }

    public static byte[] e(byte[] bArr) {
        t3.z zVar = new t3.z(bArr);
        int u10 = zVar.u();
        short w10 = zVar.w();
        short w11 = zVar.w();
        if (w10 != 1 || w11 != 1) {
            t3.s.g("FrameworkMediaDrm", "Unexpected record count or type. Skipping LA_URL workaround.");
            return bArr;
        }
        short w12 = zVar.w();
        Charset charset = qk.d.e;
        String F = zVar.F(w12, charset);
        if (F.contains("<LA_URL>")) {
            return bArr;
        }
        int indexOf = F.indexOf("</DATA>");
        if (indexOf == -1) {
            t3.s.i("FrameworkMediaDrm", "Could not find the </DATA> tag. Skipping LA_URL workaround.");
        }
        String str = F.substring(0, indexOf) + "<LA_URL>https://x</LA_URL>" + F.substring(indexOf);
        int i10 = u10 + 52;
        ByteBuffer allocate = ByteBuffer.allocate(i10);
        allocate.order(ByteOrder.LITTLE_ENDIAN);
        allocate.putInt(i10);
        allocate.putShort(w10);
        allocate.putShort(w11);
        allocate.putShort((short) (str.length() * 2));
        allocate.put(str.getBytes(charset));
        return allocate.array();
    }

    public static byte[] g(UUID uuid, byte[] bArr) {
        return q3.i.f16867c.equals(uuid) ? f4.a.a(bArr) : bArr;
    }

    public static byte[] h(java.util.UUID r3, byte[] r4) {
        throw new UnsupportedOperationException("Method not decompiled: f4.j0.h(java.util.UUID, byte[]):byte[]");
    }

    public static String i(UUID uuid, String str) {
        return (t3.n0.f18220a < 26 && q3.i.f16867c.equals(uuid) && ("video/mp4".equals(str) || "audio/mp4".equals(str))) ? "cenc" : str;
    }

    public static UUID j(UUID uuid) {
        return (t3.n0.f18220a >= 27 || !q3.i.f16867c.equals(uuid)) ? uuid : q3.i.f16866b;
    }

    public static void l(MediaDrm mediaDrm) {
        mediaDrm.setPropertyString("securityLevel", "L3");
    }

    public static DrmInitData.SchemeData n(UUID uuid, List<DrmInitData.SchemeData> list) {
        if (!q3.i.f16868d.equals(uuid)) {
            return list.get(0);
        }
        if (t3.n0.f18220a >= 28 && list.size() > 1) {
            DrmInitData.SchemeData schemeData = list.get(0);
            int i10 = 0;
            for (int i11 = 0; i11 < list.size(); i11++) {
                DrmInitData.SchemeData schemeData2 = list.get(i11);
                byte[] bArr = (byte[]) t3.a.f(schemeData2.f3211e);
                if (t3.n0.f(schemeData2.f3210d, schemeData.f3210d) && t3.n0.f(schemeData2.f3209c, schemeData.f3209c) && p5.o.c(bArr)) {
                    i10 += bArr.length;
                }
            }
            byte[] bArr2 = new byte[i10];
            int i12 = 0;
            for (int i13 = 0; i13 < list.size(); i13++) {
                byte[] bArr3 = (byte[]) t3.a.f(list.get(i13).f3211e);
                int length = bArr3.length;
                System.arraycopy(bArr3, 0, bArr2, i12, length);
                i12 += length;
            }
            return schemeData.b(bArr2);
        }
        for (int i14 = 0; i14 < list.size(); i14++) {
            DrmInitData.SchemeData schemeData3 = list.get(i14);
            int g10 = p5.o.g((byte[]) t3.a.f(schemeData3.f3211e));
            int i15 = t3.n0.f18220a;
            if ((i15 < 23 && g10 == 0) || (i15 >= 23 && g10 == 1)) {
                return schemeData3;
            }
        }
        return list.get(0);
    }

    public static boolean p() {
        return "ASUS_Z00AD".equals(t3.n0.f18223d);
    }

    @t3.h0
    public static j0 q(UUID uuid) throws o0 {
        try {
            return new j0(uuid);
        } catch (UnsupportedSchemeException e10) {
            throw new o0(1, e10);
        } catch (Exception e11) {
            throw new o0(2, e11);
        }
    }

    @Override
    @t3.h0
    public void a(@Nullable final f0.b bVar) {
        this.f12809b.setOnEventListener(bVar == null ? null : new MediaDrm.OnEventListener() {
            @Override
            public final void onEvent(MediaDrm mediaDrm, byte[] bArr, int i10, int i11, byte[] bArr2) {
                j0.d(j0.this, bVar, mediaDrm, bArr, i10, i11, bArr2);
            }
        });
    }

    @Override
    @t3.h0
    public void b(byte[] bArr, a2 a2Var) {
        if (t3.n0.f18220a >= 31) {
            try {
                a.b(this.f12809b, bArr, a2Var);
            } catch (UnsupportedOperationException unused) {
                t3.s.i("FrameworkMediaDrm", "setLogSessionId failed.");
            }
        }
    }

    @Override
    @t3.h0
    public void closeSession(byte[] bArr) {
        this.f12809b.closeSession(bArr);
    }

    public final String f(String str) {
        if ("<LA_URL>https://x</LA_URL>".equals(str)) {
            return BuildConfig.FLAVOR;
        }
        if (t3.n0.f18220a >= 33 && "https://default.url".equals(str)) {
            String m10 = m("version");
            if (Objects.equals(m10, "1.2") || Objects.equals(m10, "aidl-1")) {
                return BuildConfig.FLAVOR;
            }
        }
        return str;
    }

    @Override
    @t3.h0
    public int getCryptoType() {
        return 2;
    }

    @Override
    @t3.h0
    @SuppressLint({"WrongConstant"})
    public f0.a getKeyRequest(byte[] bArr, @Nullable List<DrmInitData.SchemeData> list, int i10, @Nullable HashMap<String, String> hashMap) throws NotProvisionedException {
        DrmInitData.SchemeData schemeData;
        byte[] bArr2;
        String str;
        if (list != null) {
            schemeData = n(this.f12808a, list);
            bArr2 = h(this.f12808a, (byte[]) t3.a.f(schemeData.f3211e));
            str = i(this.f12808a, schemeData.f3210d);
        } else {
            schemeData = null;
            bArr2 = null;
            str = null;
        }
        MediaDrm.KeyRequest keyRequest = this.f12809b.getKeyRequest(bArr, bArr2, str, i10, hashMap);
        byte[] g10 = g(this.f12808a, keyRequest.getData());
        String f10 = f(keyRequest.getDefaultUrl());
        if (TextUtils.isEmpty(f10) && schemeData != null && !TextUtils.isEmpty(schemeData.f3209c)) {
            f10 = schemeData.f3209c;
        }
        return new f0.a(g10, f10, t3.n0.f18220a >= 23 ? keyRequest.getRequestType() : Integer.MIN_VALUE);
    }

    @Override
    @t3.h0
    public f0.d getProvisionRequest() {
        MediaDrm.ProvisionRequest provisionRequest = this.f12809b.getProvisionRequest();
        return new f0.d(provisionRequest.getData(), provisionRequest.getDefaultUrl());
    }

    @Override
    @t3.h0
    public g0 createCryptoConfig(byte[] bArr) throws MediaCryptoException {
        return new g0(j(this.f12808a), bArr, s());
    }

    @t3.h0
    public String m(String str) {
        return this.f12809b.getPropertyString(str);
    }

    @RequiresApi(31)
    public final boolean o() {
        if (!this.f12808a.equals(q3.i.f16868d)) {
            return this.f12808a.equals(q3.i.f16867c);
        }
        String m10 = m("version");
        return (m10.startsWith("v5.") || m10.startsWith("14.") || m10.startsWith("15.") || m10.startsWith("16.0")) ? false : true;
    }

    @Override
    @t3.h0
    public byte[] openSession() throws MediaDrmException {
        return this.f12809b.openSession();
    }

    @Override
    @Nullable
    @t3.h0
    public byte[] provideKeyResponse(byte[] bArr, byte[] bArr2) throws NotProvisionedException, DeniedByServerException {
        if (q3.i.f16867c.equals(this.f12808a)) {
            bArr2 = f4.a.b(bArr2);
        }
        return this.f12809b.provideKeyResponse(bArr, bArr2);
    }

    @Override
    @t3.h0
    public void provideProvisionResponse(byte[] bArr) throws DeniedByServerException {
        this.f12809b.provideProvisionResponse(bArr);
    }

    @Override
    @t3.h0
    public Map<String, String> queryKeyStatus(byte[] bArr) {
        return this.f12809b.queryKeyStatus(bArr);
    }

    @t3.h0
    public void r(String str, String str2) {
        this.f12809b.setPropertyString(str, str2);
    }

    @Override
    @t3.h0
    public synchronized void release() {
        int i10 = this.f12810c - 1;
        this.f12810c = i10;
        if (i10 == 0) {
            this.f12809b.release();
        }
    }

    @Override
    @t3.h0
    public boolean requiresSecureDecoder(byte[] bArr, String str) {
        boolean z;
        if (t3.n0.f18220a < 31 || !o()) {
            MediaCrypto mediaCrypto = null;
            try {
                MediaCrypto mediaCrypto2 = new MediaCrypto(this.f12808a, bArr);
                try {
                    z = mediaCrypto2.requiresSecureDecoderComponent(str);
                    mediaCrypto2.release();
                } catch (MediaCryptoException unused) {
                    mediaCrypto = mediaCrypto2;
                    if (mediaCrypto != null) {
                        mediaCrypto.release();
                    }
                    z = true;
                    if (z) {
                    }
                } catch (Throwable th) {
                    th = th;
                    mediaCrypto = mediaCrypto2;
                    if (mediaCrypto != null) {
                        mediaCrypto.release();
                    }
                    throw th;
                }
            } catch (MediaCryptoException unused2) {
            } catch (Throwable th2) {
                th = th2;
            }
        } else {
            z = a.a(this.f12809b, str);
        }
        return (z || s()) ? false : true;
    }

    @Override
    @t3.h0
    public void restoreKeys(byte[] bArr, byte[] bArr2) {
        this.f12809b.restoreKeys(bArr, bArr2);
    }

    public final boolean s() {
        return t3.n0.f18220a < 21 && q3.i.f16868d.equals(this.f12808a) && "L3".equals(m("securityLevel"));
    }
}