{"id":42557429,"url":"https://github.com/bartlomiejduda/ReverseBox","last_synced_at":"2026-02-20T03:00:26.659Z","repository":{"id":39731089,"uuid":"504961679","full_name":"bartlomiejduda/ReverseBox","owner":"bartlomiejduda","description":"ReverseBox is a Python package with a set of functions useful in reverse engineering.","archived":false,"fork":false,"pushed_at":"2026-01-19T21:21:14.000Z","size":13075,"stargazers_count":48,"open_issues_count":1,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-18T04:19:17.733Z","etag":null,"topics":["checksum","cipher","compression","crc","encryption","engineering","hash","modding","modding-tools","python","reverse","reverse-engineering","reversebox","xentax"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bartlomiejduda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://buycoffee.to/ikskoks","https://www.paypal.me/kolatek55"]}},"created_at":"2022-06-18T22:17:35.000Z","updated_at":"2026-02-17T21:30:47.000Z","dependencies_parsed_at":"2024-04-14T23:29:13.507Z","dependency_job_id":"bcf9c146-f9c6-45b5-a45d-c5b7dc89b86c","html_url":"https://github.com/bartlomiejduda/ReverseBox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bartlomiejduda/ReverseBox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartlomiejduda%2FReverseBox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartlomiejduda%2FReverseBox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartlomiejduda%2FReverseBox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartlomiejduda%2FReverseBox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bartlomiejduda","download_url":"https://codeload.github.com/bartlomiejduda/ReverseBox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartlomiejduda%2FReverseBox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29639808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"online","status_checked_at":"2026-02-20T02:00:07.535Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checksum","cipher","compression","crc","encryption","engineering","hash","modding","modding-tools","python","reverse","reverse-engineering","reversebox","xentax"],"created_at":"2026-01-28T20:00:26.599Z","updated_at":"2026-02-20T03:00:26.654Z","avatar_url":"https://github.com/bartlomiejduda.png","language":"Python","funding_links":["https://buycoffee.to/ikskoks","https://www.paypal.me/kolatek55"],"categories":["🛠️ General Tools"],"sub_categories":["💻 Development Libraries"],"readme":"# Info\n\n**ReverseBox** is a Python package with a set of functions\nuseful in software reverse engineering.\n\n**Why ReverseBox?** \u003cbr\u003e\nIt's designed to help with:\n1. Decompressing / compressing data\n2. Decrypting / encrypting data\n3. Tedious reverse engineering tasks\ne.g. testing different checksum algorithms to find the one that was\nused in the software or file format\n4. Figuring out file formats\n5. Parsing data structures\n6. Wrapping functions for input/output operations\n7. Searching for raw images\n\n**Who should use ReverseBox?** \u003cbr\u003e\nMostly developers and reverse engineers (e.g. file format researchers\nor software researchers).\n\n# List of functionalities\n\n* Checksum\n  - Adler32 ✔️\n  - Cocos2d PVR ✔️\n  - Fletcher16 ✔️\n  - Fletcher32 ✔️\n  - Internet Checksum / IPv4 header checksum ✔️\n  - Sum8 ✔️\n  - Sum8 2s Complement ✔️\n  - Unix Sum BSD16 ✔️\n  - Unix Sum SYSV ✔️\n  - Xor8 ✔️\n\n* CRC\n  - CRC-8 ✔️\n  - CRC-8/CDMA2000 ✔️\n  - CRC-8/DARC ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - CRC-16 (ARC) ✔️\n  - CRC-16 (Modbus) ✔️\n  - CRC-16 (Sick) ✔️\n  - CRC-16 (DNP) ✔️\n  - CRC-16 (EA CRCF) ✔️\n  - CRC-16-CCITT (XModem) ✔️\n  - CRC-16-CCITT (0xFFFF) ✔️\n  - CRC-16-CCITT (0x1D0F) ✔️\n  - CRC-16-CCITT (Kermit) ✔️\n  - CRC-32/CKSUM (Unix cksum) ✔️\n  - CRC-32 (ISO/HDLC) ✔️\n  - CRC-32 (Asobo) ✔️\n  - CRC-64 (Asobo) ✔️\n  - CRC-64/GO-ISO ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n\n* Compression\n  - Asobo (TODO) ❌\n  - BZE/BZZ (TODO) ❌\n  - BZIP2 ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - GZIP (TODO) ❌\n  - JCALG1 (TODO) ❌\n  - LZ4 ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - LZMA ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - LZO / LZO1X ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - LZSS (TODO) ❌\n  - MIO0 ✔️\n  - NitroSDK (TODO) ❌\n  - Oodle (TODO) ❌\n  - Refpack (EA Games) ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - RNC (TODO) ❌\n  - ZLIB ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - PS2 GS Texture Compression ✔️\n  - RLE TGA ✔️\n  - RLE TGA (reversed condition) ✔️\n  - PackBits (Macintosh RLE) ✔️\n  - (game-specific) Re:Tiyoruga DAT compression ✔️\n  - (game-specific) Intelligent Games Custom Huffman ✔️\n  - (game-specific) Executioners RLE ✔️\n  - (game-specific) Emergency RLE ✔️\n  - (game-specific) Neversoft RLE ✔️\n  - (game-specific) Tzar RLE ✔️\n  - (game-specific) Leapster RLE ✔️\n\n* Encryption\n  - AES (TODO) ❌\n  - DES (TODO) ❌\n  - Lucifer / DTD-1 (TODO) ❌\n  - ROT13 ✔️\n  - XOR Cipher (Basic) ✔️\n  - XOR Cipher (Basic) Guesser ✔️\n  - Hatch Engine Encryption ✔️\n  - (game-specific) XOR Cipher (Retro64 ECO) ✔️\n  - (game-specific) XOR Cipher (Giana’s Return ZDA) ✔️\n\n* Hash\n  - Additive Hash ✔️\n  - AP ✔️\n  - DJB2 ✔️\n  - RX3 ✔️\n  - FNV0-32 ✔️\n  - FNV0-64 ✔️\n  - FNV1-32 ✔️\n  - FNV1-64 ✔️\n  - FNV1A-32 ✔️\n  - FNV1A-64 ✔️\n  - Jenkins one-at-a-time ✔️\n  - SDBM ✔️\n  - SHA-1 ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - SHA-2 (256 bits) ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - MD2 ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - MD5 ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - Murmur3 ✔️ \u003cspan style=\"color:yellow\"\u003e(wrapper only)\u003c/span\u003e\n  - (game-specific) Hercules (TODO) ❌\n  - (game-specific) E-racer (TODO) ❌\n  - (game-specific) Pivotal Games DAT Hash ✔️\n\n* Image\n  - 3DS Swizzling/Twiddling ✔️\n  - CMPR Swizzling/Twiddling ✔️\n  - PS2 Swizzling/Twiddling ✔️\n  - PS2 Palette Swizzling/Twiddling ✔️\n  - PS4 Swizzling/Twiddling ✔️\n  - PS5 Swizzling/Twiddling ✔️\n  - PSP Swizzling/Twiddling ✔️\n  - PS Vita Swizzling/Twiddling ✔️\n  - XBOX 360 Swizzling/Twiddling ✔️\n  - GameCube/WII Swizzling/Twiddling ✔️\n  - Switch Swizzling/Twiddling ✔️\n  - WII U Swizzling/Twiddling ✔️\n  - XBOX/PS3 Swizzling/Twiddling (Morton Order) ✔️\n  - Dreamcast Swizzling/Twiddling (Morton Order) ✔️\n  - BC Swizzling/Twiddling ✔️\n  - PS2 GS Texture Swizzling/Twiddling ✔️\n  - Generating mipmaps ✔️\n  - Decoding and encoding images with pixel formats \u003cbr\u003ementioned in the following table:\n\n| Pixel Format           | Decode support      | Encode support      |\n|------------------------|---------------------|---------------------|\n| RGB121                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ALPHA4                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ALPHA4_17X             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| RGB121_BYTE            | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBA2222               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBX2222               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GRAY8                  | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ALPHA8                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ALPHA8_17X             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| LA44                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBX332 (RGB8)         | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BGRX332 (BGR8)         | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGB565                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGR565                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| RGBX5551               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| RGBT5551               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGRT5551               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBA5551               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGRA5551               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGRA5551_TZAR          | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BGRX5551               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBX6666               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBA6666               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGB888 (RGB24)         | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGR888 (BGR24)         | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ARGB4444               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBA4444               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ABGR4444               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| XBGR4444               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBX4444               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGRA4444               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGRA4444_LEAPSTER      | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BGRX4444               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| XRGB1555               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ARGB1555               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ABGR1555               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| XBGR1555               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| ARGB8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ABGR8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBA8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BGRA8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| XRGB8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGBX8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| XBGR8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BGRX8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BGRT8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BGRA8888_TZAR          | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RGB48                  | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BGR48                  | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| PAL4                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PAL8                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PAL8_TZAR              | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| PAL16                  | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| PAL32                  | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| PAL_I8A8               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| N64_RGB5A3             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| N64_BGR5A3             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| N64_I4 / GRAY4         | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| N64_I8 / GRAY8         | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| N64_IA4                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| N64_IA8                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| N64_RGBA32             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| N64_CMPR               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BC1/DXT1               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PSP_DXT1               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| DXT2                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BC2/DXT3               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PSP_DXT3               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| DXT4                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BC3/DXT5               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PSP_DXT5               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BC4                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BC5                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BC6                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BC7                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PVRTCI_2bpp_RGB        | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PVRTCI_2bpp_RGBA       | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PVRTCI_4bpp_RGB        | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PVRTCI_4bpp_RGBA       | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PVRTCII_2bpp           | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| PVRTCII_4bpp           | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ETC1                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BW1bpp                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| SharedExponentR9G9B9E5 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| RGBG8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| GRGB8888               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ETC2_RGB               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ETC2_RGBA              | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ETC2_RGB_A1            | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| EAC_R11                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| EAC_RG11               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_4x4               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_5x4               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_5x5               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_6x5               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_6x6               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_8x5               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_8x6               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_8x8               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_10x5              | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_10x6              | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_10x8              | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_10x10             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_12x10             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_12x12             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_3x3x3             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_4x3x3             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_4x4x3             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_4x4x4             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_5x4x4             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_5x5x4             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_5x5x5             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_6x5x5             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_6x6x5             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| ASTC_6x6x6             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BASISU_ETC1S           | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| BASISU_UASTC           | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| RGBM                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| RGBD                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e✔️\u003c/center\u003e |\n| GST121                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GST221                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GST421                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GST821                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GST122                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GST222                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GST422                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GST822                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUY2                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| NV12                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| NV21                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| UYVY                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUV444P                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUV410P                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUV420P                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUV422P                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUV411P                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| UYYVYY411              | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUV440P                | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| YUVA420P               | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| AYUV                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GRAY8A (LA88)          | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| GRAY16                 | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| RG88                   | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| R8                     | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| G8                     | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| B8                     | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| R16                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| G16                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| B16                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| R32                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| G32                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| B32                    | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n| BUMPMAP_SR             | \u003ccenter\u003e✔️\u003c/center\u003e | \u003ccenter\u003e❌\u003c/center\u003e  |\n\n\n* IO\n  - File Reader ✔️\n  - File Writer ✔️\n  - Bytes Handler ✔️\n  - Translation Text Handler ✔️\n  - Mod Handler ✔️\n  - File extension checking ✔️\n  - Padding calculation ✔️\n  - File size checking ✔️\n\n# Checksum calculation - example\n\n// CRC32 calculation\n```\nfrom reversebox.crc import crc32_iso_hdlc\nfrom reversebox.common import common\n\ntest_data = b'123456789'\ncrc32_handler = crc32_iso_hdlc.CRC32Handler()\ncrc32 = crc32_handler.calculate_crc32(test_data)\nprint(\"CRC32_INT: \", crc32)\nprint(\"CRC32_STR: \", common.convert_int_to_hex_string(crc32))\n```\n// CRC32 output\n```\nCRC32_INT:  3421780262\nCRC32_STR:  0xCBF43926\n```\n\n\n# XOR encryption - example\n\n// XOR Cipher (Basic)\n```\nfrom reversebox.encryption.encryption_xor_basic import xor_cipher_basic\n\n\ntest_data = b'abcd'\ntest_key = b'\\x3D'\nxor_result = xor_cipher_basic(test_data, test_key)\nprint(xor_result)\n```\n\n// XOR Cipher output\n```\nb'\\\\_^Y'\n```\n\n\n# File Handler - example\n\n// File reading\n```\nimport os\nfrom reversebox.io_files.file_handler import FileHandler\n\n\nfile_path = os.path.join(os.path.dirname(__file__), \"file.bin\")\nfile_reader = FileHandler(file_path, \"rb\")\nfile_reader.open()\nvalue = file_reader.read_str(4, \"utf8\")\nprint(value)\n```\n\n// File Reader Output\n```\nABCD\n```\n\n\n# Hash calculation - example\n\n// SHA-1 calculation\n```\nfrom reversebox.hash.hash_sha1 import SHA1Handler\n\ntest_data = b'abcd'\nsha1_handler = SHA1Handler()\nsha1 = sha1_handler.calculate_sha1_hash(test_data)\nprint(\"SHA-1 hash: \", sha1)\n```\n\n// SHA-1 Output\n```\nSHA-1 hash:  b'\\x81\\xfe\\x8b\\xfe\\x87Wl\u003e\\xcb\"Bo\\x8eW\\x84s\\x82\\x91z\\xcf'\n```\n\n# Image decoding - example\n\n// DXT1 compressed image decoding\n\n```\nfrom reversebox.image.image_decoder import ImageDecoder\nfrom reversebox.image.image_formats import ImageFormats\nfrom reversebox.image.pillow_wrapper import PillowWrapper\n\n\ndef show_img():\n    with open(\"image_data_dxt1_64x64.bin\", \"rb\") as f:\n        image_data = f.read()\n\n    img_width: int = 64\n    img_height: int = 64\n    decoder = ImageDecoder()\n    wrapper = PillowWrapper()\n    converted_data: bytes = decoder.decode_compressed_image(image_data, img_width, img_height, ImageFormats.BC1_DXT1)\n    pil_image = wrapper.get_pillow_image_from_rgba8888_data(converted_data, img_width, img_height)\n    pil_image.show()\n\n\nif __name__ == '__main__':\n    show_img()\n```\n\n\n# More Examples\n\nNeed more examples? \u003cbr\u003e\nCheck out list of tools written using ReverseBox:\n- [Giana's Return ZDA Tool](https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/Gianas%20Return/Gianas_Return_ZDA_Tool.py)\n- [ObsCure 2 HVP Extractor](https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/ObsCure%202/ObsCure%202%20HVP%20Tools/Obscure_2_hvp_extractor.py)\n- [Tail Concerto Translation Tools](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/Tail%20Concerto/Tail%20Concerto%20Tools)\n- [EA Graphics Manager](https://github.com/bartlomiejduda/EA-Graphics-Manager)\n- [Acclaim TRE Tool](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/Acclaim/Acclaim_TRE_Tool)\n- [F-Zero X TEX Tool](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/F-Zero%20X/TEX%20Tool)\n- [ImageHeat](https://github.com/bartlomiejduda/ImageHeat)\n- [Hatch Engine Archive Tool](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/Hatch%20Engine/Hatch%20Engine%20Archive%20Tool)\n- [ReverseBox Demo](https://github.com/bartlomiejduda/Tools/tree/master/ReverseBox_Demo)\n- [Super Galdelic Hour .egg texture extractor/converter](https://gist.github.com/boringhexi/e3f2e5ad98c39cdafa4913d7db23f81d)\n- and more...\n\n# Badges\n![PyPI Downloads](https://static.pepy.tech/badge/reversebox)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/ReverseBox)\n![GitHub License](https://img.shields.io/github/license/bartlomiejduda/ReverseBox)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/y/bartlomiejduda/ReverseBox)\n![GitHub repo size](https://img.shields.io/github/repo-size/bartlomiejduda/ReverseBox)\n![PyPI - Version](https://img.shields.io/pypi/v/ReverseBox)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartlomiejduda%2FReverseBox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbartlomiejduda%2FReverseBox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartlomiejduda%2FReverseBox/lists"}