ReverseBox 0.6.7__tar.gz → 0.24.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. reversebox-0.24.2/PKG-INFO +403 -0
  2. reversebox-0.24.2/README.md +367 -0
  3. reversebox-0.24.2/ReverseBox.egg-info/PKG-INFO +403 -0
  4. reversebox-0.24.2/ReverseBox.egg-info/SOURCES.txt +113 -0
  5. {ReverseBox-0.6.7 → reversebox-0.24.2}/ReverseBox.egg-info/requires.txt +3 -0
  6. {ReverseBox-0.6.7 → reversebox-0.24.2}/ReverseBox.egg-info/top_level.txt +0 -1
  7. reversebox-0.24.2/reversebox/checksum/checksum_cocos2d_pvr.py +29 -0
  8. reversebox-0.24.2/reversebox/checksum/checksum_internet_ipv4_header.py +27 -0
  9. reversebox-0.24.2/reversebox/checksum/checksum_sum8.py +16 -0
  10. reversebox-0.24.2/reversebox/checksum/checksum_sum8_2s_complement.py +16 -0
  11. ReverseBox-0.6.7/reversebox/checksum/checksum_bsd16.py → reversebox-0.24.2/reversebox/checksum/checksum_unix_sum_bsd16.py +2 -2
  12. reversebox-0.24.2/reversebox/checksum/checksum_unix_sum_sysv.py +20 -0
  13. reversebox-0.24.2/reversebox/checksum/checksum_xor8.py +16 -0
  14. reversebox-0.24.2/reversebox/common/common.py +80 -0
  15. reversebox-0.24.2/reversebox/common/numpy_helper_functions.py +14 -0
  16. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/compression/compression_jcalg1.py +1 -1
  17. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/compression/compression_lzo.py +0 -1
  18. reversebox-0.24.2/reversebox/compression/compression_mio0.py +73 -0
  19. reversebox-0.24.2/reversebox/compression/compression_refpack.py +69 -0
  20. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/compression/compression_zlib.py +0 -1
  21. reversebox-0.24.2/reversebox/crc/crc16_ea_crcf.py +39 -0
  22. reversebox-0.24.2/reversebox/crc/crc64_go_iso.py +23 -0
  23. reversebox-0.24.2/reversebox/crc/crc_unix_cksum.py +95 -0
  24. reversebox-0.24.2/reversebox/encryption/encryption_hatch_engine.py +74 -0
  25. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/encryption/encryption_xor_basic.py +5 -6
  26. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -1
  27. reversebox-0.24.2/reversebox/hash/hash_additive.py +27 -0
  28. reversebox-0.24.2/reversebox/hash/hash_ap.py +33 -0
  29. reversebox-0.24.2/reversebox/hash/hash_djb2.py +27 -0
  30. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/hash/hash_fnv.py +3 -0
  31. reversebox-0.24.2/reversebox/hash/hash_jenkins_one_at_a_time.py +43 -0
  32. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/hash/hash_md2.py +1 -0
  33. reversebox-0.24.2/reversebox/hash/hash_murmur3.py +19 -0
  34. reversebox-0.24.2/reversebox/hash/hash_sdbm.py +24 -0
  35. reversebox-0.24.2/reversebox/image/common.py +196 -0
  36. reversebox-0.24.2/reversebox/image/compression/compression_gst.py +79 -0
  37. reversebox-0.24.2/reversebox/image/compression/compression_lzw.py +23 -0
  38. reversebox-0.24.2/reversebox/image/compression/compression_packbits.py +73 -0
  39. reversebox-0.24.2/reversebox/image/compression/compression_rle_executioners.py +42 -0
  40. reversebox-0.24.2/reversebox/image/compression/compression_rle_tga.py +73 -0
  41. reversebox-0.24.2/reversebox/image/compression/compression_zlib.py +39 -0
  42. reversebox-0.24.2/reversebox/image/decoders/bumpmap_decoder.py +59 -0
  43. reversebox-0.24.2/reversebox/image/decoders/compressed_decoder.py +143 -0
  44. reversebox-0.24.2/reversebox/image/decoders/gst_decoder.py +86 -0
  45. reversebox-0.24.2/reversebox/image/decoders/n64_decoder.py +100 -0
  46. reversebox-0.24.2/reversebox/image/decoders/yuv_decoder.py +541 -0
  47. reversebox-0.24.2/reversebox/image/encoders/gst_encoder.py +38 -0
  48. reversebox-0.24.2/reversebox/image/file_formats/__init__.py +0 -0
  49. reversebox-0.24.2/reversebox/image/file_formats/image_dds.py +100 -0
  50. reversebox-0.24.2/reversebox/image/image_decoder.py +736 -0
  51. reversebox-0.24.2/reversebox/image/image_encoder.py +216 -0
  52. reversebox-0.24.2/reversebox/image/image_formats.py +159 -0
  53. reversebox-0.24.2/reversebox/image/palettes/__init__.py +0 -0
  54. reversebox-0.24.2/reversebox/image/palettes/palette_random.py +15 -0
  55. reversebox-0.24.2/reversebox/image/palettes/palette_vga.py +280 -0
  56. reversebox-0.24.2/reversebox/image/pillow_wrapper.py +81 -0
  57. reversebox-0.24.2/reversebox/image/swizzling/__init__.py +0 -0
  58. reversebox-0.24.2/reversebox/image/swizzling/swizzle_3ds.py +44 -0
  59. reversebox-0.24.2/reversebox/image/swizzling/swizzle_bc.py +27 -0
  60. reversebox-0.24.2/reversebox/image/swizzling/swizzle_cmpr.py +46 -0
  61. reversebox-0.24.2/reversebox/image/swizzling/swizzle_gamecube.py +108 -0
  62. reversebox-0.24.2/reversebox/image/swizzling/swizzle_gst.py +175 -0
  63. reversebox-0.24.2/reversebox/image/swizzling/swizzle_morton.py +65 -0
  64. reversebox-0.24.2/reversebox/image/swizzling/swizzle_morton_ps4.py +69 -0
  65. reversebox-0.24.2/reversebox/image/swizzling/swizzle_ps2.py +184 -0
  66. reversebox-0.24.2/reversebox/image/swizzling/swizzle_psp.py +46 -0
  67. reversebox-0.24.2/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +124 -0
  68. reversebox-0.24.2/reversebox/image/swizzling/swizzle_switch.py +34 -0
  69. reversebox-0.24.2/reversebox/image/swizzling/swizzle_x360.py +85 -0
  70. reversebox-0.24.2/reversebox/io_files/__init__.py +0 -0
  71. reversebox-0.24.2/reversebox/io_files/bytes_helper_functions.py +137 -0
  72. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/io_files/file_handler.py +110 -36
  73. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/io_files/translation_text_handler.py +16 -12
  74. reversebox-0.24.2/reversebox/libs/DirectXTex.dll +0 -0
  75. reversebox-0.24.2/reversebox/libs/__init__.py +0 -0
  76. reversebox-0.24.2/reversebox/libs/ea_swizzle.dll +0 -0
  77. reversebox-0.24.2/reversebox/libs/refpack.dll +0 -0
  78. {ReverseBox-0.6.7 → reversebox-0.24.2}/setup.py +20 -5
  79. ReverseBox-0.6.7/PKG-INFO +0 -221
  80. ReverseBox-0.6.7/README.md +0 -188
  81. ReverseBox-0.6.7/ReverseBox.egg-info/PKG-INFO +0 -221
  82. ReverseBox-0.6.7/ReverseBox.egg-info/SOURCES.txt +0 -68
  83. ReverseBox-0.6.7/reversebox/common/common.py +0 -20
  84. ReverseBox-0.6.7/reversebox/image/image_finder_gui.py +0 -312
  85. ReverseBox-0.6.7/reversebox/image/image_finder_main.py +0 -33
  86. ReverseBox-0.6.7/reversebox/image/psp_swizzle.py +0 -44
  87. ReverseBox-0.6.7/tests/common.py +0 -55
  88. ReverseBox-0.6.7/tests/tests_crc/test_crc16_arc.py +0 -55
  89. ReverseBox-0.6.7/tests/tests_crc/test_crc16_ccitt.py +0 -105
  90. ReverseBox-0.6.7/tests/tests_crc/test_crc16_dnp.py +0 -39
  91. ReverseBox-0.6.7/tests/tests_crc/test_crc16_kermit.py +0 -39
  92. ReverseBox-0.6.7/tests/tests_crc/test_crc16_modbus.py +0 -39
  93. ReverseBox-0.6.7/tests/tests_crc/test_crc16_sick.py +0 -39
  94. ReverseBox-0.6.7/tests/tests_crc/test_crc32_asobo.py +0 -60
  95. ReverseBox-0.6.7/tests/tests_crc/test_crc32_iso_hdlc.py +0 -81
  96. ReverseBox-0.6.7/tests/tests_crc/test_crc8.py +0 -42
  97. ReverseBox-0.6.7/tests/tests_crc/test_crc8_cdma_2000.py +0 -42
  98. ReverseBox-0.6.7/tests/tests_crc/test_crc8_darc.py +0 -42
  99. {ReverseBox-0.6.7 → reversebox-0.24.2}/LICENSE +0 -0
  100. {ReverseBox-0.6.7 → reversebox-0.24.2}/ReverseBox.egg-info/dependency_links.txt +0 -0
  101. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/__init__.py +0 -0
  102. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/checksum/__init__.py +0 -0
  103. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/checksum/checksum_adler32.py +0 -0
  104. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/checksum/checksum_fletcher16.py +0 -0
  105. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/checksum/checksum_fletcher32.py +0 -0
  106. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/common/__init__.py +0 -0
  107. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/common/logger.py +0 -0
  108. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/compression/__init__.py +0 -0
  109. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/__init__.py +0 -0
  110. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc16_arc.py +0 -0
  111. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc16_ccitt.py +0 -0
  112. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc16_dnp.py +0 -0
  113. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc16_kermit.py +0 -0
  114. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc16_modbus.py +0 -0
  115. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc16_sick.py +0 -0
  116. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc32_asobo.py +0 -0
  117. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc32_iso_hdlc.py +0 -0
  118. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc64_asobo.py +0 -0
  119. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/crc/crc8.py +0 -0
  120. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/encryption/__init__.py +0 -0
  121. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/encryption/encryption_rot13.py +0 -0
  122. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
  123. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
  124. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/hash/__init__.py +0 -0
  125. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/hash/hash_md5.py +0 -0
  126. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/hash/hash_sha1.py +0 -0
  127. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/hash/hash_sha2.py +0 -0
  128. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/image/__init__.py +0 -0
  129. {ReverseBox-0.6.7/reversebox/io_files → reversebox-0.24.2/reversebox/image/compression}/__init__.py +0 -0
  130. {ReverseBox-0.6.7/tests → reversebox-0.24.2/reversebox/image/decoders}/__init__.py +0 -0
  131. {ReverseBox-0.6.7/tests/tests_crc → reversebox-0.24.2/reversebox/image/encoders}/__init__.py +0 -0
  132. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/io_files/bytes_handler.py +0 -0
  133. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/io_files/check_file.py +0 -0
  134. {ReverseBox-0.6.7 → reversebox-0.24.2}/reversebox/io_files/mod_handler.py +0 -0
  135. {ReverseBox-0.6.7 → reversebox-0.24.2}/setup.cfg +0 -0
@@ -0,0 +1,403 @@
1
+ Metadata-Version: 2.1
2
+ Name: ReverseBox
3
+ Version: 0.24.2
4
+ Summary: A set of functions useful in reverse engineering.
5
+ Home-page: https://github.com/bartlomiejduda/ReverseBox
6
+ Author: Bartlomiej Duda
7
+ Author-email: ikskoks@gmail.com
8
+ Keywords: ReverseBox,reverse engineering,RE,CRC,Hash,Encryption,Compression,Checksum,Python,image,decode,decoding,RGB,swizzle,swizzling,morton,twiddle,twiddling,texture,UYVY,YUY2,NV21,NV12,RGBA,RGBA8888,RGB565,RGBA8,BGR,grayscale,graphics,color,pixel,convert,converting,YUV,RAW,PSP,PS1,PS2,PS3,PS4,XBOX,X360,gamecube,dreamcast,BC,BC1,BC2,BC3,BC4,BC5,BC6,BC7,DXT1,DXT2,DXT3,PackBits,RLE,Macintosh,Jenkins,murmur,murmur3,one-at-a-time,additive
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.6
11
+ Classifier: Programming Language :: Python :: 3.7
12
+ Classifier: Programming Language :: Python :: 3.8
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Development Status :: 4 - Beta
17
+ Classifier: Topic :: Software Development
18
+ Classifier: Topic :: System :: Archiving :: Compression
19
+ Classifier: Topic :: Security :: Cryptography
20
+ Classifier: Environment :: Console
21
+ Classifier: Intended Audience :: Developers
22
+ Classifier: Intended Audience :: Science/Research
23
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
24
+ Classifier: Operating System :: OS Independent
25
+ Classifier: Natural Language :: English
26
+ Requires-Python: >=3.6
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: lzokay
30
+ Requires-Dist: polib
31
+ Requires-Dist: crc
32
+ Requires-Dist: hashbase
33
+ Requires-Dist: pillow
34
+ Requires-Dist: rawutil
35
+ Requires-Dist: mmh3
36
+
37
+ # Info
38
+
39
+ **ReverseBox** is a Python package with a set of functions
40
+ useful in software reverse engineering.
41
+
42
+ **Why ReverseBox?** <br>
43
+ It's designed to help with:
44
+ 1. Decompressing / compressing data
45
+ 2. Decrypting / encrypting data
46
+ 3. Tedious reverse engineering tasks
47
+ e.g. testing different checksum algorithms to find the one that was
48
+ used in the software or file format
49
+ 4. Figuring out file formats
50
+ 5. Parsing data structures
51
+ 6. Wrapping functions for input/output operations
52
+ 7. Searching for raw images
53
+
54
+ **Who should use ReverseBox?** <br>
55
+ Mostly developers and reverse engineers (e.g. file format researchers
56
+ or software researchers).
57
+
58
+ # List of functionalities
59
+
60
+ * Checksum
61
+ - Adler32 ✔️
62
+ - Cocos2d PVR ✔️
63
+ - Fletcher16 ✔️
64
+ - Fletcher32 ✔️
65
+ - Internet Checksum / IPv4 header checksum ✔️
66
+ - Sum8 ✔️
67
+ - Sum8 2s Complement ✔️
68
+ - Unix Sum BSD16 ✔️
69
+ - Unix Sum SYSV ✔️
70
+ - Xor8 ✔️
71
+
72
+ * CRC
73
+ - CRC-8 ✔️
74
+ - CRC-8/CDMA2000 ✔️
75
+ - CRC-8/DARC ✔️ <span style="color:yellow">(wrapper only)</span>
76
+ - CRC-16 (ARC) ✔️
77
+ - CRC-16 (Modbus) ✔️
78
+ - CRC-16 (Sick) ✔️
79
+ - CRC-16 (DNP) ✔️
80
+ - CRC-16 (EA CRCF) ✔️
81
+ - CRC-16-CCITT (XModem) ✔️
82
+ - CRC-16-CCITT (0xFFFF) ✔️
83
+ - CRC-16-CCITT (0x1D0F) ✔️
84
+ - CRC-16-CCITT (Kermit) ✔️
85
+ - CRC-32/CKSUM (Unix cksum) ✔️
86
+ - CRC-32 (ISO/HDLC) ✔️
87
+ - CRC-32 (Asobo) ✔️
88
+ - CRC-64 (Asobo) ✔️
89
+ - CRC-64/GO-ISO ✔️ <span style="color:yellow">(wrapper only)</span>
90
+
91
+ * Compression
92
+ - Asobo (TODO) ❌
93
+ - BZE/BZZ (TODO) ❌
94
+ - BZIP2 (TODO) ❌
95
+ - GZIP (TODO) ❌
96
+ - JCALG1 (TODO) ❌
97
+ - LZMA (TODO) ❌
98
+ - LZO / LZO1X ✔️ <span style="color:yellow">(wrapper only)</span>
99
+ - LZSS (TODO) ❌
100
+ - MIO0 ✔️
101
+ - NitroSDK (TODO) ❌
102
+ - Oodle (TODO) ❌
103
+ - Refpack (EA Games) ✔️ <span style="color:yellow">(wrapper only)</span>
104
+ - RNC (TODO) ❌
105
+ - ZLIB ✔️ <span style="color:yellow">(wrapper only)</span>
106
+
107
+ * Encryption
108
+ - AES (TODO) ❌
109
+ - DES (TODO) ❌
110
+ - Lucifer / DTD-1 (TODO) ❌
111
+ - ROT13 ✔️
112
+ - XOR Cipher (Basic) ✔️
113
+ - XOR Cipher (Basic) Guesser ✔️
114
+ - Hatch Engine Encryption ✔️
115
+ - (game-specific) XOR Cipher (Retro64 ECO) ✔️
116
+ - (game-specific) XOR Cipher (Giana’s Return ZDA) ✔️
117
+
118
+ * Hash
119
+ - Additive Hash ✔️
120
+ - AP ✔️
121
+ - DJB2 ✔️
122
+ - FNV0-32 ✔️
123
+ - FNV0-64 ✔️
124
+ - FNV1-32 ✔️
125
+ - FNV1-64 ✔️
126
+ - FNV1A-32 ✔️
127
+ - FNV1A-64 ✔️
128
+ - Jenkins one-at-a-time ✔️
129
+ - SDBM ✔️
130
+ - SHA-1 ✔️ <span style="color:yellow">(wrapper only)</span>
131
+ - SHA-2 (256 bits) ✔️ <span style="color:yellow">(wrapper only)</span>
132
+ - MD2 ✔️ <span style="color:yellow">(wrapper only)</span>
133
+ - MD5 ✔️ <span style="color:yellow">(wrapper only)</span>
134
+ - Murmur3 ✔️ <span style="color:yellow">(wrapper only)</span>
135
+ - (game-specific) Hercules (TODO) ❌
136
+ - (game-specific) E-racer (TODO) ❌
137
+
138
+ * Image
139
+ - Decode RGB121 ✔️
140
+ - Decode RGB121_BYTE ✔️
141
+ - Decode RGBA2222 ✔️
142
+ - Decode RGBX2222 ✔️
143
+ - Decode GRAY8 ✔️
144
+ - Decode RGBX332 (RGB8) ✔️
145
+ - Decode BGRX332 (BGR8) ✔️
146
+ - Decode/Encode RGB565 ✔️
147
+ - Decode/Encode BGR565 ✔️
148
+ - Decode RGBX5551 ✔️
149
+ - Decode RGBA5551 ✔️
150
+ - Decode RGB888 (RGB24) ✔️
151
+ - Decode BGR888 (BGR24) ✔️
152
+ - Decode ARGB4444 ✔️
153
+ - Decode RGBA4444 ✔️
154
+ - Decode ABGR4444 ✔️
155
+ - Decode XBGR4444 ✔️
156
+ - Decode RGBX4444 ✔️
157
+ - Decode BGRA4444 ✔️
158
+ - Decode BGRX4444 ✔️
159
+ - Decode XRGB1555 ✔️
160
+ - Decode ARGB1555 ✔️
161
+ - Decode ABGR1555 ✔️
162
+ - Decode XBGR1555 ✔️
163
+ - Decode ARGB8888 ✔️
164
+ - Decode ABGR8888 ✔️
165
+ - Decode/Encode RGBA8888 ✔️
166
+ - Decode/Encode BGRA8888 ✔️
167
+ - Decode RGB48 ✔️
168
+ - Decode BGR48 ✔️
169
+ - Decode PAL4_RGBX5551 ✔️
170
+ - Decode PAL4_BGRX5551 ✔️
171
+ - Decode PAL4_XRGB1555 ✔️
172
+ - Decode PAL4_XBGR1555 ✔️
173
+ - Decode PAL4_RGB888 ✔️
174
+ - Decode PAL4_BGR888 ✔️
175
+ - Decode PAL4_IA8 ✔️
176
+ - Decode PAL4_RGB565 ✔️
177
+ - Decode PAL4_RGB5A3 ✔️
178
+ - Decode PAL4_RGBA8888 ✔️
179
+ - Decode PAL4_BGRA8888 ✔️
180
+ - Decode PAL4_RGB5A3 ✔️
181
+ - Decode PAL8_RGBX2222 ✔️
182
+ - Decode PAL8_RGBX5551 ✔️
183
+ - Decode PAL8_BGRX5551 ✔️
184
+ - Decode PAL8_XRGB1555 ✔️
185
+ - Decode PAL8_XBGR1555 ✔️
186
+ - Decode PAL8_RGB888 ✔️
187
+ - Decode PAL8_BGR888 ✔️
188
+ - Decode PAL8_RGBX6666 ✔️
189
+ - Decode PAL8_IA8 ✔️
190
+ - Decode PAL8_RGB565 ✔️
191
+ - Decode PAL8_RGB5A3 ✔️
192
+ - Decode PAL8_RGBA8888 ✔️
193
+ - Decode PAL8_BGRA8888 ✔️
194
+ - Decode PAL16_IA8 ✔️
195
+ - Decode PAL16_RGB565 ✔️
196
+ - Decode PAL16_RGB5A3 ✔️
197
+ - Decode N64_RGB5A3 ✔️
198
+ - Decode N64_I4 ✔️
199
+ - Decode N64_I8 ✔️
200
+ - Decode N64_IA4 ✔️
201
+ - Decode N64_IA8 ✔️
202
+ - Decode N64_RGBA32 ✔️
203
+ - Decode N64_CMPR ✔️
204
+ - Decode BC1/DXT1 ✔️
205
+ - Decode BC2/DXT3 ✔️
206
+ - Decode BC3/DXT5 ✔️
207
+ - Decode BC4 ✔️
208
+ - Decode BC5 ✔️
209
+ - Decode BC6 ✔️
210
+ - Decode BC7 ✔️
211
+ - Decode GST121 ✔️
212
+ - Decode GST221 ✔️
213
+ - Decode GST421 ✔️
214
+ - Decode GST821 ✔️
215
+ - Decode GST122 ✔️
216
+ - Decode GST222 ✔️
217
+ - Decode GST422 ✔️
218
+ - Decode GST822 ✔️
219
+ - Decode YUY2 ✔️
220
+ - Decode NV12 ✔️
221
+ - Decode NV21 ✔️
222
+ - Decode UYVY ✔️
223
+ - Decode YUV444P ✔️
224
+ - Decode YUV410P ✔️
225
+ - Decode YUV420P ✔️
226
+ - Decode YUV422P ✔️
227
+ - Decode YUV411P ✔️
228
+ - Decode UYYVYY411 ✔️
229
+ - Decode YUV440P ✔️
230
+ - Decode YUVA420P ✔️
231
+ - Decode AYUV ✔️
232
+ - Decode GRAY8A (LA88) ✔️
233
+ - Decode GRAY16 ✔️
234
+ - Decode XRGB8888 ✔️
235
+ - Decode RGBX8888 ✔️
236
+ - Decode XBGR8888 ✔️
237
+ - Decode BGRX8888 ✔️
238
+ - Decode R8 ✔️
239
+ - Decode G8 ✔️
240
+ - Decode B8 ✔️
241
+ - Decode R16 ✔️
242
+ - Decode G16 ✔️
243
+ - Decode B16 ✔️
244
+ - Decode R32 ✔️
245
+ - Decode G32 ✔️
246
+ - Decode B32 ✔️
247
+ - Decode BUMPMAP_SR ✔️
248
+ - 3DS Swizzling/Twiddling ✔️
249
+ - CMPR Swizzling/Twiddling ✔️
250
+ - PS2 Swizzling/Twiddling ✔️
251
+ - PS2 Palette Swizzling/Twiddling ✔️
252
+ - PS4 Swizzling/Twiddling ✔️
253
+ - PSP Swizzling/Twiddling ✔️
254
+ - PS Vita Swizzling/Twiddling ✔️
255
+ - XBOX 360 Swizzling/Twiddling ✔️
256
+ - GameCube/WII Swizzling/Twiddling ✔️
257
+ - Switch Swizzling/Twiddling ✔️
258
+ - XBOX/PS3 Swizzling/Twiddling (Morton Order) ✔️
259
+ - Dreamcast Swizzling/Twiddling (Morton Order) ✔️
260
+ - BC Swizzling/Twiddling ✔️
261
+ - PS2 GS Texture Swizzling/Twiddling ✔️
262
+ - PS2 GS Texture Compression ✔️
263
+ - RLE TGA compression ✔️
264
+ - PackBits (Macintosh RLE) compression ✔️
265
+ - Executioners RLE compression ✔️
266
+
267
+ * IO
268
+ - File Reader ✔️
269
+ - File Writer ✔️
270
+ - Bytes Handler ✔️
271
+ - Translation Text Handler ✔️
272
+ - Mod Handler ✔️
273
+ - File extension checking ✔️
274
+ - Padding calculation ✔️
275
+ - File size checking ✔️
276
+
277
+ # Checksum calculation - example
278
+
279
+ // CRC32 calculation
280
+ ```
281
+ from reversebox.crc import crc32_iso_hdlc
282
+ from reversebox.common import common
283
+
284
+ test_data = b'123456789'
285
+ crc32_handler = crc32_iso_hdlc.CRC32Handler()
286
+ crc32 = crc32_handler.calculate_crc32(test_data)
287
+ print("CRC32_INT: ", crc32)
288
+ print("CRC32_STR: ", common.convert_int_to_hex_string(crc32))
289
+ ```
290
+ // CRC32 output
291
+ ```
292
+ CRC32_INT: 3421780262
293
+ CRC32_STR: 0xCBF43926
294
+ ```
295
+
296
+
297
+ # XOR encryption - example
298
+
299
+ // XOR Cipher (Basic)
300
+ ```
301
+ from reversebox.encryption.encryption_xor_basic import xor_cipher_basic
302
+
303
+
304
+ test_data = b'abcd'
305
+ test_key = b'\x3D'
306
+ xor_result = xor_cipher_basic(test_data, test_key)
307
+ print(xor_result)
308
+ ```
309
+
310
+ // XOR Cipher output
311
+ ```
312
+ b'\\_^Y'
313
+ ```
314
+
315
+
316
+ # File Handler - example
317
+
318
+ // File reading
319
+ ```
320
+ import os
321
+ from reversebox.io_files.file_handler import FileHandler
322
+
323
+
324
+ file_path = os.path.join(os.path.dirname(__file__), "file.bin")
325
+ file_reader = FileHandler(file_path, "rb")
326
+ file_reader.open()
327
+ value = file_reader.read_str(4, "utf8")
328
+ print(value)
329
+ ```
330
+
331
+ // File Reader Output
332
+ ```
333
+ ABCD
334
+ ```
335
+
336
+
337
+ # Hash calculation - example
338
+
339
+ // SHA-1 calculation
340
+ ```
341
+ from reversebox.hash.hash_sha1 import SHA1Handler
342
+
343
+ test_data = b'abcd'
344
+ sha1_handler = SHA1Handler()
345
+ sha1 = sha1_handler.calculate_sha1_hash(test_data)
346
+ print("SHA-1 hash: ", sha1)
347
+ ```
348
+
349
+ // SHA-1 Output
350
+ ```
351
+ SHA-1 hash: b'\x81\xfe\x8b\xfe\x87Wl>\xcb"Bo\x8eW\x84s\x82\x91z\xcf'
352
+ ```
353
+
354
+ # Image decoding - example
355
+
356
+ // DXT1 compressed image decoding
357
+
358
+ ```
359
+ from reversebox.image.image_decoder import ImageDecoder
360
+ from reversebox.image.image_formats import ImageFormats
361
+ from reversebox.image.pillow_wrapper import PillowWrapper
362
+
363
+
364
+ def show_img():
365
+ with open("image_data.bin", "rb") as f:
366
+ image_data = f.read()
367
+
368
+ img_width: int = 64
369
+ img_height: int = 64
370
+ decoder = ImageDecoder()
371
+ wrapper = PillowWrapper()
372
+ converted_data: bytes = decoder.decode_compressed_image(image_data, img_width, img_height, ImageFormats.DXT1)
373
+ pil_image = wrapper.get_pillow_image_from_rgba8888_data(converted_data, img_width, img_height)
374
+ pil_image.show()
375
+
376
+
377
+ if __name__ == '__main__':
378
+ show_img()
379
+ ```
380
+
381
+
382
+ # More Examples
383
+
384
+ Need more examples? <br>
385
+ Check out list of tools written using ReverseBox:
386
+ - [Giana's Return ZDA Tool](https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/Gianas%20Return/Gianas_Return_ZDA_Tool.py)
387
+ - [ObsCure 2 HVP Extractor](https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/ObsCure%202/ObsCure%202%20HVP%20Tools/Obscure_2_hvp_extractor.py)
388
+ - [Tail Concerto Translation Tools](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/Tail%20Concerto/Tail%20Concerto%20Tools)
389
+ - [EA Graphics Manager](https://github.com/bartlomiejduda/EA-Graphics-Manager)
390
+ - [Acclaim TRE Tool](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/Acclaim/Acclaim_TRE_Tool)
391
+ - [F-Zero X TEX Tool](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/F-Zero%20X/TEX%20Tool)
392
+ - [TPL Parser](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/Mario%20Kart%20WII/TPL%20Parser)
393
+ - [ImageHeat](https://github.com/bartlomiejduda/ImageHeat)
394
+ - [Hatch Engine Archive Tool](https://github.com/bartlomiejduda/Tools/tree/master/NEW%20Tools/Hatch%20Engine/Hatch%20Engine%20Archive%20Tool)
395
+ - and more...
396
+
397
+ # Badges
398
+ ![PyPI Downloads](https://static.pepy.tech/badge/reversebox)
399
+ ![PyPI - Downloads](https://img.shields.io/pypi/dm/ReverseBox)
400
+ ![GitHub License](https://img.shields.io/github/license/bartlomiejduda/ReverseBox)
401
+ ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/bartlomiejduda/ReverseBox)
402
+ ![GitHub repo size](https://img.shields.io/github/repo-size/bartlomiejduda/ReverseBox)
403
+ ![PyPI - Version](https://img.shields.io/pypi/v/ReverseBox)