CrackMe.apk
Download file
package com.google.android.exoplayer2.extractor.ts;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.util.ParsableByteArray;
public final class TsUtil {
public static boolean isStartOfTsPacket(byte[] bArr, int i, int i2, int i3) {
int i4 = 0;
for (int i5 = -4; i5 <= 4; i5++) {
int i6 = (i5 * TsExtractor.TS_PACKET_SIZE) + i3;
if (i6 < i || i6 >= i2 || bArr[i6] != 71) {
i4 = 0;
} else {
i4++;
if (i4 == 5) {
return true;
}
}
}
return false;
}
public static int findSyncBytePosition(byte[] bArr, int i, int i2) {
while (i < i2 && bArr[i] != 71) {
i++;
}
return i;
}
public static long readPcrFromPacket(ParsableByteArray parsableByteArray, int i, int i2) {
parsableByteArray.setPosition(i);
if (parsableByteArray.bytesLeft() < 5) {
return C.TIME_UNSET;
}
int readInt = parsableByteArray.readInt();
if ((8388608 & readInt) != 0 || ((2096896 & readInt) >> 8) != i2) {
return C.TIME_UNSET;
}
boolean z = true;
if (((readInt & 32) != 0) && parsableByteArray.readUnsignedByte() >= 7 && parsableByteArray.bytesLeft() >= 7) {
if ((parsableByteArray.readUnsignedByte() & 16) != 16) {
z = false;
}
if (z) {
byte[] bArr = new byte[6];
parsableByteArray.readBytes(bArr, 0, 6);
return readPcrValueFromPcrBytes(bArr);
}
}
return C.TIME_UNSET;
}
private static long readPcrValueFromPcrBytes(byte[] bArr) {
return ((((long) bArr[0]) & 255) << 25) | ((((long) bArr[1]) & 255) << 17) | ((((long) bArr[2]) & 255) << 9) | ((((long) bArr[3]) & 255) << 1) | ((255 & ((long) bArr[4])) >> 7);
}
private TsUtil() {
}
}
Download file