Skip to main content

A Python tool to decompress .dat.br files and convert Android .dat/.transfer.list into .img disk images.

Project description

📦 SDAT2IMG Brotli

This Python script extracts and converts Android OTA update files—specifically .dat.br (Brotli compressed) and .transfer.list—into a usable .img disk image. This is especially useful for unpacking system, vendor, or product partitions from A/B OTA packages.


Changelog / Release Notes

v1.0.1 (2025-05-31)

  • Improved: Simplified library import. Users can now directly from sdat2img_brotli import convert_rom_files_function.

✨ Features

  • ✔️ Supports .dat.br files (Brotli compressed).
  • ✔️ Converts .dat + .transfer.list into a flashable .img.
  • ✔️ Automatic decompression of .dat.br and cleanup of temporary .dat files.
  • ✔️ Flexible input/output paths via command-line arguments (CLI).
  • ✔️ Defaults to current directory files if no arguments are provided for ease of use.
  • ✔️ User-friendly logs and error messages.

🚀 Installation

You can easily install sdat2img-brotli using pip:

pip install sdat2img-brotli

🔧 Requirements

  • Python 3.6 or higher.
  • The brotli Python module (automatically installed via pip).

📖 Usage

This script offers two convenient ways to run it:

1. Simple Run (Using Default Files)

If your system.new.dat.br and system.transfer.list files are in the same directory where you run the command, simply execute:

sdat2img-brotli

The tool will automatically:

  1. Decompress system.new.dat.br into system.new.dat.
  2. Convert system.new.dat and system.transfer.list into system.img.

2. Advanced Run (Using Command-Line Arguments)

For more flexibility, you can specify the paths for input files and the output filename using command-line arguments. This is ideal for processing files not in the current directory or for renaming the output.

sdat2img-brotli -d <path_to_dat_br_file> -t <path_to_transfer_list_file> -o <output_img_name>

Arguments:

  • -d or --datbr: Specifies the path to the .dat.br input file.
    • Example: -d "C:\roms\my_system.new.dat.br"
    • Default: system.new.dat.br
  • -t or --transferlist: Specifies the path to the .transfer.list input file.
    • Example: -t "C:\roms\my_system.transfer.list"
    • Default: system.transfer.list
  • -o or --outputimg: Specifies the name and path for the output .img file.
    • Example: -o "extracted_system.img"
    • Default: system.img

Practical Examples:

  • Convert a vendor partition located in a specific folder:
    sdat2img-brotli -d "D:\OTA\vendor.new.dat.br" -t "D:\OTA\vendor.transfer.list" -o "vendor.img"
    
  • Generate an img with a custom name in the current directory:
    sdat2img-brotli -o "my_custom_system.img"
    
  • Get help and see all available options:
    sdat2img-brotli --help
    

3. Usage as a Python Library

You can also import and use the core conversion function in your own Python projects:

from sdat2img_brotli.main import convert_rom_files_function

# Example 1: Use default files (system.new.dat.br, system.transfer.list, system.img)
print("--- Starting conversion with default files ---")
success_default = convert_rom_files_function()
if success_default:
    print("Default conversion successful! 🎉")
else:
    print("Default conversion failed! ❌")

print("\n" + "="*50 + "\n")

# Example 2: Specify custom file paths
print("--- Starting conversion with custom files ---")
my_datbr_path = "path/to/your/custom_rom.new.dat.br" # Replace with your actual path
my_transfer_list_path = "path/to/your/custom_rom.transfer.list" # Replace with your actual path
my_output_image_name = "custom_extracted_image.img"

success_custom = convert_rom_files_function(
    datbr_path=my_datbr_path,
    transferlist_path=my_transfer_list_path,
    output_img_name=my_output_image_name
)

if success_custom:
    print(f"Custom conversion successful! Output: {my_output_image_name} 🎉")
else:
    print("Custom conversion failed! ❌")

Note: When using as a library, ensure the input files (.dat.br and .transfer.list) exist at the specified paths.


📁 Output

Upon successful conversion, a .img file (e.g., system.img, vendor.img) will be generated. This is a raw disk image that can be opened and explored with various tools, such as:

  • 7-Zip
  • DiskGenius
  • Linux Reader (for Windows)
  • mount command (on Linux)
  • Other ext4 filesystem tools on Linux

🙏 Credits


📄 License

This script is open-source and released under the MIT License. Use it freely and feel free to contribute!


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdat2img-brotli-1.0.1.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sdat2img_brotli-1.0.1-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file sdat2img-brotli-1.0.1.tar.gz.

File metadata

  • Download URL: sdat2img-brotli-1.0.1.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.6

File hashes

Hashes for sdat2img-brotli-1.0.1.tar.gz
Algorithm Hash digest
SHA256 c0b8e7c50284d8e97d1c409b32ad53a1e77bbd96f5b91c512116f67157b8742e
MD5 6f1445ab18b2ebd57a78861ae8d7b6ad
BLAKE2b-256 306b41b03c07cbfd9980a78565b23e86750dfe92bc73c971c8a47e870534fa46

See more details on using hashes here.

File details

Details for the file sdat2img_brotli-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sdat2img_brotli-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 939c747afa277ec07ca304332ef3a575bde4150054cca989be53853c6ef75c98
MD5 c0602692acf436978295cdf2627fcad0
BLAKE2b-256 cebd1f8e33d68fb6d4bcbe886a25eaea0a73ab33ea98db6b51cd285e252cb4de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page