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,185 @@
package com.adif.elcanomovil.uiSelectTrain.entities;
import com.adif.elcanomovil.commonNavGraph.arguments.NavArguments;
import com.google.android.gms.measurement.internal.a;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
@Metadata(d1 = {"\u00002\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\t\n\u0002\b\u0018\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0002\b\u0086\b\u0018\u00002\u00020\u0001BG\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0003\u0012\u0006\u0010\u0005\u001a\u00020\u0003\u0012\u0006\u0010\u0006\u001a\u00020\u0007\u0012\u0006\u0010\b\u001a\u00020\u0007\u0012\u0006\u0010\t\u001a\u00020\n\u0012\u0006\u0010\u000b\u001a\u00020\n\u0012\b\u0010\f\u001a\u0004\u0018\u00010\u0003¢\u0006\u0002\u0010\rJ\t\u0010\u0019\u001a\u00020\u0003HÆ\u0003J\t\u0010\u001a\u001a\u00020\u0003HÆ\u0003J\t\u0010\u001b\u001a\u00020\u0003HÆ\u0003J\t\u0010\u001c\u001a\u00020\u0007HÆ\u0003J\t\u0010\u001d\u001a\u00020\u0007HÆ\u0003J\t\u0010\u001e\u001a\u00020\nHÆ\u0003J\t\u0010\u001f\u001a\u00020\nHÆ\u0003J\u000b\u0010 \u001a\u0004\u0018\u00010\u0003HÆ\u0003J[\u0010!\u001a\u00020\u00002\b\b\u0002\u0010\u0002\u001a\u00020\u00032\b\b\u0002\u0010\u0004\u001a\u00020\u00032\b\b\u0002\u0010\u0005\u001a\u00020\u00032\b\b\u0002\u0010\u0006\u001a\u00020\u00072\b\b\u0002\u0010\b\u001a\u00020\u00072\b\b\u0002\u0010\t\u001a\u00020\n2\b\b\u0002\u0010\u000b\u001a\u00020\n2\n\b\u0002\u0010\f\u001a\u0004\u0018\u00010\u0003HÆ\u0001J\u0013\u0010\"\u001a\u00020#2\b\u0010$\u001a\u0004\u0018\u00010\u0001HÖ\u0003J\t\u0010%\u001a\u00020&HÖ\u0001J\t\u0010'\u001a\u00020\u0003HÖ\u0001R\u0011\u0010\u0005\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u000e\u0010\u000fR\u0011\u0010\u0004\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0010\u0010\u000fR\u0011\u0010\t\u001a\u00020\\u0006\b\n\u0000\u001a\u0004\b\u0011\u0010\u0012R\u0011\u0010\b\u001a\u00020\u0007¢\u0006\b\n\u0000\u001a\u0004\b\u0013\u0010\u0014R\u0011\u0010\u000b\u001a\u00020\\u0006\b\n\u0000\u001a\u0004\b\u0015\u0010\u0012R\u0013\u0010\f\u001a\u0004\u0018\u00010\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0016\u0010\u000fR\u0011\u0010\u0002\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0017\u0010\u000fR\u0011\u0010\u0006\u001a\u00020\u0007¢\u0006\b\n\u0000\u001a\u0004\b\u0018\u0010\u0014¨\u0006("}, d2 = {"Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainInfo;", "", NavArguments.ARG_DYNAMIC_LINKS_OPERATOR, "", NavArguments.ARG_DYNAMIC_LINKS_COMMERCIAL_PRODUCT, NavArguments.ARG_DYNAMIC_LINKS_COMMERCIAL_NUMBER, "originStation", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainInfoStation;", "destinationStation", "date", "", NavArguments.ARG_DYNAMIC_LINKS_LAUNCHDATE, "observation", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainInfoStation;Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainInfoStation;JJLjava/lang/String;)V", "getCommercialNumber", "()Ljava/lang/String;", "getCommercialProduct", "getDate", "()J", "getDestinationStation", "()Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainInfoStation;", "getLaunchingDate", "getObservation", "getOperator", "getOriginStation", "component1", "component2", "component3", "component4", "component5", "component6", "component7", "component8", "copy", "equals", "", "other", "hashCode", "", "toString", "ui-select-train_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes2.dex */
public final /* data */ class TrainInfo {
private final String commercialNumber;
private final String commercialProduct;
private final long date;
private final TrainInfoStation destinationStation;
private final long launchingDate;
private final String observation;
private final String operator;
private final TrainInfoStation originStation;
public TrainInfo(String operator, String commercialProduct, String commercialNumber, TrainInfoStation originStation, TrainInfoStation destinationStation, long j4, long j5, String str) {
Intrinsics.checkNotNullParameter(operator, "operator");
Intrinsics.checkNotNullParameter(commercialProduct, "commercialProduct");
Intrinsics.checkNotNullParameter(commercialNumber, "commercialNumber");
Intrinsics.checkNotNullParameter(originStation, "originStation");
Intrinsics.checkNotNullParameter(destinationStation, "destinationStation");
this.operator = operator;
this.commercialProduct = commercialProduct;
this.commercialNumber = commercialNumber;
this.originStation = originStation;
this.destinationStation = destinationStation;
this.date = j4;
this.launchingDate = j5;
this.observation = str;
}
public static /* synthetic */ TrainInfo copy$default(TrainInfo trainInfo, String str, String str2, String str3, TrainInfoStation trainInfoStation, TrainInfoStation trainInfoStation2, long j4, long j5, String str4, int i, Object obj) {
if ((i & 1) != 0) {
str = trainInfo.operator;
}
if ((i & 2) != 0) {
str2 = trainInfo.commercialProduct;
}
if ((i & 4) != 0) {
str3 = trainInfo.commercialNumber;
}
if ((i & 8) != 0) {
trainInfoStation = trainInfo.originStation;
}
if ((i & 16) != 0) {
trainInfoStation2 = trainInfo.destinationStation;
}
if ((i & 32) != 0) {
j4 = trainInfo.date;
}
if ((i & 64) != 0) {
j5 = trainInfo.launchingDate;
}
if ((i & 128) != 0) {
str4 = trainInfo.observation;
}
String str5 = str4;
long j6 = j5;
long j7 = j4;
TrainInfoStation trainInfoStation3 = trainInfoStation2;
String str6 = str3;
return trainInfo.copy(str, str2, str6, trainInfoStation, trainInfoStation3, j7, j6, str5);
}
/* renamed from: component1, reason: from getter */
public final String getOperator() {
return this.operator;
}
/* renamed from: component2, reason: from getter */
public final String getCommercialProduct() {
return this.commercialProduct;
}
/* renamed from: component3, reason: from getter */
public final String getCommercialNumber() {
return this.commercialNumber;
}
/* renamed from: component4, reason: from getter */
public final TrainInfoStation getOriginStation() {
return this.originStation;
}
/* renamed from: component5, reason: from getter */
public final TrainInfoStation getDestinationStation() {
return this.destinationStation;
}
/* renamed from: component6, reason: from getter */
public final long getDate() {
return this.date;
}
/* renamed from: component7, reason: from getter */
public final long getLaunchingDate() {
return this.launchingDate;
}
/* renamed from: component8, reason: from getter */
public final String getObservation() {
return this.observation;
}
public final TrainInfo copy(String operator, String commercialProduct, String commercialNumber, TrainInfoStation originStation, TrainInfoStation destinationStation, long date, long launchingDate, String observation) {
Intrinsics.checkNotNullParameter(operator, "operator");
Intrinsics.checkNotNullParameter(commercialProduct, "commercialProduct");
Intrinsics.checkNotNullParameter(commercialNumber, "commercialNumber");
Intrinsics.checkNotNullParameter(originStation, "originStation");
Intrinsics.checkNotNullParameter(destinationStation, "destinationStation");
return new TrainInfo(operator, commercialProduct, commercialNumber, originStation, destinationStation, date, launchingDate, observation);
}
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof TrainInfo)) {
return false;
}
TrainInfo trainInfo = (TrainInfo) other;
return Intrinsics.areEqual(this.operator, trainInfo.operator) && Intrinsics.areEqual(this.commercialProduct, trainInfo.commercialProduct) && Intrinsics.areEqual(this.commercialNumber, trainInfo.commercialNumber) && Intrinsics.areEqual(this.originStation, trainInfo.originStation) && Intrinsics.areEqual(this.destinationStation, trainInfo.destinationStation) && this.date == trainInfo.date && this.launchingDate == trainInfo.launchingDate && Intrinsics.areEqual(this.observation, trainInfo.observation);
}
public final String getCommercialNumber() {
return this.commercialNumber;
}
public final String getCommercialProduct() {
return this.commercialProduct;
}
public final long getDate() {
return this.date;
}
public final TrainInfoStation getDestinationStation() {
return this.destinationStation;
}
public final long getLaunchingDate() {
return this.launchingDate;
}
public final String getObservation() {
return this.observation;
}
public final String getOperator() {
return this.operator;
}
public final TrainInfoStation getOriginStation() {
return this.originStation;
}
public int hashCode() {
int b4 = a.b(this.launchingDate, a.b(this.date, (this.destinationStation.hashCode() + ((this.originStation.hashCode() + a.d(this.commercialNumber, a.d(this.commercialProduct, this.operator.hashCode() * 31, 31), 31)) * 31)) * 31, 31), 31);
String str = this.observation;
return b4 + (str == null ? 0 : str.hashCode());
}
public String toString() {
StringBuilder sb = new StringBuilder("TrainInfo(operator=");
sb.append(this.operator);
sb.append(", commercialProduct=");
sb.append(this.commercialProduct);
sb.append(", commercialNumber=");
sb.append(this.commercialNumber);
sb.append(", originStation=");
sb.append(this.originStation);
sb.append(", destinationStation=");
sb.append(this.destinationStation);
sb.append(", date=");
sb.append(this.date);
sb.append(", launchingDate=");
sb.append(this.launchingDate);
sb.append(", observation=");
return a.n(sb, this.observation, ')');
}
}

View File

@@ -0,0 +1,29 @@
package com.adif.elcanomovil.uiSelectTrain.entities;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
@Metadata(d1 = {"\u0000\u0012\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u000e\n\u0002\b\b\u0018\u00002\u00020\u0001B\u0017\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\b\u0010\u0004\u001a\u0004\u0018\u00010\u0003¢\u0006\u0002\u0010\u0005R\u0011\u0010\u0002\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0006\u0010\u0007R\u001c\u0010\u0004\u001a\u0004\u0018\u00010\u0003X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\b\u0010\u0007\"\u0004\b\t\u0010\\u0006\u000b"}, d2 = {"Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainInfoStation;", "", "stationCode", "", "stationName", "(Ljava/lang/String;Ljava/lang/String;)V", "getStationCode", "()Ljava/lang/String;", "getStationName", "setStationName", "(Ljava/lang/String;)V", "ui-select-train_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes2.dex */
public final class TrainInfoStation {
private final String stationCode;
private String stationName;
public TrainInfoStation(String stationCode, String str) {
Intrinsics.checkNotNullParameter(stationCode, "stationCode");
this.stationCode = stationCode;
this.stationName = str;
}
public final String getStationCode() {
return this.stationCode;
}
public final String getStationName() {
return this.stationName;
}
public final void setStationName(String str) {
this.stationName = str;
}
}

View File

@@ -0,0 +1,65 @@
package com.adif.elcanomovil.uiSelectTrain.entities;
import java.util.List;
import kotlin.Metadata;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
@Metadata(d1 = {"\u0000\u001e\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\b6\u0018\u00002\u00020\u0001:\u0004\u0003\u0004\u0005\u0006B\u0007\b\u0004¢\u0006\u0002\u0010\u0002\u0082\u0001\u0004\u0007\b\t\\u0006\u000b"}, d2 = {"Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData;", "", "()V", "Data", "Empty", "Error", "Loading", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Data;", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Empty;", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Error;", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Loading;", "ui-select-train_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes2.dex */
public abstract class TrainSituationViewData {
@Metadata(d1 = {"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0004\u0018\u00002\u00020\u0001B\u0013\u0012\f\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003¢\u0006\u0002\u0010\u0005R\u0017\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0006\u0010\u0007¨\u0006\b"}, d2 = {"Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Data;", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData;", "results", "", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainInfo;", "(Ljava/util/List;)V", "getResults", "()Ljava/util/List;", "ui-select-train_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes2.dex */
public static final class Data extends TrainSituationViewData {
private final List<TrainInfo> results;
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
public Data(List<TrainInfo> results) {
super(null);
Intrinsics.checkNotNullParameter(results, "results");
this.results = results;
}
public final List<TrainInfo> getResults() {
return this.results;
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002¨\u0006\u0003"}, d2 = {"Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Empty;", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData;", "()V", "ui-select-train_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes2.dex */
public static final class Empty extends TrainSituationViewData {
public static final Empty INSTANCE = new Empty();
private Empty() {
super(null);
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002¨\u0006\u0003"}, d2 = {"Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Error;", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData;", "()V", "ui-select-train_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes2.dex */
public static final class Error extends TrainSituationViewData {
public static final Error INSTANCE = new Error();
private Error() {
super(null);
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002¨\u0006\u0003"}, d2 = {"Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData$Loading;", "Lcom/adif/elcanomovil/uiSelectTrain/entities/TrainSituationViewData;", "()V", "ui-select-train_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes2.dex */
public static final class Loading extends TrainSituationViewData {
public static final Loading INSTANCE = new Loading();
private Loading() {
super(null);
}
}
public /* synthetic */ TrainSituationViewData(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
private TrainSituationViewData() {
}
}