导航菜单

页面标题

页面副标题

All File Recovery v1.0.2 - O.java 源代码

正在查看: All File Recovery v1.0.2 应用的 O.java JAVA 源代码文件

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


package m2;

import X1.C0587k;
import X1.C0613q;
import a2.C0672D;
import a2.C0679a;
import a2.i0;
import a2.u0;
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.os.Build;
import android.os.Handler;
import android.os.PersistableBundle;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import h2.L1;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import m2.InterfaceC1436A;

public final class O implements InterfaceC1436A {

    public static final String f28461j = "FrameworkMediaDrm";

    @i0
    public static final InterfaceC1436A.g f28462k = new G();

    public static final String f28463l = "cenc";

    public static final String f28464m = "https://x";

    public static final String f28465n = "<LA_URL>https://x</LA_URL>";

    public static final int f28466o = 2;

    public final UUID f28467g;

    public final MediaDrm f28468h;

    public int f28469i;

    @l.U(31)
    public static class a {
        public static boolean a(MediaDrm mediaDrm, String str, int i4) {
            boolean requiresSecureDecoder;
            requiresSecureDecoder = mediaDrm.requiresSecureDecoder(str, i4);
            return requiresSecureDecoder;
        }

        public static void b(MediaDrm mediaDrm, byte[] bArr, L1 l12) {
            LogSessionId logSessionId;
            boolean equals;
            MediaDrm.PlaybackComponent playbackComponent;
            LogSessionId a4 = l12.a();
            logSessionId = LogSessionId.LOG_SESSION_ID_NONE;
            equals = a4.equals(logSessionId);
            if (equals) {
                return;
            }
            playbackComponent = mediaDrm.getPlaybackComponent(bArr);
            playbackComponent.getClass();
            M.a(playbackComponent).setLogSessionId(a4);
        }
    }

    public O(UUID uuid) throws UnsupportedSchemeException {
        uuid.getClass();
        C0679a.b(!C0587k.f9203l2.equals(uuid), "Use C.CLEARKEY_UUID instead");
        this.f28467g = uuid;
        MediaDrm mediaDrm = new MediaDrm(v(uuid));
        this.f28468h = mediaDrm;
        this.f28469i = 1;
        if (C0587k.f9213n2.equals(uuid) && C()) {
            y(mediaDrm);
        }
    }

    public static boolean A(UUID uuid) {
        return MediaDrm.isCryptoSchemeSupported(v(uuid));
    }

    public static boolean C() {
        return "ASUS_Z00AD".equals(Build.MODEL);
    }

    @i0
    public static O D(UUID uuid) throws b0 {
        try {
            return new O(uuid);
        } catch (UnsupportedSchemeException e4) {
            throw new b0(1, e4);
        } catch (Exception e5) {
            throw new b0(2, e5);
        }
    }

    public static void m(O o4, InterfaceC1436A.e eVar, MediaDrm mediaDrm, byte[] bArr, long j4) {
        o4.getClass();
        eVar.a(o4, bArr, j4);
    }

    public static InterfaceC1436A n(UUID uuid) {
        try {
            return D(uuid);
        } catch (b0 unused) {
            C0672D.d(f28461j, "Failed to instantiate a FrameworkMediaDrm for uuid: " + uuid + R5.g.f5776h);
            return new C1465y();
        }
    }

    public static void o(O o4, InterfaceC1436A.d dVar, MediaDrm mediaDrm, byte[] bArr, int i4, int i5, byte[] bArr2) {
        o4.getClass();
        dVar.a(o4, bArr, i4, i5, bArr2);
    }

    public static void p(O o4, InterfaceC1436A.f fVar, MediaDrm mediaDrm, byte[] bArr, List list, boolean z3) {
        o4.getClass();
        ArrayList arrayList = new ArrayList();
        Iterator it = list.iterator();
        while (it.hasNext()) {
            MediaDrm.KeyStatus keyStatus = (MediaDrm.KeyStatus) it.next();
            arrayList.add(new InterfaceC1436A.c(keyStatus.getStatusCode(), keyStatus.getKeyId()));
        }
        fVar.a(o4, bArr, arrayList, z3);
    }

    public static byte[] q(byte[] bArr) {
        a2.V v3 = new a2.V(bArr);
        int w3 = v3.w();
        short z3 = v3.z();
        short z4 = v3.z();
        if (z3 != 1 || z4 != 1) {
            C0672D.h(f28461j, "Unexpected record count or type. Skipping LA_URL workaround.");
            return bArr;
        }
        short z5 = v3.z();
        Charset charset = StandardCharsets.UTF_16LE;
        String J3 = v3.J(z5, charset);
        if (J3.contains("<LA_URL>")) {
            return bArr;
        }
        int indexOf = J3.indexOf("</DATA>");
        if (indexOf == -1) {
            C0672D.n(f28461j, "Could not find the </DATA> tag. Skipping LA_URL workaround.");
        }
        String str = J3.substring(0, indexOf) + f28465n + J3.substring(indexOf);
        int i4 = w3 + 52;
        ByteBuffer allocate = ByteBuffer.allocate(i4);
        allocate.order(ByteOrder.LITTLE_ENDIAN);
        allocate.putInt(i4);
        allocate.putShort(z3);
        allocate.putShort(z4);
        allocate.putShort((short) (str.length() * 2));
        allocate.put(str.getBytes(charset));
        return allocate.array();
    }

    public static byte[] s(UUID uuid, byte[] bArr) {
        return C0587k.f9208m2.equals(uuid) ? C1442a.a(bArr) : bArr;
    }

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

    public static String u(UUID uuid, String str) {
        return (u0.f11388a < 26 && C0587k.f9208m2.equals(uuid) && (X1.W.f8665f.equals(str) || X1.W.f8610G.equals(str))) ? "cenc" : str;
    }

    public static UUID v(UUID uuid) {
        return w(uuid) ? C0587k.f9203l2 : uuid;
    }

    public static boolean w(UUID uuid) {
        return u0.f11388a < 27 && Objects.equals(uuid, C0587k.f9208m2);
    }

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

    public static C0613q.b z(UUID uuid, List<C0613q.b> list) {
        if (!C0587k.f9213n2.equals(uuid)) {
            return list.get(0);
        }
        if (u0.f11388a >= 28 && list.size() > 1) {
            C0613q.b bVar = list.get(0);
            int i4 = 0;
            for (int i5 = 0; i5 < list.size(); i5++) {
                C0613q.b bVar2 = list.get(i5);
                byte[] bArr = bVar2.f9328e;
                bArr.getClass();
                if (Objects.equals(bVar2.f9327d, bVar.f9327d) && Objects.equals(bVar2.f9326c, bVar.f9326c) && b3.r.c(bArr)) {
                    i4 += bArr.length;
                }
            }
            byte[] bArr2 = new byte[i4];
            int i7 = 0;
            for (int i8 = 0; i8 < list.size(); i8++) {
                byte[] bArr3 = list.get(i8).f9328e;
                bArr3.getClass();
                int length = bArr3.length;
                System.arraycopy(bArr3, 0, bArr2, i7, length);
                i7 += length;
            }
            return bVar.b(bArr2);
        }
        for (int i9 = 0; i9 < list.size(); i9++) {
            C0613q.b bVar3 = list.get(i9);
            byte[] bArr4 = bVar3.f9328e;
            bArr4.getClass();
            int g4 = b3.r.g(bArr4);
            int i10 = u0.f11388a;
            if ((i10 < 23 && g4 == 0) || (i10 >= 23 && g4 == 1)) {
                return bVar3;
            }
        }
        return list.get(0);
    }

    @l.U(31)
    public final boolean B() {
        if (!this.f28467g.equals(C0587k.f9213n2)) {
            return this.f28467g.equals(C0587k.f9208m2);
        }
        String propertyString = this.f28468h.getPropertyString("version");
        return (propertyString.startsWith("v5.") || propertyString.startsWith("14.") || propertyString.startsWith("15.") || propertyString.startsWith("16.0")) ? false : true;
    }

    @Override
    @i0
    public synchronized void a() {
        C0679a.i(this.f28469i > 0);
        this.f28469i++;
    }

    @Override
    @Nullable
    @i0
    public PersistableBundle b() {
        PersistableBundle metrics;
        if (u0.f11388a < 28) {
            return null;
        }
        metrics = this.f28468h.getMetrics();
        return metrics;
    }

    @Override
    @i0
    @l.U(23)
    public void c(@Nullable final InterfaceC1436A.e eVar) {
        if (u0.f11388a < 23) {
            throw new UnsupportedOperationException();
        }
        this.f28468h.setOnExpirationUpdateListener(eVar == null ? null : new MediaDrm.OnExpirationUpdateListener() {
            @Override
            public final void onExpirationUpdate(MediaDrm mediaDrm, byte[] bArr, long j4) {
                O.m(O.this, eVar, mediaDrm, bArr, j4);
            }
        }, (Handler) null);
    }

    @Override
    @i0
    public void closeSession(byte[] bArr) {
        this.f28468h.closeSession(bArr);
    }

    @Override
    @i0
    @l.U(29)
    public List<byte[]> d() {
        List<byte[]> offlineLicenseKeySetIds;
        if (u0.f11388a < 29) {
            throw new UnsupportedOperationException();
        }
        offlineLicenseKeySetIds = this.f28468h.getOfflineLicenseKeySetIds();
        return offlineLicenseKeySetIds;
    }

    @Override
    @i0
    public void e(byte[] bArr, L1 l12) {
        if (u0.f11388a >= 31) {
            try {
                a.b(this.f28468h, bArr, l12);
            } catch (UnsupportedOperationException unused) {
                C0672D.n(f28461j, "setLogSessionId failed.");
            }
        }
    }

    @Override
    @i0
    public void f(@Nullable final InterfaceC1436A.d dVar) {
        this.f28468h.setOnEventListener(dVar == null ? null : new MediaDrm.OnEventListener() {
            @Override
            public final void onEvent(MediaDrm mediaDrm, byte[] bArr, int i4, int i5, byte[] bArr2) {
                O.o(O.this, dVar, mediaDrm, bArr, i4, i5, bArr2);
            }
        });
    }

    @Override
    @i0
    public int g() {
        return 2;
    }

    @Override
    @i0
    public byte[] getPropertyByteArray(String str) {
        return this.f28468h.getPropertyByteArray(str);
    }

    @Override
    @i0
    public String getPropertyString(String str) {
        return this.f28468h.getPropertyString(str);
    }

    @Override
    @i0
    public InterfaceC1436A.h getProvisionRequest() {
        MediaDrm.ProvisionRequest provisionRequest = this.f28468h.getProvisionRequest();
        return new InterfaceC1436A.h(provisionRequest.getData(), provisionRequest.getDefaultUrl());
    }

    @Override
    @i0
    @l.U(29)
    public void h(byte[] bArr) {
        if (u0.f11388a < 29) {
            throw new UnsupportedOperationException();
        }
        this.f28468h.removeOfflineLicense(bArr);
    }

    @Override
    @i0
    @l.U(23)
    public void i(@Nullable final InterfaceC1436A.f fVar) {
        if (u0.f11388a < 23) {
            throw new UnsupportedOperationException();
        }
        this.f28468h.setOnKeyStatusChangeListener(fVar == null ? null : new MediaDrm.OnKeyStatusChangeListener() {
            @Override
            public final void onKeyStatusChange(MediaDrm mediaDrm, byte[] bArr, List list, boolean z3) {
                O.p(O.this, fVar, mediaDrm, bArr, list, z3);
            }
        }, (Handler) null);
    }

    @Override
    @i0
    public boolean k(byte[] bArr, String str) {
        MediaCrypto mediaCrypto;
        int securityLevel;
        boolean requiresSecureDecoder;
        if (u0.f11388a >= 31 && B()) {
            MediaDrm mediaDrm = this.f28468h;
            securityLevel = mediaDrm.getSecurityLevel(bArr);
            requiresSecureDecoder = mediaDrm.requiresSecureDecoder(str, securityLevel);
            return requiresSecureDecoder;
        }
        MediaCrypto mediaCrypto2 = null;
        try {
            try {
                mediaCrypto = new MediaCrypto(v(this.f28467g), bArr);
            } catch (Throwable th) {
                th = th;
            }
        } catch (MediaCryptoException unused) {
        }
        try {
            boolean requiresSecureDecoderComponent = mediaCrypto.requiresSecureDecoderComponent(str);
            mediaCrypto.release();
            return requiresSecureDecoderComponent;
        } catch (MediaCryptoException unused2) {
            mediaCrypto2 = mediaCrypto;
            boolean z3 = !this.f28467g.equals(C0587k.f9208m2);
            if (mediaCrypto2 != null) {
                mediaCrypto2.release();
            }
            return z3;
        } catch (Throwable th2) {
            th = th2;
            mediaCrypto2 = mediaCrypto;
            if (mediaCrypto2 != null) {
                mediaCrypto2.release();
            }
            throw th;
        }
    }

    @Override
    @i0
    @SuppressLint({"WrongConstant"})
    public InterfaceC1436A.b l(byte[] bArr, @Nullable List<C0613q.b> list, int i4, @Nullable HashMap<String, String> hashMap) throws NotProvisionedException {
        C0613q.b bVar;
        byte[] bArr2;
        String str;
        if (list != null) {
            bVar = z(this.f28467g, list);
            UUID uuid = this.f28467g;
            byte[] bArr3 = bVar.f9328e;
            bArr3.getClass();
            bArr2 = t(uuid, bArr3);
            str = u(this.f28467g, bVar.f9327d);
        } else {
            bVar = null;
            bArr2 = null;
            str = null;
        }
        MediaDrm.KeyRequest keyRequest = this.f28468h.getKeyRequest(bArr, bArr2, str, i4, hashMap);
        byte[] s3 = s(this.f28467g, keyRequest.getData());
        String r3 = r(keyRequest.getDefaultUrl());
        if (TextUtils.isEmpty(r3) && bVar != null && !TextUtils.isEmpty(bVar.f9326c)) {
            r3 = bVar.f9326c;
        }
        return new InterfaceC1436A.b(s3, r3, u0.f11388a >= 23 ? keyRequest.getRequestType() : Integer.MIN_VALUE);
    }

    @Override
    @i0
    public byte[] openSession() throws MediaDrmException {
        return this.f28468h.openSession();
    }

    @Override
    @Nullable
    @i0
    public byte[] provideKeyResponse(byte[] bArr, byte[] bArr2) throws NotProvisionedException, DeniedByServerException {
        if (C0587k.f9208m2.equals(this.f28467g)) {
            bArr2 = C1442a.b(bArr2);
        }
        return this.f28468h.provideKeyResponse(bArr, bArr2);
    }

    @Override
    @i0
    public void provideProvisionResponse(byte[] bArr) throws DeniedByServerException {
        this.f28468h.provideProvisionResponse(bArr);
    }

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

    public final String r(String str) {
        if (f28465n.equals(str)) {
            return "";
        }
        if (u0.f11388a >= 33 && "https://default.url".equals(str)) {
            String propertyString = this.f28468h.getPropertyString("version");
            if (Objects.equals(propertyString, "1.2") || Objects.equals(propertyString, "aidl-1")) {
                return "";
            }
        }
        return str;
    }

    @Override
    @i0
    public synchronized void release() {
        int i4 = this.f28469i - 1;
        this.f28469i = i4;
        if (i4 == 0) {
            this.f28468h.release();
        }
    }

    @Override
    @i0
    public void restoreKeys(byte[] bArr, byte[] bArr2) {
        this.f28468h.restoreKeys(bArr, bArr2);
    }

    @Override
    @i0
    public void setPropertyByteArray(String str, byte[] bArr) {
        this.f28468h.setPropertyByteArray(str, bArr);
    }

    @Override
    @i0
    public void setPropertyString(String str, String str2) {
        this.f28468h.setPropertyString(str, str2);
    }

    @Override
    @i0
    public C1437B j(byte[] bArr) throws MediaCryptoException {
        return new C1437B(v(this.f28467g), bArr, false);
    }
}