Primer paso de la investigacion. Se aportan el .apk, las carpetas con el apk extraido y el apk descompilado. El archivo API_DOCUMENTATION.md es un archivo donde se anotaran los descubrimientos del funcionamiento de la API, y los .py son scripts para probar la funcionalidad de la API con los métodos que vayamos encontrando. Finalmente, los archivos .js son scripts de Frida para extraer informacion de la APP durante la ejecucion.

This commit is contained in:
2025-12-04 13:59:54 +01:00
parent f2fd1c3bf5
commit e0133d2ca2
10432 changed files with 1019085 additions and 1 deletions

View File

@@ -0,0 +1,296 @@
package kotlin.random;
import C.w;
import com.google.firebase.messaging.Constants;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import java.io.Serializable;
import kotlin.Metadata;
import kotlin.SinceKotlin;
import kotlin.internal.PlatformImplementationsKt;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlin.ranges.IntRange;
@SinceKotlin(version = "1.3")
@Metadata(d1 = {"\u0000:\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u0012\n\u0002\b\u0005\n\u0002\u0010\u0006\n\u0002\b\u0003\n\u0002\u0010\u0007\n\u0002\b\u0002\n\u0002\u0010\t\n\u0002\b\u0002\b'\u0018\u0000 \u00172\u00020\u0001:\u0001\u0017B\u0005¢\u0006\u0002\u0010\u0002J\u0010\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u0004H&J\b\u0010\u0006\u001a\u00020\u0007H\u0016J\u0010\u0010\b\u001a\u00020\t2\u0006\u0010\n\u001a\u00020\tH\u0016J$\u0010\b\u001a\u00020\t2\u0006\u0010\n\u001a\u00020\t2\b\b\u0002\u0010\u000b\u001a\u00020\u00042\b\b\u0002\u0010\f\u001a\u00020\u0004H\u0016J\u0010\u0010\b\u001a\u00020\t2\u0006\u0010\r\u001a\u00020\u0004H\u0016J\b\u0010\u000e\u001a\u00020\u000fH\u0016J\u0010\u0010\u000e\u001a\u00020\u000f2\u0006\u0010\u0010\u001a\u00020\u000fH\u0016J\u0018\u0010\u000e\u001a\u00020\u000f2\u0006\u0010\u0011\u001a\u00020\u000f2\u0006\u0010\u0010\u001a\u00020\u000fH\u0016J\b\u0010\u0012\u001a\u00020\u0013H\u0016J\b\u0010\u0014\u001a\u00020\u0004H\u0016J\u0010\u0010\u0014\u001a\u00020\u00042\u0006\u0010\u0010\u001a\u00020\u0004H\u0016J\u0018\u0010\u0014\u001a\u00020\u00042\u0006\u0010\u0011\u001a\u00020\u00042\u0006\u0010\u0010\u001a\u00020\u0004H\u0016J\b\u0010\u0015\u001a\u00020\u0016H\u0016J\u0010\u0010\u0015\u001a\u00020\u00162\u0006\u0010\u0010\u001a\u00020\u0016H\u0016J\u0018\u0010\u0015\u001a\u00020\u00162\u0006\u0010\u0011\u001a\u00020\u00162\u0006\u0010\u0010\u001a\u00020\u0016H\u0016¨\u0006\u0018"}, d2 = {"Lkotlin/random/Random;", "", "()V", "nextBits", "", "bitCount", "nextBoolean", "", "nextBytes", "", "array", "fromIndex", "toIndex", "size", "nextDouble", "", "until", Constants.MessagePayloadKeys.FROM, "nextFloat", "", "nextInt", "nextLong", "", "Default", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
@SourceDebugExtension({"SMAP\nRandom.kt\nKotlin\n*S Kotlin\n*F\n+ 1 Random.kt\nkotlin/random/Random\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,383:1\n1#2:384\n*E\n"})
/* loaded from: classes3.dex */
public abstract class Random {
/* renamed from: Default, reason: from kotlin metadata */
public static final Companion INSTANCE = new Companion(null);
private static final Random defaultRandom = PlatformImplementationsKt.IMPLEMENTATIONS.defaultPlatformRandom();
@Metadata(d1 = {"\u0000H\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u0012\n\u0002\b\u0005\n\u0002\u0010\u0006\n\u0002\b\u0003\n\u0002\u0010\u0007\n\u0002\b\u0002\n\u0002\u0010\t\n\u0000\n\u0002\u0010\u0000\n\u0002\b\u0002\b\u0086\u0003\u0018\u00002\u00020\u00012\u00060\u0002j\u0002`\u0003:\u0001\u001cB\u0007\b\u0002¢\u0006\u0002\u0010\u0004J\u0010\u0010\u0006\u001a\u00020\u00072\u0006\u0010\b\u001a\u00020\u0007H\u0016J\b\u0010\t\u001a\u00020\nH\u0016J\u0010\u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\fH\u0016J \u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\f2\u0006\u0010\u000e\u001a\u00020\u00072\u0006\u0010\u000f\u001a\u00020\u0007H\u0016J\u0010\u0010\u000b\u001a\u00020\f2\u0006\u0010\u0010\u001a\u00020\u0007H\u0016J\b\u0010\u0011\u001a\u00020\u0012H\u0016J\u0010\u0010\u0011\u001a\u00020\u00122\u0006\u0010\u0013\u001a\u00020\u0012H\u0016J\u0018\u0010\u0011\u001a\u00020\u00122\u0006\u0010\u0014\u001a\u00020\u00122\u0006\u0010\u0013\u001a\u00020\u0012H\u0016J\b\u0010\u0015\u001a\u00020\u0016H\u0016J\b\u0010\u0017\u001a\u00020\u0007H\u0016J\u0010\u0010\u0017\u001a\u00020\u00072\u0006\u0010\u0013\u001a\u00020\u0007H\u0016J\u0018\u0010\u0017\u001a\u00020\u00072\u0006\u0010\u0014\u001a\u00020\u00072\u0006\u0010\u0013\u001a\u00020\u0007H\u0016J\b\u0010\u0018\u001a\u00020\u0019H\u0016J\u0010\u0010\u0018\u001a\u00020\u00192\u0006\u0010\u0013\u001a\u00020\u0019H\u0016J\u0018\u0010\u0018\u001a\u00020\u00192\u0006\u0010\u0014\u001a\u00020\u00192\u0006\u0010\u0013\u001a\u00020\u0019H\u0016J\b\u0010\u001a\u001a\u00020\u001bH\u0002R\u000e\u0010\u0005\u001a\u00020\u0001X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u001d"}, d2 = {"Lkotlin/random/Random$Default;", "Lkotlin/random/Random;", "Ljava/io/Serializable;", "Lkotlin/io/Serializable;", "()V", "defaultRandom", "nextBits", "", "bitCount", "nextBoolean", "", "nextBytes", "", "array", "fromIndex", "toIndex", "size", "nextDouble", "", "until", Constants.MessagePayloadKeys.FROM, "nextFloat", "", "nextInt", "nextLong", "", "writeReplace", "", "Serialized", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* renamed from: kotlin.random.Random$Default, reason: from kotlin metadata */
/* loaded from: classes3.dex */
public static final class Companion extends Random implements Serializable {
@Metadata(d1 = {"\u0000\u001c\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\t\n\u0000\n\u0002\u0010\u0000\n\u0000\\u0002\u0018\u00002\u00060\u0001j\u0002`\u0002B\u0007\b\u0002¢\u0006\u0002\u0010\u0003J\b\u0010\u0006\u001a\u00020\u0007H\u0002R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082T¢\u0006\u0002\n\u0000¨\u0006\b"}, d2 = {"Lkotlin/random/Random$Default$Serialized;", "Ljava/io/Serializable;", "Lkotlin/io/Serializable;", "()V", "serialVersionUID", "", "readResolve", "", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* renamed from: kotlin.random.Random$Default$Serialized */
/* loaded from: classes3.dex */
public static final class Serialized implements Serializable {
public static final Serialized INSTANCE = new Serialized();
private static final long serialVersionUID = 0;
private Serialized() {
}
private final Object readResolve() {
return Random.INSTANCE;
}
}
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
private final Object writeReplace() {
return Serialized.INSTANCE;
}
@Override // kotlin.random.Random
public int nextBits(int bitCount) {
return Random.defaultRandom.nextBits(bitCount);
}
@Override // kotlin.random.Random
public boolean nextBoolean() {
return Random.defaultRandom.nextBoolean();
}
@Override // kotlin.random.Random
public byte[] nextBytes(byte[] array) {
Intrinsics.checkNotNullParameter(array, "array");
return Random.defaultRandom.nextBytes(array);
}
@Override // kotlin.random.Random
public double nextDouble() {
return Random.defaultRandom.nextDouble();
}
@Override // kotlin.random.Random
public float nextFloat() {
return Random.defaultRandom.nextFloat();
}
@Override // kotlin.random.Random
public int nextInt() {
return Random.defaultRandom.nextInt();
}
@Override // kotlin.random.Random
public long nextLong() {
return Random.defaultRandom.nextLong();
}
private Companion() {
}
@Override // kotlin.random.Random
public byte[] nextBytes(int size) {
return Random.defaultRandom.nextBytes(size);
}
@Override // kotlin.random.Random
public double nextDouble(double until) {
return Random.defaultRandom.nextDouble(until);
}
@Override // kotlin.random.Random
public int nextInt(int until) {
return Random.defaultRandom.nextInt(until);
}
@Override // kotlin.random.Random
public long nextLong(long until) {
return Random.defaultRandom.nextLong(until);
}
@Override // kotlin.random.Random
public byte[] nextBytes(byte[] array, int fromIndex, int toIndex) {
Intrinsics.checkNotNullParameter(array, "array");
return Random.defaultRandom.nextBytes(array, fromIndex, toIndex);
}
@Override // kotlin.random.Random
public double nextDouble(double from, double until) {
return Random.defaultRandom.nextDouble(from, until);
}
@Override // kotlin.random.Random
public int nextInt(int from, int until) {
return Random.defaultRandom.nextInt(from, until);
}
@Override // kotlin.random.Random
public long nextLong(long from, long until) {
return Random.defaultRandom.nextLong(from, until);
}
}
public static /* synthetic */ byte[] nextBytes$default(Random random, byte[] bArr, int i, int i4, int i5, Object obj) {
if (obj != null) {
throw new UnsupportedOperationException("Super calls with default arguments not supported in this target, function: nextBytes");
}
if ((i5 & 2) != 0) {
i = 0;
}
if ((i5 & 4) != 0) {
i4 = bArr.length;
}
return random.nextBytes(bArr, i, i4);
}
public abstract int nextBits(int bitCount);
public boolean nextBoolean() {
return nextBits(1) != 0;
}
public byte[] nextBytes(byte[] array, int fromIndex, int toIndex) {
Intrinsics.checkNotNullParameter(array, "array");
if (!new IntRange(0, array.length).contains(fromIndex) || !new IntRange(0, array.length).contains(toIndex)) {
StringBuilder sb = new StringBuilder("fromIndex (");
sb.append(fromIndex);
sb.append(") or toIndex (");
sb.append(toIndex);
sb.append(") are out of range: 0..");
throw new IllegalArgumentException(w.p(sb, array.length, '.').toString());
}
if (fromIndex <= toIndex) {
int i = (toIndex - fromIndex) / 4;
for (int i4 = 0; i4 < i; i4++) {
int nextInt = nextInt();
array[fromIndex] = (byte) nextInt;
array[fromIndex + 1] = (byte) (nextInt >>> 8);
array[fromIndex + 2] = (byte) (nextInt >>> 16);
array[fromIndex + 3] = (byte) (nextInt >>> 24);
fromIndex += 4;
}
int i5 = toIndex - fromIndex;
int nextBits = nextBits(i5 * 8);
for (int i6 = 0; i6 < i5; i6++) {
array[fromIndex + i6] = (byte) (nextBits >>> (i6 * 8));
}
return array;
}
throw new IllegalArgumentException(("fromIndex (" + fromIndex + ") must be not greater than toIndex (" + toIndex + ").").toString());
}
public double nextDouble() {
return PlatformRandomKt.doubleFromParts(nextBits(26), nextBits(27));
}
public float nextFloat() {
return nextBits(24) / 1.6777216E7f;
}
public int nextInt() {
return nextBits(32);
}
public long nextLong() {
return (nextInt() << 32) + nextInt();
}
public double nextDouble(double until) {
return nextDouble(FirebaseRemoteConfig.DEFAULT_VALUE_FOR_DOUBLE, until);
}
public int nextInt(int until) {
return nextInt(0, until);
}
public long nextLong(long until) {
return nextLong(0L, until);
}
public double nextDouble(double from, double until) {
double nextDouble;
RandomKt.checkRangeBounds(from, until);
double d4 = until - from;
if (Double.isInfinite(d4) && !Double.isInfinite(from) && !Double.isNaN(from) && !Double.isInfinite(until) && !Double.isNaN(until)) {
double d5 = 2;
double nextDouble2 = ((until / d5) - (from / d5)) * nextDouble();
nextDouble = from + nextDouble2 + nextDouble2;
} else {
nextDouble = from + (nextDouble() * d4);
}
return nextDouble >= until ? Math.nextAfter(until, Double.NEGATIVE_INFINITY) : nextDouble;
}
public int nextInt(int from, int until) {
int nextInt;
int i;
int i4;
RandomKt.checkRangeBounds(from, until);
int i5 = until - from;
if (i5 > 0 || i5 == Integer.MIN_VALUE) {
if (((-i5) & i5) == i5) {
i4 = nextBits(RandomKt.fastLog2(i5));
return from + i4;
}
do {
nextInt = nextInt() >>> 1;
i = nextInt % i5;
} while ((i5 - 1) + (nextInt - i) < 0);
i4 = i;
return from + i4;
}
while (true) {
int nextInt2 = nextInt();
if (from <= nextInt2 && nextInt2 < until) {
return nextInt2;
}
}
}
public long nextLong(long from, long until) {
long nextLong;
long j4;
long j5;
int nextInt;
RandomKt.checkRangeBounds(from, until);
long j6 = until - from;
if (j6 > 0) {
if (((-j6) & j6) == j6) {
int i = (int) j6;
int i4 = (int) (j6 >>> 32);
if (i != 0) {
nextInt = nextBits(RandomKt.fastLog2(i));
} else if (i4 == 1) {
nextInt = nextInt();
} else {
j5 = (nextBits(RandomKt.fastLog2(i4)) << 32) + (nextInt() & 4294967295L);
return from + j5;
}
j5 = nextInt & 4294967295L;
return from + j5;
}
do {
nextLong = nextLong() >>> 1;
j4 = nextLong % j6;
} while ((j6 - 1) + (nextLong - j4) < 0);
j5 = j4;
return from + j5;
}
while (true) {
long nextLong2 = nextLong();
if (from <= nextLong2 && nextLong2 < until) {
return nextLong2;
}
}
}
public byte[] nextBytes(byte[] array) {
Intrinsics.checkNotNullParameter(array, "array");
return nextBytes(array, 0, array.length);
}
public byte[] nextBytes(int size) {
return nextBytes(new byte[size]);
}
}