Last active
January 13, 2023 09:18
-
-
Save obfusk/c7a56eb29e8dd2d64db110b50ed41c69 to your computer and use it in GitHub Desktop.
-> https://github.com/obfusk/reproducible-apk-tools | dump resources.arsc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/python3 | |
| # SPDX-FileCopyrightText: 2023 FC Stegerman <[email protected]> | |
| # SPDX-License-Identifier: AGPL-3.0-or-later | |
| import argparse | |
| import os | |
| import subprocess | |
| import tempfile | |
| import zipfile | |
| AXML = ( | |
| b"\x03\x00\x08\x00\xf0\x03\x00\x00\x01\x00\x1c\x00l\x02\x00\x00" | |
| b"\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00\x00\x00" | |
| b"\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x008\x00\x00\x00R\x00\x00\x00" | |
| b"v\x00\x00\x00\x9c\x00\x00\x00\xd2\x00\x00\x00\xd8\x00\x00\x00" | |
| b"\xe8\x00\x00\x00\xfa\x00\x00\x00\x14\x01\x00\x00l\x01\x00\x00" | |
| b"\x80\x01\x00\x00\x92\x01\x00\x00\xc6\x01\x00\x00\xfa\x01\x00\x00\r\x00m\x00" | |
| b"i\x00n\x00S\x00d\x00k\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00\x0b\x00" | |
| b"v\x00e\x00r\x00s\x00i\x00o\x00n\x00C\x00o\x00d\x00e\x00\x00\x00\x0b\x00v\x00" | |
| b"e\x00r\x00s\x00i\x00o\x00n\x00N\x00a\x00m\x00e\x00\x00\x00\x10\x00t\x00a\x00" | |
| b"r\x00g\x00e\x00t\x00S\x00d\x00k\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00" | |
| b"\x00\x00\x11\x00c\x00o\x00m\x00p\x00i\x00l\x00e\x00S\x00d\x00k\x00V\x00e\x00" | |
| b"r\x00s\x00i\x00o\x00n\x00\x00\x00\x19\x00c\x00o\x00m\x00p\x00i\x00l\x00e\x00" | |
| b"S\x00d\x00k\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00C\x00o\x00d\x00e\x00" | |
| b"n\x00a\x00m\x00e\x00\x00\x00\x01\x001\x00\x00\x00\x06\x001\x000\x00.\x00" | |
| b"0\x00.\x000\x00\x00\x00\x07\x00a\x00n\x00d\x00r\x00o\x00i\x00d\x00" | |
| b"\x00\x00\x0b\x00c\x00o\x00m\x00.\x00e\x00x\x00a\x00m\x00p\x00l\x00" | |
| b"e\x00\x00\x00*\x00h\x00t\x00t\x00p\x00:\x00/\x00/\x00s\x00c\x00h\x00e\x00" | |
| b"m\x00a\x00s\x00.\x00a\x00n\x00d\x00r\x00o\x00i\x00d\x00.\x00c\x00o\x00" | |
| b"m\x00/\x00a\x00p\x00k\x00/\x00r\x00e\x00s\x00/\x00a\x00n\x00d\x00r\x00" | |
| b"o\x00i\x00d\x00\x00\x00\x08\x00m\x00a\x00n\x00i\x00f\x00e\x00s\x00" | |
| b"t\x00\x00\x00\x07\x00p\x00a\x00c\x00k\x00a\x00g\x00e\x00\x00\x00\x18\x00" | |
| b"p\x00l\x00a\x00t\x00f\x00o\x00r\x00m\x00B\x00u\x00i\x00l\x00d\x00V\x00" | |
| b"e\x00r\x00s\x00i\x00o\x00n\x00C\x00o\x00d\x00e\x00\x00\x00\x18\x00p\x00l\x00" | |
| b"a\x00t\x00f\x00o\x00r\x00m\x00B\x00u\x00i\x00l\x00d\x00V\x00e\x00r\x00" | |
| b"s\x00i\x00o\x00n\x00N\x00a\x00m\x00e\x00\x00\x00\x08\x00u\x00s\x00e\x00s\x00" | |
| b"-\x00s\x00d\x00k\x00\x00\x00\x00\x00\x80\x01\x08\x00 \x00\x00\x00" | |
| b"\x0c\x02\x01\x01\x1b\x02\x01\x01\x1c\x02\x01\x01p\x02\x01\x01r\x05\x01\x01" | |
| b"s\x05\x01\x01\x00\x01\x10\x00\x18\x00\x00\x00\x01\x00\x00\x00" | |
| b"\xff\xff\xff\xff\x08\x00\x00\x00\n\x00\x00\x00\x02\x01\x10\x00" | |
| b"\xb0\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff" | |
| b"\x0b\x00\x00\x00\x14\x00\x14\x00\x07\x00\x00\x00\x00\x00\x00\x00" | |
| b"\n\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x08\x00\x00\x10" | |
| b"\x01\x00\x00\x00\n\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00" | |
| b"\x08\x00\x00\x03\x06\x00\x00\x00\n\x00\x00\x00\x04\x00\x00\x00" | |
| b"\xff\xff\xff\xff\x08\x00\x00\x10\x1d\x00\x00\x00\n\x00\x00\x00" | |
| b"\x05\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x03\x07\x00\x00\x00" | |
| b"\xff\xff\xff\xff\x0c\x00\x00\x00\t\x00\x00\x00\x08\x00\x00\x03\t\x00\x00\x00" | |
| b"\xff\xff\xff\xff\r\x00\x00\x00\xff\xff\xff\xff\x08\x00\x00\x10" | |
| b"\x1d\x00\x00\x00\xff\xff\xff\xff\x0e\x00\x00\x00\x07\x00\x00\x00" | |
| b"\x08\x00\x00\x03\x07\x00\x00\x00\x02\x01\x10\x00L\x00\x00\x00" | |
| b"\x02\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x00\x00" | |
| b"\x14\x00\x14\x00\x02\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00" | |
| b"\x00\x00\x00\x00\xff\xff\xff\xff\x08\x00\x00\x10\x15\x00\x00\x00" | |
| b"\n\x00\x00\x00\x03\x00\x00\x00\xff\xff\xff\xff\x08\x00\x00\x10" | |
| b"\x1d\x00\x00\x00\x03\x01\x10\x00\x18\x00\x00\x00\x02\x00\x00\x00" | |
| b"\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x00\x00\x03\x01\x10\x00" | |
| b"\x18\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff" | |
| b"\x0b\x00\x00\x00\x01\x01\x10\x00\x18\x00\x00\x00\x01\x00\x00\x00" | |
| b"\xff\xff\xff\xff\x08\x00\x00\x00\n\x00\x00\x00" | |
| ) | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(prog="dump-arsc.py") | |
| parser.add_argument("arsc", metavar="ARSC") | |
| args = parser.parse_args() | |
| with open(args.arsc, "rb") as fh: | |
| arsc = fh.read() | |
| with tempfile.TemporaryDirectory() as tdir: | |
| apk = os.path.join(tdir, "out.apk") | |
| with zipfile.ZipFile(apk, "w") as zf: | |
| zf.writestr("AndroidManifest.xml", AXML) | |
| zf.writestr("resources.arsc", arsc) | |
| aapt = ("aapt2", "dump", "resources", apk) | |
| subprocess.run(aapt, check=True, stderr=subprocess.PIPE) | |
| if __name__ == "__main__": | |
| main() | |
| # vim: set tw=80 sw=4 sts=4 et fdm=marker : |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment