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,484 @@
package com.google.firebase.dynamiclinks;
import android.net.Uri;
import android.os.Bundle;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.dynamiclinks.internal.FirebaseDynamicLinksImpl;
/* loaded from: classes3.dex */
public final class DynamicLink {
private final Bundle builderParameters;
/* loaded from: classes3.dex */
public static final class AndroidParameters {
public static final String KEY_ANDROID_FALLBACK_LINK = "afl";
public static final String KEY_ANDROID_MIN_VERSION_CODE = "amv";
public static final String KEY_ANDROID_PACKAGE_NAME = "apn";
final Bundle parameters;
private AndroidParameters(Bundle bundle) {
this.parameters = bundle;
}
/* loaded from: classes3.dex */
public static final class Builder {
private final Bundle parameters;
public Builder() {
if (FirebaseApp.getInstance() != null) {
Bundle bundle = new Bundle();
this.parameters = bundle;
bundle.putString(AndroidParameters.KEY_ANDROID_PACKAGE_NAME, FirebaseApp.getInstance().getApplicationContext().getPackageName());
return;
}
throw new IllegalStateException("FirebaseApp not initialized.");
}
public AndroidParameters build() {
return new AndroidParameters(this.parameters);
}
public Uri getFallbackUrl() {
Uri uri = (Uri) this.parameters.getParcelable(AndroidParameters.KEY_ANDROID_FALLBACK_LINK);
return uri == null ? Uri.EMPTY : uri;
}
public int getMinimumVersion() {
return this.parameters.getInt(AndroidParameters.KEY_ANDROID_MIN_VERSION_CODE);
}
public Builder setFallbackUrl(Uri uri) {
this.parameters.putParcelable(AndroidParameters.KEY_ANDROID_FALLBACK_LINK, uri);
return this;
}
public Builder setMinimumVersion(int i) {
this.parameters.putInt(AndroidParameters.KEY_ANDROID_MIN_VERSION_CODE, i);
return this;
}
public Builder(String str) {
Bundle bundle = new Bundle();
this.parameters = bundle;
bundle.putString(AndroidParameters.KEY_ANDROID_PACKAGE_NAME, str);
}
}
}
/* loaded from: classes3.dex */
public static final class GoogleAnalyticsParameters {
public static final String KEY_UTM_CAMPAIGN = "utm_campaign";
public static final String KEY_UTM_CONTENT = "utm_content";
public static final String KEY_UTM_MEDIUM = "utm_medium";
public static final String KEY_UTM_SOURCE = "utm_source";
public static final String KEY_UTM_TERM = "utm_term";
Bundle parameters;
/* loaded from: classes3.dex */
public static final class Builder {
private final Bundle parameters;
public Builder() {
this.parameters = new Bundle();
}
public GoogleAnalyticsParameters build() {
return new GoogleAnalyticsParameters(this.parameters);
}
public String getCampaign() {
return this.parameters.getString("utm_campaign", "");
}
public String getContent() {
return this.parameters.getString(GoogleAnalyticsParameters.KEY_UTM_CONTENT, "");
}
public String getMedium() {
return this.parameters.getString("utm_medium", "");
}
public String getSource() {
return this.parameters.getString("utm_source", "");
}
public String getTerm() {
return this.parameters.getString(GoogleAnalyticsParameters.KEY_UTM_TERM, "");
}
public Builder setCampaign(String str) {
this.parameters.putString("utm_campaign", str);
return this;
}
public Builder setContent(String str) {
this.parameters.putString(GoogleAnalyticsParameters.KEY_UTM_CONTENT, str);
return this;
}
public Builder setMedium(String str) {
this.parameters.putString("utm_medium", str);
return this;
}
public Builder setSource(String str) {
this.parameters.putString("utm_source", str);
return this;
}
public Builder setTerm(String str) {
this.parameters.putString(GoogleAnalyticsParameters.KEY_UTM_TERM, str);
return this;
}
public Builder(String str, String str2, String str3) {
Bundle bundle = new Bundle();
this.parameters = bundle;
bundle.putString("utm_source", str);
bundle.putString("utm_medium", str2);
bundle.putString("utm_campaign", str3);
}
}
private GoogleAnalyticsParameters(Bundle bundle) {
this.parameters = bundle;
}
}
/* loaded from: classes3.dex */
public static final class IosParameters {
public static final String KEY_IOS_APP_STORE_ID = "isi";
public static final String KEY_IOS_BUNDLE_ID = "ibi";
public static final String KEY_IOS_CUSTOM_SCHEME = "ius";
public static final String KEY_IOS_FALLBACK_LINK = "ifl";
public static final String KEY_IOS_MINIMUM_VERSION = "imv";
public static final String KEY_IPAD_BUNDLE_ID = "ipbi";
public static final String KEY_IPAD_FALLBACK_LINK = "ipfl";
final Bundle parameters;
/* loaded from: classes3.dex */
public static final class Builder {
private final Bundle parameters;
public Builder(String str) {
Bundle bundle = new Bundle();
this.parameters = bundle;
bundle.putString(IosParameters.KEY_IOS_BUNDLE_ID, str);
}
public IosParameters build() {
return new IosParameters(this.parameters);
}
public String getAppStoreId() {
return this.parameters.getString(IosParameters.KEY_IOS_APP_STORE_ID, "");
}
public String getCustomScheme() {
return this.parameters.getString(IosParameters.KEY_IOS_CUSTOM_SCHEME, "");
}
public String getIpadBundleId() {
return this.parameters.getString(IosParameters.KEY_IPAD_BUNDLE_ID, "");
}
public Uri getIpadFallbackUrl() {
Uri uri = (Uri) this.parameters.getParcelable(IosParameters.KEY_IPAD_FALLBACK_LINK);
return uri == null ? Uri.EMPTY : uri;
}
public String getMinimumVersion() {
return this.parameters.getString(IosParameters.KEY_IOS_MINIMUM_VERSION, "");
}
public Builder setAppStoreId(String str) {
this.parameters.putString(IosParameters.KEY_IOS_APP_STORE_ID, str);
return this;
}
public Builder setCustomScheme(String str) {
this.parameters.putString(IosParameters.KEY_IOS_CUSTOM_SCHEME, str);
return this;
}
public Builder setFallbackUrl(Uri uri) {
this.parameters.putParcelable(IosParameters.KEY_IOS_FALLBACK_LINK, uri);
return this;
}
public Builder setIpadBundleId(String str) {
this.parameters.putString(IosParameters.KEY_IPAD_BUNDLE_ID, str);
return this;
}
public Builder setIpadFallbackUrl(Uri uri) {
this.parameters.putParcelable(IosParameters.KEY_IPAD_FALLBACK_LINK, uri);
return this;
}
public Builder setMinimumVersion(String str) {
this.parameters.putString(IosParameters.KEY_IOS_MINIMUM_VERSION, str);
return this;
}
}
private IosParameters(Bundle bundle) {
this.parameters = bundle;
}
}
/* loaded from: classes3.dex */
public static final class ItunesConnectAnalyticsParameters {
public static final String KEY_ITUNES_CONNECT_AT = "at";
public static final String KEY_ITUNES_CONNECT_CT = "ct";
public static final String KEY_ITUNES_CONNECT_PT = "pt";
final Bundle parameters;
/* loaded from: classes3.dex */
public static final class Builder {
private final Bundle parameters = new Bundle();
public ItunesConnectAnalyticsParameters build() {
return new ItunesConnectAnalyticsParameters(this.parameters);
}
public String getAffiliateToken() {
return this.parameters.getString(ItunesConnectAnalyticsParameters.KEY_ITUNES_CONNECT_AT, "");
}
public String getCampaignToken() {
return this.parameters.getString(ItunesConnectAnalyticsParameters.KEY_ITUNES_CONNECT_CT, "");
}
public String getProviderToken() {
return this.parameters.getString(ItunesConnectAnalyticsParameters.KEY_ITUNES_CONNECT_PT, "");
}
public Builder setAffiliateToken(String str) {
this.parameters.putString(ItunesConnectAnalyticsParameters.KEY_ITUNES_CONNECT_AT, str);
return this;
}
public Builder setCampaignToken(String str) {
this.parameters.putString(ItunesConnectAnalyticsParameters.KEY_ITUNES_CONNECT_CT, str);
return this;
}
public Builder setProviderToken(String str) {
this.parameters.putString(ItunesConnectAnalyticsParameters.KEY_ITUNES_CONNECT_PT, str);
return this;
}
}
private ItunesConnectAnalyticsParameters(Bundle bundle) {
this.parameters = bundle;
}
}
/* loaded from: classes3.dex */
public static final class NavigationInfoParameters {
public static final String KEY_FORCED_REDIRECT = "efr";
final Bundle parameters;
/* loaded from: classes3.dex */
public static final class Builder {
private final Bundle parameters = new Bundle();
public NavigationInfoParameters build() {
return new NavigationInfoParameters(this.parameters);
}
public boolean getForcedRedirectEnabled() {
return this.parameters.getInt(NavigationInfoParameters.KEY_FORCED_REDIRECT) == 1;
}
public Builder setForcedRedirectEnabled(boolean z3) {
this.parameters.putInt(NavigationInfoParameters.KEY_FORCED_REDIRECT, z3 ? 1 : 0);
return this;
}
}
private NavigationInfoParameters(Bundle bundle) {
this.parameters = bundle;
}
}
/* loaded from: classes3.dex */
public static final class SocialMetaTagParameters {
public static final String KEY_SOCIAL_DESCRIPTION = "sd";
public static final String KEY_SOCIAL_IMAGE_LINK = "si";
public static final String KEY_SOCIAL_TITLE = "st";
final Bundle parameters;
/* loaded from: classes3.dex */
public static final class Builder {
private final Bundle parameters = new Bundle();
public SocialMetaTagParameters build() {
return new SocialMetaTagParameters(this.parameters);
}
public String getDescription() {
return this.parameters.getString(SocialMetaTagParameters.KEY_SOCIAL_DESCRIPTION, "");
}
public Uri getImageUrl() {
Uri uri = (Uri) this.parameters.getParcelable(SocialMetaTagParameters.KEY_SOCIAL_IMAGE_LINK);
return uri == null ? Uri.EMPTY : uri;
}
public String getTitle() {
return this.parameters.getString("st", "");
}
public Builder setDescription(String str) {
this.parameters.putString(SocialMetaTagParameters.KEY_SOCIAL_DESCRIPTION, str);
return this;
}
public Builder setImageUrl(Uri uri) {
this.parameters.putParcelable(SocialMetaTagParameters.KEY_SOCIAL_IMAGE_LINK, uri);
return this;
}
public Builder setTitle(String str) {
this.parameters.putString("st", str);
return this;
}
}
private SocialMetaTagParameters(Bundle bundle) {
this.parameters = bundle;
}
}
public DynamicLink(Bundle bundle) {
this.builderParameters = bundle;
}
public Uri getUri() {
return FirebaseDynamicLinksImpl.createDynamicLink(this.builderParameters);
}
/* loaded from: classes3.dex */
public static final class Builder {
private static final String APP_GOO_GL_PATTERN = "(https:\\/\\/)?[a-z0-9]{3,}\\.app\\.goo\\.gl$";
public static final String KEY_API_KEY = "apiKey";
public static final String KEY_DOMAIN = "domain";
public static final String KEY_DOMAIN_URI_PREFIX = "domainUriPrefix";
public static final String KEY_DYNAMIC_LINK = "dynamicLink";
public static final String KEY_DYNAMIC_LINK_PARAMETERS = "parameters";
public static final String KEY_LINK = "link";
public static final String KEY_SUFFIX = "suffix";
private static final String PAGE_LINK_PATTERN = "(https:\\/\\/)?[a-z0-9]{3,}\\.page\\.link$";
private static final String SCHEME_PREFIX = "https://";
private final Bundle builderParameters;
private final Bundle fdlParameters;
private final FirebaseDynamicLinksImpl firebaseDynamicLinksImpl;
public Builder(FirebaseDynamicLinksImpl firebaseDynamicLinksImpl) {
this.firebaseDynamicLinksImpl = firebaseDynamicLinksImpl;
Bundle bundle = new Bundle();
this.builderParameters = bundle;
bundle.putString(KEY_API_KEY, firebaseDynamicLinksImpl.getFirebaseApp().getOptions().getApiKey());
Bundle bundle2 = new Bundle();
this.fdlParameters = bundle2;
bundle.putBundle(KEY_DYNAMIC_LINK_PARAMETERS, bundle2);
}
private void verifyApiKey() {
if (this.builderParameters.getString(KEY_API_KEY) == null) {
throw new IllegalArgumentException("Missing API key. Set with setApiKey().");
}
}
public DynamicLink buildDynamicLink() {
FirebaseDynamicLinksImpl.verifyDomainUriPrefix(this.builderParameters);
return new DynamicLink(this.builderParameters);
}
public Task<ShortDynamicLink> buildShortDynamicLink() {
verifyApiKey();
return this.firebaseDynamicLinksImpl.createShortDynamicLink(this.builderParameters);
}
public String getDomainUriPrefix() {
return this.builderParameters.getString(KEY_DOMAIN_URI_PREFIX, "");
}
public Uri getLink() {
Uri uri = (Uri) this.fdlParameters.getParcelable(KEY_LINK);
return uri == null ? Uri.EMPTY : uri;
}
public Uri getLongLink() {
Uri uri = (Uri) this.fdlParameters.getParcelable(KEY_DYNAMIC_LINK);
return uri == null ? Uri.EMPTY : uri;
}
public Builder setAndroidParameters(AndroidParameters androidParameters) {
this.fdlParameters.putAll(androidParameters.parameters);
return this;
}
public Builder setDomainUriPrefix(String str) {
if (str.matches(APP_GOO_GL_PATTERN) || str.matches(PAGE_LINK_PATTERN)) {
this.builderParameters.putString(KEY_DOMAIN, str.replace(SCHEME_PREFIX, ""));
}
this.builderParameters.putString(KEY_DOMAIN_URI_PREFIX, str);
return this;
}
@Deprecated
public Builder setDynamicLinkDomain(String str) {
if (!str.matches(APP_GOO_GL_PATTERN) && !str.matches(PAGE_LINK_PATTERN)) {
throw new IllegalArgumentException("Use setDomainUriPrefix() instead, setDynamicLinkDomain() is only applicable for *.page.link and *.app.goo.gl domains.");
}
this.builderParameters.putString(KEY_DOMAIN, str);
this.builderParameters.putString(KEY_DOMAIN_URI_PREFIX, SCHEME_PREFIX.concat(str));
return this;
}
public Builder setGoogleAnalyticsParameters(GoogleAnalyticsParameters googleAnalyticsParameters) {
this.fdlParameters.putAll(googleAnalyticsParameters.parameters);
return this;
}
public Builder setIosParameters(IosParameters iosParameters) {
this.fdlParameters.putAll(iosParameters.parameters);
return this;
}
public Builder setItunesConnectAnalyticsParameters(ItunesConnectAnalyticsParameters itunesConnectAnalyticsParameters) {
this.fdlParameters.putAll(itunesConnectAnalyticsParameters.parameters);
return this;
}
public Builder setLink(Uri uri) {
this.fdlParameters.putParcelable(KEY_LINK, uri);
return this;
}
public Builder setLongLink(Uri uri) {
this.builderParameters.putParcelable(KEY_DYNAMIC_LINK, uri);
return this;
}
public Builder setNavigationInfoParameters(NavigationInfoParameters navigationInfoParameters) {
this.fdlParameters.putAll(navigationInfoParameters.parameters);
return this;
}
public Builder setSocialMetaTagParameters(SocialMetaTagParameters socialMetaTagParameters) {
this.fdlParameters.putAll(socialMetaTagParameters.parameters);
return this;
}
public Task<ShortDynamicLink> buildShortDynamicLink(int i) {
verifyApiKey();
this.builderParameters.putInt(KEY_SUFFIX, i);
return this.firebaseDynamicLinksImpl.createShortDynamicLink(this.builderParameters);
}
}
}