Skip to main content

FireBased

A based implementation of the Firebase API. This project is a partial wrapper around the Firebase API.

With just the teeniest bit of extra work, you can hook this up like someone did in Push-Server to a REST API and have a full-fledged push notification server.

Privacy Notice

Note that App developers CANNOT see the device you used to register with. Therefore, the device you register the FCM token with does not need to match the device you actually use the token with. However, once you have associated an FCM token with a given device, at this point, the app developer CAN save that association.

Note From The Creator

If you are using this, you are a developer. You know what you are doing. I am not responsible for any misuse of this software. I am not responsible for any bans or other actions taken against accounts using this software.

If you are hiring, e-mail isaacikogan@gmail.com. Let's chat :)! If not, say hi anwyways!

Helpful Tips

There are only a few identifiers you need to make requests. All of them can be found in the APK of the app you want to register firebase for:

  • google_api_key e.g. "AIzaSyA1b2C3dE4f5G6H7I8J9K0LmNOpQrStUvWx"
  • google_app_id e.g. "1:123456789012:android:abcdefghijklm1234567"
  • google_app_package e.g. "com.example.app"
  • google_app_name e.g. "api-project-123456789012"
  • google_android_cert e.g. "12345678A1B2C3D4E5F6G7H8I9J0KLMNOPQRSTU"

For your convenience, here is a basic example script that can generate a GCM token:

import asyncio

from FireBased.client.client import FireBasedClient
from FireBased.client.proto import CheckInRequestMessage, CheckInResponseMessage
from FireBased.client.schemas import RegisterInstallRequestBody, RegisterInstallRequestBodyJsonBody, RegisterGcmRequestBody, FirebaseInstallationRequestResponse, RegisterGcmRequestResponse
from FireBased.ext.synthetic_data import create_synthetic_check_in, create_mobile_user_agent

google_api_key = "AIzaSyA1b2C3dE4f5G6H7I8J9K0LmNOpQrStUvWx"  # Firebase API key
google_app_id = "1:123456789012:android:abcdefghijklm1234567"  # Firebase app ID
google_app_package = "com.example.app"  # Package name of the Android app
google_app_name = "api-project-123456789012"  # Firebase app name
google_android_cert = "12345678A1B2C3D4E5F6G7H8I9J0KLMNOPQRSTU"  # Sha-1 APK signing cert


async def generate_gcm_token() -> str:
    # Starts an HTTP client under the hood. Best to use in an async context manager for safety.
    async with FireBasedClient() as fb:
        # Create a synthetic check-in payload.
        # Note that according to ChatGPT, developers can't access the data you send here.
        # All they can really check is the Firebase ID, GCM token, and the Android ID.
        check_in_payload: CheckInRequestMessage = create_synthetic_check_in()
        check_in_response: CheckInResponseMessage = await fb.check_in(body=check_in_payload)

        # Create the installation registration payload
        register_install_payload: RegisterInstallRequestBody = RegisterInstallRequestBody(
            app_public_key=google_api_key,
            app_package=google_app_package,
            app_name=google_app_name,
            json_body=RegisterInstallRequestBodyJsonBody(appId=google_app_id),
            user_agent=create_mobile_user_agent(),
            app_cert=google_android_cert
        )

        # Register the installation
        install_data: FirebaseInstallationRequestResponse = await fb.register_install(
            body=register_install_payload
        )

        # Finally, register the GCM token using the data from the previous requests
        gcm_response: RegisterGcmRequestResponse = await fb.register_gcm(
            body=RegisterGcmRequestBody.from_models(
                install_request_body=register_install_payload,
                install_request_response=install_data,
                check_in_request_response=check_in_response
            )
        )

        return gcm_response.token


if __name__ == '__main__':
    gcm_token: str = asyncio.run(generate_gcm_token())
    print(f"Generated GCM token: {gcm_token}")

Latest pertinent data is found at https://github.com/firebase/firebase-js-sdk

Contributors

  • Isaac Kogan - Creator, Primary Maintainer, and Reverse-Engineering - isaackogan
  • Lastrise - Reverse-Engineering - lastrise

See also the full list of contributors who have participated in this project.

License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

Metadata

Release files for FireBased 0.0.3.post3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for FireBased 0.0.3.post3
File Size Uploaded
firebased-0.0.3.post3.tar.gz 32.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for FireBased 0.0.3.post3
File Interpreter ABI Platform
firebased-0.0.3.post3-py3-none-any.whl Python 3 none any Details

Total release size: 64.5 kB

Release files / firebased-0.0.3.post3.tar.gz

Download URL firebased-0.0.3.post3.tar.gz
Size 32.5 kB
Tags Source
SHA-256 checksum
How to use checksums
764abe4c8ae28ba2769919c106f61fb64c70a49b5be5d81330df5c3aab68fe41
BLAKE2b-256 checksum
How to use checksums
d22c3204be5122f54a70b7a4c3318b7c54f3bd70d8f29d5546a5225e116a0535
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release files / firebased-0.0.3.post3-py3-none-any.whl

Download URL firebased-0.0.3.post3-py3-none-any.whl
Size 32.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
66942695137070f6c80d49950644402765deec5915758833a430e67e7b1fadec
BLAKE2b-256 checksum
How to use checksums
0db34c5f1984543c6252a239ccec98f5d3222e00ee4afb7d1d0434aeb65b09bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.0.3.post3 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page