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:
@@ -0,0 +1,11 @@
|
||||
package com.adif.elcanomovil.observers;
|
||||
|
||||
import kotlin.Metadata;
|
||||
import kotlin.Unit;
|
||||
import kotlin.coroutines.Continuation;
|
||||
|
||||
@Metadata(d1 = {"\u0000\u0012\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\bf\u0018\u00002\u00020\u0001J\u000e\u0010\u0002\u001a\u00020\u0003H¦@¢\u0006\u0002\u0010\u0004¨\u0006\u0005"}, d2 = {"Lcom/adif/elcanomovil/observers/ApplicationObserver;", "", "start", "", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "app_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public interface ApplicationObserver {
|
||||
Object start(Continuation<? super Unit> continuation);
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.adif.elcanomovil.observers;
|
||||
|
||||
import java.util.List;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.jvm.internal.SourceDebugExtension;
|
||||
|
||||
@Metadata(d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010 \n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\u0013\u0012\f\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00010\u0003¢\u0006\u0002\u0010\u0004J\u000e\u0010\u0005\u001a\u00020\u0006H\u0096@¢\u0006\u0002\u0010\u0007R\u0014\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00010\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\b"}, d2 = {"Lcom/adif/elcanomovil/observers/ComposedApplicationObserver;", "Lcom/adif/elcanomovil/observers/ApplicationObserver;", "observers", "", "(Ljava/util/List;)V", "start", "", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "app_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
@SourceDebugExtension({"SMAP\nComposedApplicationObserver.kt\nKotlin\n*S Kotlin\n*F\n+ 1 ComposedApplicationObserver.kt\ncom/adif/elcanomovil/observers/ComposedApplicationObserver\n+ 2 _Collections.kt\nkotlin/collections/CollectionsKt___CollectionsKt\n*L\n1#1,13:1\n1855#2,2:14\n*S KotlinDebug\n*F\n+ 1 ComposedApplicationObserver.kt\ncom/adif/elcanomovil/observers/ComposedApplicationObserver\n*L\n10#1:14,2\n*E\n"})
|
||||
/* loaded from: classes.dex */
|
||||
public final class ComposedApplicationObserver implements ApplicationObserver {
|
||||
private final List<ApplicationObserver> observers;
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
public ComposedApplicationObserver(List<? extends ApplicationObserver> observers) {
|
||||
Intrinsics.checkNotNullParameter(observers, "observers");
|
||||
this.observers = observers;
|
||||
}
|
||||
|
||||
/* JADX WARN: Removed duplicated region for block: B:13:0x0044 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:24:0x0033 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:8:0x0023 */
|
||||
@Override // com.adif.elcanomovil.observers.ApplicationObserver
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public java.lang.Object start(kotlin.coroutines.Continuation<? super kotlin.Unit> r5) {
|
||||
/*
|
||||
r4 = this;
|
||||
boolean r0 = r5 instanceof p1.C0550a
|
||||
if (r0 == 0) goto L13
|
||||
r0 = r5
|
||||
p1.a r0 = (p1.C0550a) r0
|
||||
int r1 = r0.f8116d
|
||||
r2 = -2147483648(0xffffffff80000000, float:-0.0)
|
||||
r3 = r1 & r2
|
||||
if (r3 == 0) goto L13
|
||||
int r1 = r1 - r2
|
||||
r0.f8116d = r1
|
||||
goto L18
|
||||
L13:
|
||||
p1.a r0 = new p1.a
|
||||
r0.<init>(r4, r5)
|
||||
L18:
|
||||
java.lang.Object r5 = r0.f8114b
|
||||
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
|
||||
int r2 = r0.f8116d
|
||||
r3 = 1
|
||||
if (r2 == 0) goto L33
|
||||
if (r2 != r3) goto L2b
|
||||
java.util.Iterator r4 = r0.f8113a
|
||||
kotlin.ResultKt.throwOnFailure(r5)
|
||||
goto L3e
|
||||
L2b:
|
||||
java.lang.IllegalStateException r4 = new java.lang.IllegalStateException
|
||||
java.lang.String r5 = "call to 'resume' before 'invoke' with coroutine"
|
||||
r4.<init>(r5)
|
||||
throw r4
|
||||
L33:
|
||||
kotlin.ResultKt.throwOnFailure(r5)
|
||||
java.util.List<com.adif.elcanomovil.observers.ApplicationObserver> r4 = r4.observers
|
||||
java.lang.Iterable r4 = (java.lang.Iterable) r4
|
||||
java.util.Iterator r4 = r4.iterator()
|
||||
L3e:
|
||||
boolean r5 = r4.hasNext()
|
||||
if (r5 == 0) goto L55
|
||||
java.lang.Object r5 = r4.next()
|
||||
com.adif.elcanomovil.observers.ApplicationObserver r5 = (com.adif.elcanomovil.observers.ApplicationObserver) r5
|
||||
r0.f8113a = r4
|
||||
r0.f8116d = r3
|
||||
java.lang.Object r5 = r5.start(r0)
|
||||
if (r5 != r1) goto L3e
|
||||
return r1
|
||||
L55:
|
||||
kotlin.Unit r4 = kotlin.Unit.INSTANCE
|
||||
return r4
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.adif.elcanomovil.observers.ComposedApplicationObserver.start(kotlin.coroutines.Continuation):java.lang.Object");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.adif.elcanomovil.observers;
|
||||
|
||||
import a1.C0107a;
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
||||
import java.util.ArrayList;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.Unit;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import t3.a;
|
||||
import t3.b;
|
||||
import t3.c;
|
||||
|
||||
@Metadata(d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0002\b\u0003\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\b\u0010\u0005\u001a\u00020\u0006H\u0002J\u000e\u0010\u0007\u001a\u00020\u0006H\u0096@¢\u0006\u0002\u0010\bR\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\t"}, d2 = {"Lcom/adif/elcanomovil/observers/LoggerObserver;", "Lcom/adif/elcanomovil/observers/ApplicationObserver;", "firebaseCrashlytics", "Lcom/google/firebase/crashlytics/FirebaseCrashlytics;", "(Lcom/google/firebase/crashlytics/FirebaseCrashlytics;)V", "configureLoggerInstance", "", "start", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "app_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class LoggerObserver implements ApplicationObserver {
|
||||
private final FirebaseCrashlytics firebaseCrashlytics;
|
||||
|
||||
public LoggerObserver(FirebaseCrashlytics firebaseCrashlytics) {
|
||||
Intrinsics.checkNotNullParameter(firebaseCrashlytics, "firebaseCrashlytics");
|
||||
this.firebaseCrashlytics = firebaseCrashlytics;
|
||||
}
|
||||
|
||||
private final void configureLoggerInstance() {
|
||||
a aVar = c.f8551a;
|
||||
C0107a tree = new C0107a(this.firebaseCrashlytics);
|
||||
aVar.getClass();
|
||||
Intrinsics.checkNotNullParameter(tree, "tree");
|
||||
if (tree == aVar) {
|
||||
throw new IllegalArgumentException("Cannot plant Timber into itself.");
|
||||
}
|
||||
ArrayList arrayList = c.f8552b;
|
||||
synchronized (arrayList) {
|
||||
arrayList.add(tree);
|
||||
Object[] array = arrayList.toArray(new b[0]);
|
||||
if (array == null) {
|
||||
throw new NullPointerException("null cannot be cast to non-null type kotlin.Array<T>");
|
||||
}
|
||||
c.f8553c = (b[]) array;
|
||||
Unit unit = Unit.INSTANCE;
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.adif.elcanomovil.observers.ApplicationObserver
|
||||
public Object start(Continuation<? super Unit> continuation) {
|
||||
configureLoggerInstance();
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.adif.elcanomovil.observers;
|
||||
|
||||
import com.adif.elcanomovil.domain.usecases.FetchVersionUpdateUseCase;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.Unit;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.coroutines.intrinsics.IntrinsicsKt;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
|
||||
@Metadata(d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\u000e\u0010\u0005\u001a\u00020\u0006H\u0096@¢\u0006\u0002\u0010\u0007R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\b"}, d2 = {"Lcom/adif/elcanomovil/observers/RemoteConfigurationObserver;", "Lcom/adif/elcanomovil/observers/ApplicationObserver;", "fetchVersionUpdateUseCase", "Lcom/adif/elcanomovil/domain/usecases/FetchVersionUpdateUseCase;", "(Lcom/adif/elcanomovil/domain/usecases/FetchVersionUpdateUseCase;)V", "start", "", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "app_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class RemoteConfigurationObserver implements ApplicationObserver {
|
||||
private final FetchVersionUpdateUseCase fetchVersionUpdateUseCase;
|
||||
|
||||
public RemoteConfigurationObserver(FetchVersionUpdateUseCase fetchVersionUpdateUseCase) {
|
||||
Intrinsics.checkNotNullParameter(fetchVersionUpdateUseCase, "fetchVersionUpdateUseCase");
|
||||
this.fetchVersionUpdateUseCase = fetchVersionUpdateUseCase;
|
||||
}
|
||||
|
||||
@Override // com.adif.elcanomovil.observers.ApplicationObserver
|
||||
public Object start(Continuation<? super Unit> continuation) {
|
||||
Object invoke = this.fetchVersionUpdateUseCase.invoke(continuation);
|
||||
return invoke == IntrinsicsKt.getCOROUTINE_SUSPENDED() ? invoke : Unit.INSTANCE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package com.adif.elcanomovil.observers;
|
||||
|
||||
import com.adif.elcanomovil.domain.usecases.stations.GetStationsUseCase;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
|
||||
@Metadata(d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\u000e\u0010\u0005\u001a\u00020\u0006H\u0096@¢\u0006\u0002\u0010\u0007R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\b"}, d2 = {"Lcom/adif/elcanomovil/observers/UpdateStationsObserver;", "Lcom/adif/elcanomovil/observers/ApplicationObserver;", "getStationsUseCase", "Lcom/adif/elcanomovil/domain/usecases/stations/GetStationsUseCase;", "(Lcom/adif/elcanomovil/domain/usecases/stations/GetStationsUseCase;)V", "start", "", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "app_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class UpdateStationsObserver implements ApplicationObserver {
|
||||
private final GetStationsUseCase getStationsUseCase;
|
||||
|
||||
public UpdateStationsObserver(GetStationsUseCase getStationsUseCase) {
|
||||
Intrinsics.checkNotNullParameter(getStationsUseCase, "getStationsUseCase");
|
||||
this.getStationsUseCase = getStationsUseCase;
|
||||
}
|
||||
|
||||
/* JADX WARN: Code restructure failed: missing block: B:18:0x0050, code lost:
|
||||
|
||||
if (((kotlinx.coroutines.flow.Flow) r6).collect(r5, r0) != r1) goto L22;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:19:0x0052, code lost:
|
||||
|
||||
return r1;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:21:0x0043, code lost:
|
||||
|
||||
if (r6 == r1) goto L21;
|
||||
*/
|
||||
/* JADX WARN: Removed duplicated region for block: B:20:0x0038 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:8:0x0024 */
|
||||
@Override // com.adif.elcanomovil.observers.ApplicationObserver
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public java.lang.Object start(kotlin.coroutines.Continuation<? super kotlin.Unit> r6) {
|
||||
/*
|
||||
r5 = this;
|
||||
boolean r0 = r6 instanceof p1.C0551b
|
||||
if (r0 == 0) goto L13
|
||||
r0 = r6
|
||||
p1.b r0 = (p1.C0551b) r0
|
||||
int r1 = r0.f8119c
|
||||
r2 = -2147483648(0xffffffff80000000, float:-0.0)
|
||||
r3 = r1 & r2
|
||||
if (r3 == 0) goto L13
|
||||
int r1 = r1 - r2
|
||||
r0.f8119c = r1
|
||||
goto L18
|
||||
L13:
|
||||
p1.b r0 = new p1.b
|
||||
r0.<init>(r5, r6)
|
||||
L18:
|
||||
java.lang.Object r6 = r0.f8117a
|
||||
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
|
||||
int r2 = r0.f8119c
|
||||
r3 = 2
|
||||
r4 = 1
|
||||
if (r2 == 0) goto L38
|
||||
if (r2 == r4) goto L34
|
||||
if (r2 != r3) goto L2c
|
||||
kotlin.ResultKt.throwOnFailure(r6)
|
||||
goto L53
|
||||
L2c:
|
||||
java.lang.IllegalStateException r5 = new java.lang.IllegalStateException
|
||||
java.lang.String r6 = "call to 'resume' before 'invoke' with coroutine"
|
||||
r5.<init>(r6)
|
||||
throw r5
|
||||
L34:
|
||||
kotlin.ResultKt.throwOnFailure(r6)
|
||||
goto L46
|
||||
L38:
|
||||
kotlin.ResultKt.throwOnFailure(r6)
|
||||
com.adif.elcanomovil.domain.usecases.stations.GetStationsUseCase r5 = r5.getStationsUseCase
|
||||
r0.f8119c = r4
|
||||
java.lang.Object r6 = r5.invoke(r0)
|
||||
if (r6 != r1) goto L46
|
||||
goto L52
|
||||
L46:
|
||||
kotlinx.coroutines.flow.Flow r6 = (kotlinx.coroutines.flow.Flow) r6
|
||||
p1.c r5 = p1.c.f8120a
|
||||
r0.f8119c = r3
|
||||
java.lang.Object r5 = r6.collect(r5, r0)
|
||||
if (r5 != r1) goto L53
|
||||
L52:
|
||||
return r1
|
||||
L53:
|
||||
kotlin.Unit r5 = kotlin.Unit.INSTANCE
|
||||
return r5
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.adif.elcanomovil.observers.UpdateStationsObserver.start(kotlin.coroutines.Continuation):java.lang.Object");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user