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,151 @@
|
||||
package com.google.firebase.sessions;
|
||||
|
||||
import C.w;
|
||||
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.internal.DefaultConstructorMarker;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
|
||||
@Metadata(d1 = {"\u0000.\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0010\b\n\u0000\n\u0002\u0010\t\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0014\n\u0002\u0010\u000b\n\u0002\b\u0004\b\u0080\b\u0018\u00002\u00020\u0001B9\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0003\u0012\u0006\u0010\u0005\u001a\u00020\u0006\u0012\u0006\u0010\u0007\u001a\u00020\b\u0012\b\b\u0002\u0010\t\u001a\u00020\n\u0012\b\b\u0002\u0010\u000b\u001a\u00020\u0003¢\u0006\u0002\u0010\fJ\t\u0010\u0017\u001a\u00020\u0003HÆ\u0003J\t\u0010\u0018\u001a\u00020\u0003HÆ\u0003J\t\u0010\u0019\u001a\u00020\u0006HÆ\u0003J\t\u0010\u001a\u001a\u00020\bHÆ\u0003J\t\u0010\u001b\u001a\u00020\nHÆ\u0003J\t\u0010\u001c\u001a\u00020\u0003HÆ\u0003JE\u0010\u001d\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\u00062\b\b\u0002\u0010\u0007\u001a\u00020\b2\b\b\u0002\u0010\t\u001a\u00020\n2\b\b\u0002\u0010\u000b\u001a\u00020\u0003HÆ\u0001J\u0013\u0010\u001e\u001a\u00020\u001f2\b\u0010 \u001a\u0004\u0018\u00010\u0001HÖ\u0003J\t\u0010!\u001a\u00020\u0006HÖ\u0001J\t\u0010\"\u001a\u00020\u0003HÖ\u0001R\u0011\u0010\t\u001a\u00020\n¢\u0006\b\n\u0000\u001a\u0004\b\r\u0010\u000eR\u0011\u0010\u0007\u001a\u00020\b¢\u0006\b\n\u0000\u001a\u0004\b\u000f\u0010\u0010R\u0011\u0010\u000b\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0011\u0010\u0012R\u0011\u0010\u0004\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0013\u0010\u0012R\u0011\u0010\u0002\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0014\u0010\u0012R\u0011\u0010\u0005\u001a\u00020\u0006¢\u0006\b\n\u0000\u001a\u0004\b\u0015\u0010\u0016¨\u0006#"}, d2 = {"Lcom/google/firebase/sessions/SessionInfo;", "", "sessionId", "", "firstSessionId", "sessionIndex", "", "eventTimestampUs", "", "dataCollectionStatus", "Lcom/google/firebase/sessions/DataCollectionStatus;", "firebaseInstallationId", "(Ljava/lang/String;Ljava/lang/String;IJLcom/google/firebase/sessions/DataCollectionStatus;Ljava/lang/String;)V", "getDataCollectionStatus", "()Lcom/google/firebase/sessions/DataCollectionStatus;", "getEventTimestampUs", "()J", "getFirebaseInstallationId", "()Ljava/lang/String;", "getFirstSessionId", "getSessionId", "getSessionIndex", "()I", "component1", "component2", "component3", "component4", "component5", "component6", "copy", "equals", "", "other", "hashCode", "toString", "com.google.firebase-firebase-sessions"}, k = 1, mv = {1, 7, 1}, xi = 48)
|
||||
/* loaded from: classes3.dex */
|
||||
public final /* data */ class SessionInfo {
|
||||
private final DataCollectionStatus dataCollectionStatus;
|
||||
private final long eventTimestampUs;
|
||||
private final String firebaseInstallationId;
|
||||
private final String firstSessionId;
|
||||
private final String sessionId;
|
||||
private final int sessionIndex;
|
||||
|
||||
public SessionInfo(String sessionId, String firstSessionId, int i, long j4, DataCollectionStatus dataCollectionStatus, String firebaseInstallationId) {
|
||||
Intrinsics.checkNotNullParameter(sessionId, "sessionId");
|
||||
Intrinsics.checkNotNullParameter(firstSessionId, "firstSessionId");
|
||||
Intrinsics.checkNotNullParameter(dataCollectionStatus, "dataCollectionStatus");
|
||||
Intrinsics.checkNotNullParameter(firebaseInstallationId, "firebaseInstallationId");
|
||||
this.sessionId = sessionId;
|
||||
this.firstSessionId = firstSessionId;
|
||||
this.sessionIndex = i;
|
||||
this.eventTimestampUs = j4;
|
||||
this.dataCollectionStatus = dataCollectionStatus;
|
||||
this.firebaseInstallationId = firebaseInstallationId;
|
||||
}
|
||||
|
||||
public static /* synthetic */ SessionInfo copy$default(SessionInfo sessionInfo, String str, String str2, int i, long j4, DataCollectionStatus dataCollectionStatus, String str3, int i4, Object obj) {
|
||||
if ((i4 & 1) != 0) {
|
||||
str = sessionInfo.sessionId;
|
||||
}
|
||||
if ((i4 & 2) != 0) {
|
||||
str2 = sessionInfo.firstSessionId;
|
||||
}
|
||||
if ((i4 & 4) != 0) {
|
||||
i = sessionInfo.sessionIndex;
|
||||
}
|
||||
if ((i4 & 8) != 0) {
|
||||
j4 = sessionInfo.eventTimestampUs;
|
||||
}
|
||||
if ((i4 & 16) != 0) {
|
||||
dataCollectionStatus = sessionInfo.dataCollectionStatus;
|
||||
}
|
||||
if ((i4 & 32) != 0) {
|
||||
str3 = sessionInfo.firebaseInstallationId;
|
||||
}
|
||||
long j5 = j4;
|
||||
int i5 = i;
|
||||
return sessionInfo.copy(str, str2, i5, j5, dataCollectionStatus, str3);
|
||||
}
|
||||
|
||||
/* renamed from: component1, reason: from getter */
|
||||
public final String getSessionId() {
|
||||
return this.sessionId;
|
||||
}
|
||||
|
||||
/* renamed from: component2, reason: from getter */
|
||||
public final String getFirstSessionId() {
|
||||
return this.firstSessionId;
|
||||
}
|
||||
|
||||
/* renamed from: component3, reason: from getter */
|
||||
public final int getSessionIndex() {
|
||||
return this.sessionIndex;
|
||||
}
|
||||
|
||||
/* renamed from: component4, reason: from getter */
|
||||
public final long getEventTimestampUs() {
|
||||
return this.eventTimestampUs;
|
||||
}
|
||||
|
||||
/* renamed from: component5, reason: from getter */
|
||||
public final DataCollectionStatus getDataCollectionStatus() {
|
||||
return this.dataCollectionStatus;
|
||||
}
|
||||
|
||||
/* renamed from: component6, reason: from getter */
|
||||
public final String getFirebaseInstallationId() {
|
||||
return this.firebaseInstallationId;
|
||||
}
|
||||
|
||||
public final SessionInfo copy(String sessionId, String firstSessionId, int sessionIndex, long eventTimestampUs, DataCollectionStatus dataCollectionStatus, String firebaseInstallationId) {
|
||||
Intrinsics.checkNotNullParameter(sessionId, "sessionId");
|
||||
Intrinsics.checkNotNullParameter(firstSessionId, "firstSessionId");
|
||||
Intrinsics.checkNotNullParameter(dataCollectionStatus, "dataCollectionStatus");
|
||||
Intrinsics.checkNotNullParameter(firebaseInstallationId, "firebaseInstallationId");
|
||||
return new SessionInfo(sessionId, firstSessionId, sessionIndex, eventTimestampUs, dataCollectionStatus, firebaseInstallationId);
|
||||
}
|
||||
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
return true;
|
||||
}
|
||||
if (!(other instanceof SessionInfo)) {
|
||||
return false;
|
||||
}
|
||||
SessionInfo sessionInfo = (SessionInfo) other;
|
||||
return Intrinsics.areEqual(this.sessionId, sessionInfo.sessionId) && Intrinsics.areEqual(this.firstSessionId, sessionInfo.firstSessionId) && this.sessionIndex == sessionInfo.sessionIndex && this.eventTimestampUs == sessionInfo.eventTimestampUs && Intrinsics.areEqual(this.dataCollectionStatus, sessionInfo.dataCollectionStatus) && Intrinsics.areEqual(this.firebaseInstallationId, sessionInfo.firebaseInstallationId);
|
||||
}
|
||||
|
||||
public final DataCollectionStatus getDataCollectionStatus() {
|
||||
return this.dataCollectionStatus;
|
||||
}
|
||||
|
||||
public final long getEventTimestampUs() {
|
||||
return this.eventTimestampUs;
|
||||
}
|
||||
|
||||
public final String getFirebaseInstallationId() {
|
||||
return this.firebaseInstallationId;
|
||||
}
|
||||
|
||||
public final String getFirstSessionId() {
|
||||
return this.firstSessionId;
|
||||
}
|
||||
|
||||
public final String getSessionId() {
|
||||
return this.sessionId;
|
||||
}
|
||||
|
||||
public final int getSessionIndex() {
|
||||
return this.sessionIndex;
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return this.firebaseInstallationId.hashCode() + ((this.dataCollectionStatus.hashCode() + com.google.android.gms.measurement.internal.a.b(this.eventTimestampUs, w.x(this.sessionIndex, com.google.android.gms.measurement.internal.a.d(this.firstSessionId, this.sessionId.hashCode() * 31, 31), 31), 31)) * 31);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder("SessionInfo(sessionId=");
|
||||
sb.append(this.sessionId);
|
||||
sb.append(", firstSessionId=");
|
||||
sb.append(this.firstSessionId);
|
||||
sb.append(", sessionIndex=");
|
||||
sb.append(this.sessionIndex);
|
||||
sb.append(", eventTimestampUs=");
|
||||
sb.append(this.eventTimestampUs);
|
||||
sb.append(", dataCollectionStatus=");
|
||||
sb.append(this.dataCollectionStatus);
|
||||
sb.append(", firebaseInstallationId=");
|
||||
return com.google.android.gms.measurement.internal.a.n(sb, this.firebaseInstallationId, ')');
|
||||
}
|
||||
|
||||
public /* synthetic */ SessionInfo(String str, String str2, int i, long j4, DataCollectionStatus dataCollectionStatus, String str3, int i4, DefaultConstructorMarker defaultConstructorMarker) {
|
||||
this(str, str2, i, j4, (i4 & 16) != 0 ? new DataCollectionStatus(null, null, FirebaseRemoteConfig.DEFAULT_VALUE_FOR_DOUBLE, 7, null) : dataCollectionStatus, (i4 & 32) != 0 ? "" : str3);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user