ReverseBox 0.48.2__tar.gz → 0.49.0__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.
- {reversebox-0.48.2 → reversebox-0.49.0}/PKG-INFO +20 -5
- {reversebox-0.48.2 → reversebox-0.49.0}/README.md +3 -1
- {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/PKG-INFO +20 -5
- {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/SOURCES.txt +1 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/requires.txt +1 -0
- reversebox-0.49.0/reversebox/compression/compression_lz4.py +14 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/common.py +2 -1
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/image_decoder.py +6 -16
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/image_formats.py +2 -1
- {reversebox-0.48.2 → reversebox-0.49.0}/setup.py +5 -12
- {reversebox-0.48.2 → reversebox-0.49.0}/LICENSE +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/dependency_links.txt +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/top_level.txt +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_adler32.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_fletcher16.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_fletcher32.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_sum8.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_xor8.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/common.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/logger.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/numpy_helper_functions.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_jcalg1.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_lzo.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_mio0.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_re_tiyoruga_dat.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_refpack.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_zlib.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_arc.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_ccitt.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_dnp.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_ea_crcf.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_kermit.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_modbus.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_sick.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc32_asobo.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc32_iso_hdlc.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc64_asobo.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc64_go_iso.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc8.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc_unix_cksum.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_hatch_engine.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_rot13.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_basic.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_additive.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_ap.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_djb2.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_fnv.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_md2.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_md5.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_murmur3.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_pivotal_games_dat.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_sdbm.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_sha1.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_sha2.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/byte_swap.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_gst.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_lzw.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_packbits.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_rle_executioners.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_rle_tga.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_zlib.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/compressed_decoder_encoder.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/gst_decoder_encoder.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/n64_decoder.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/pvrtexlib_decoder_encoder.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/yuv_decoder.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/file_formats/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/file_formats/image_dds.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/image_encoder.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/palettes/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/palettes/palette_random.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/palettes/palette_vga.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/pillow_wrapper.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_bc.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_gst.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_morton.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_ps2_4bit.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_ps2_suba.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_psp.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_switch.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_wii_u.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_x360.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/bytes_handler.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/bytes_helper_functions.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/check_file.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/file_handler.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/mod_handler.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/translation_text_handler.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/DirectXTex.dll +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/PVRTexLib.dll +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/PVRTexLibWrapper.dll +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/__init__.py +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/refpack.dll +0 -0
- {reversebox-0.48.2 → reversebox-0.49.0}/setup.cfg +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.49.0
|
|
4
4
|
Summary: A set of functions useful in reverse engineering.
|
|
5
5
|
Home-page: https://github.com/bartlomiejduda/ReverseBox
|
|
6
6
|
Author: Bartlomiej Duda
|
|
7
7
|
Author-email: ikskoks@gmail.com
|
|
8
|
-
|
|
8
|
+
License: GPL-3.0-or-later
|
|
9
|
+
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,ASTC,ETC1,ETC2,DXT2,DXT4,EAC,BASISU,PVRTCI,UASTC,RGBM,RGBD,LZ4
|
|
9
10
|
Classifier: Programming Language :: Python :: 3
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.6
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.7
|
|
@@ -22,7 +23,6 @@ Classifier: Topic :: Security :: Cryptography
|
|
|
22
23
|
Classifier: Environment :: Console
|
|
23
24
|
Classifier: Intended Audience :: Developers
|
|
24
25
|
Classifier: Intended Audience :: Science/Research
|
|
25
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
26
26
|
Classifier: Operating System :: OS Independent
|
|
27
27
|
Classifier: Natural Language :: English
|
|
28
28
|
Requires-Python: >=3.6
|
|
@@ -34,6 +34,19 @@ Requires-Dist: crc
|
|
|
34
34
|
Requires-Dist: hashbase
|
|
35
35
|
Requires-Dist: pillow
|
|
36
36
|
Requires-Dist: mmh3
|
|
37
|
+
Requires-Dist: lz4
|
|
38
|
+
Dynamic: author
|
|
39
|
+
Dynamic: author-email
|
|
40
|
+
Dynamic: classifier
|
|
41
|
+
Dynamic: description
|
|
42
|
+
Dynamic: description-content-type
|
|
43
|
+
Dynamic: home-page
|
|
44
|
+
Dynamic: keywords
|
|
45
|
+
Dynamic: license
|
|
46
|
+
Dynamic: license-file
|
|
47
|
+
Dynamic: requires-dist
|
|
48
|
+
Dynamic: requires-python
|
|
49
|
+
Dynamic: summary
|
|
37
50
|
|
|
38
51
|
# Info
|
|
39
52
|
|
|
@@ -95,6 +108,7 @@ or software researchers).
|
|
|
95
108
|
- BZIP2 (TODO) ❌
|
|
96
109
|
- GZIP (TODO) ❌
|
|
97
110
|
- JCALG1 (TODO) ❌
|
|
111
|
+
- LZ4 ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
98
112
|
- LZMA (TODO) ❌
|
|
99
113
|
- LZO / LZO1X ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
100
114
|
- LZSS (TODO) ❌
|
|
@@ -141,12 +155,13 @@ or software researchers).
|
|
|
141
155
|
* Image
|
|
142
156
|
- Decode RGB121 ✔️
|
|
143
157
|
- Decode ALPHA4 ✔️
|
|
144
|
-
- Decode
|
|
158
|
+
- Decode ALPHA4_16X ✔️
|
|
145
159
|
- Decode RGB121_BYTE ✔️
|
|
146
160
|
- Decode RGBA2222 ✔️
|
|
147
161
|
- Decode RGBX2222 ✔️
|
|
148
162
|
- Decode GRAY8 ✔️
|
|
149
163
|
- Decode ALPHA8 ✔️
|
|
164
|
+
- Decode ALPHA8_16X ✔️
|
|
150
165
|
- Decode LA44 ✔️
|
|
151
166
|
- Decode RGBX332 (RGB8) ✔️
|
|
152
167
|
- Decode BGRX332 (BGR8) ✔️
|
|
@@ -58,6 +58,7 @@ or software researchers).
|
|
|
58
58
|
- BZIP2 (TODO) ❌
|
|
59
59
|
- GZIP (TODO) ❌
|
|
60
60
|
- JCALG1 (TODO) ❌
|
|
61
|
+
- LZ4 ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
61
62
|
- LZMA (TODO) ❌
|
|
62
63
|
- LZO / LZO1X ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
63
64
|
- LZSS (TODO) ❌
|
|
@@ -104,12 +105,13 @@ or software researchers).
|
|
|
104
105
|
* Image
|
|
105
106
|
- Decode RGB121 ✔️
|
|
106
107
|
- Decode ALPHA4 ✔️
|
|
107
|
-
- Decode
|
|
108
|
+
- Decode ALPHA4_16X ✔️
|
|
108
109
|
- Decode RGB121_BYTE ✔️
|
|
109
110
|
- Decode RGBA2222 ✔️
|
|
110
111
|
- Decode RGBX2222 ✔️
|
|
111
112
|
- Decode GRAY8 ✔️
|
|
112
113
|
- Decode ALPHA8 ✔️
|
|
114
|
+
- Decode ALPHA8_16X ✔️
|
|
113
115
|
- Decode LA44 ✔️
|
|
114
116
|
- Decode RGBX332 (RGB8) ✔️
|
|
115
117
|
- Decode BGRX332 (BGR8) ✔️
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.49.0
|
|
4
4
|
Summary: A set of functions useful in reverse engineering.
|
|
5
5
|
Home-page: https://github.com/bartlomiejduda/ReverseBox
|
|
6
6
|
Author: Bartlomiej Duda
|
|
7
7
|
Author-email: ikskoks@gmail.com
|
|
8
|
-
|
|
8
|
+
License: GPL-3.0-or-later
|
|
9
|
+
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,ASTC,ETC1,ETC2,DXT2,DXT4,EAC,BASISU,PVRTCI,UASTC,RGBM,RGBD,LZ4
|
|
9
10
|
Classifier: Programming Language :: Python :: 3
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.6
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.7
|
|
@@ -22,7 +23,6 @@ Classifier: Topic :: Security :: Cryptography
|
|
|
22
23
|
Classifier: Environment :: Console
|
|
23
24
|
Classifier: Intended Audience :: Developers
|
|
24
25
|
Classifier: Intended Audience :: Science/Research
|
|
25
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
26
26
|
Classifier: Operating System :: OS Independent
|
|
27
27
|
Classifier: Natural Language :: English
|
|
28
28
|
Requires-Python: >=3.6
|
|
@@ -34,6 +34,19 @@ Requires-Dist: crc
|
|
|
34
34
|
Requires-Dist: hashbase
|
|
35
35
|
Requires-Dist: pillow
|
|
36
36
|
Requires-Dist: mmh3
|
|
37
|
+
Requires-Dist: lz4
|
|
38
|
+
Dynamic: author
|
|
39
|
+
Dynamic: author-email
|
|
40
|
+
Dynamic: classifier
|
|
41
|
+
Dynamic: description
|
|
42
|
+
Dynamic: description-content-type
|
|
43
|
+
Dynamic: home-page
|
|
44
|
+
Dynamic: keywords
|
|
45
|
+
Dynamic: license
|
|
46
|
+
Dynamic: license-file
|
|
47
|
+
Dynamic: requires-dist
|
|
48
|
+
Dynamic: requires-python
|
|
49
|
+
Dynamic: summary
|
|
37
50
|
|
|
38
51
|
# Info
|
|
39
52
|
|
|
@@ -95,6 +108,7 @@ or software researchers).
|
|
|
95
108
|
- BZIP2 (TODO) ❌
|
|
96
109
|
- GZIP (TODO) ❌
|
|
97
110
|
- JCALG1 (TODO) ❌
|
|
111
|
+
- LZ4 ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
98
112
|
- LZMA (TODO) ❌
|
|
99
113
|
- LZO / LZO1X ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
100
114
|
- LZSS (TODO) ❌
|
|
@@ -141,12 +155,13 @@ or software researchers).
|
|
|
141
155
|
* Image
|
|
142
156
|
- Decode RGB121 ✔️
|
|
143
157
|
- Decode ALPHA4 ✔️
|
|
144
|
-
- Decode
|
|
158
|
+
- Decode ALPHA4_16X ✔️
|
|
145
159
|
- Decode RGB121_BYTE ✔️
|
|
146
160
|
- Decode RGBA2222 ✔️
|
|
147
161
|
- Decode RGBX2222 ✔️
|
|
148
162
|
- Decode GRAY8 ✔️
|
|
149
163
|
- Decode ALPHA8 ✔️
|
|
164
|
+
- Decode ALPHA8_16X ✔️
|
|
150
165
|
- Decode LA44 ✔️
|
|
151
166
|
- Decode RGBX332 (RGB8) ✔️
|
|
152
167
|
- Decode BGRX332 (BGR8) ✔️
|
|
@@ -24,6 +24,7 @@ reversebox/common/logger.py
|
|
|
24
24
|
reversebox/common/numpy_helper_functions.py
|
|
25
25
|
reversebox/compression/__init__.py
|
|
26
26
|
reversebox/compression/compression_jcalg1.py
|
|
27
|
+
reversebox/compression/compression_lz4.py
|
|
27
28
|
reversebox/compression/compression_lzo.py
|
|
28
29
|
reversebox/compression/compression_mio0.py
|
|
29
30
|
reversebox/compression/compression_re_tiyoruga_dat.py
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Copyright © 2025 Bartłomiej Duda
|
|
3
|
+
License: GPL-3.0 License
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import lz4.frame
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class LZ4Handler:
|
|
10
|
+
def compress_data(self, input_data: bytes) -> bytes:
|
|
11
|
+
return lz4.frame.compress(input_data)
|
|
12
|
+
|
|
13
|
+
def decompress_data(self, compressed_data: bytes) -> bytes:
|
|
14
|
+
return lz4.frame.decompress(compressed_data)
|
|
@@ -85,7 +85,7 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
|
|
|
85
85
|
ImageFormats.BC4_UNORM,
|
|
86
86
|
ImageFormats.PAL4,
|
|
87
87
|
ImageFormats.ALPHA4,
|
|
88
|
-
ImageFormats.
|
|
88
|
+
ImageFormats.ALPHA4_16X
|
|
89
89
|
):
|
|
90
90
|
return 4
|
|
91
91
|
elif image_format in (ImageFormats.RGBX2222,
|
|
@@ -95,6 +95,7 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
|
|
|
95
95
|
ImageFormats.BGR332,
|
|
96
96
|
ImageFormats.GRAY8,
|
|
97
97
|
ImageFormats.ALPHA8,
|
|
98
|
+
ImageFormats.ALPHA8_16X,
|
|
98
99
|
ImageFormats.LA44,
|
|
99
100
|
ImageFormats.N64_I8,
|
|
100
101
|
ImageFormats.N64_IA4,
|
|
@@ -74,17 +74,7 @@ class ImageDecoder:
|
|
|
74
74
|
p[3] = 0xFF
|
|
75
75
|
return p
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
def _decode_alpha4_pixel(self, pixel_int: int) -> bytes:
|
|
79
|
-
p = bytearray(4)
|
|
80
|
-
p[0] = 0xFF
|
|
81
|
-
p[1] = 0xFF
|
|
82
|
-
p[2] = 0xFF
|
|
83
|
-
p[3] = pixel_int & 0xFF
|
|
84
|
-
return p
|
|
85
|
-
|
|
86
|
-
# RAWBMP/2 PS2 (4-bit)
|
|
87
|
-
def _decode_rawbmp2_ps2_pixel(self, pixel_int: int) -> bytes:
|
|
77
|
+
def _decode_alpha_16x_pixel(self, pixel_int: int) -> bytes:
|
|
88
78
|
p = bytearray(4)
|
|
89
79
|
p[0] = 0xFF
|
|
90
80
|
p[1] = 0xFF
|
|
@@ -92,8 +82,7 @@ class ImageDecoder:
|
|
|
92
82
|
p[3] = (16 * pixel_int) & 0xFF
|
|
93
83
|
return p
|
|
94
84
|
|
|
95
|
-
|
|
96
|
-
def _decode_alpha8_pixel(self, pixel_int: int) -> bytes:
|
|
85
|
+
def _decode_alpha_only_pixel(self, pixel_int: int) -> bytes:
|
|
97
86
|
p = bytearray(4)
|
|
98
87
|
p[0] = 0xFF
|
|
99
88
|
p[1] = 0xFF
|
|
@@ -584,12 +573,13 @@ class ImageDecoder:
|
|
|
584
573
|
# image_format: (decode_function, bits_per_pixel, image_entry_read_function)
|
|
585
574
|
ImageFormats.RGB121: (_decode_rgb121_byte_pixel, 4, get_uint8),
|
|
586
575
|
ImageFormats.N64_I4: (_decode_i4_pixel, 4, get_uint8), # GRAY, 4bpp
|
|
587
|
-
ImageFormats.ALPHA4: (
|
|
588
|
-
ImageFormats.
|
|
576
|
+
ImageFormats.ALPHA4: (_decode_alpha_only_pixel, 4, get_uint8),
|
|
577
|
+
ImageFormats.ALPHA4_16X: (_decode_alpha_16x_pixel, 4, get_uint8),
|
|
589
578
|
|
|
590
579
|
ImageFormats.RGB121_BYTE: (_decode_rgb121_byte_pixel, 8, get_uint8),
|
|
591
580
|
ImageFormats.GRAY8: (_decode_gray8_pixel, 8, get_uint8),
|
|
592
|
-
ImageFormats.ALPHA8: (
|
|
581
|
+
ImageFormats.ALPHA8: (_decode_alpha_only_pixel, 8, get_uint8),
|
|
582
|
+
ImageFormats.ALPHA8_16X: (_decode_alpha_16x_pixel, 8, get_uint8),
|
|
593
583
|
ImageFormats.LA44: (_decode_la44_pixel, 8, get_uint8),
|
|
594
584
|
ImageFormats.RGBX2222: (_decode_rgbx2222_pixel, 8, get_uint8),
|
|
595
585
|
ImageFormats.RGBA2222: (_decode_rgba2222_pixel, 8, get_uint8),
|
|
@@ -20,7 +20,7 @@ class ImageFormats(Enum):
|
|
|
20
20
|
# 4-bit
|
|
21
21
|
RGB121 = "rgb121" # PIX_FMT_RGB4 / packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb)
|
|
22
22
|
ALPHA4 = "alpha4" # (A4 / Alpha 4-bit)
|
|
23
|
-
|
|
23
|
+
ALPHA4_16X = "alpha4_16x"
|
|
24
24
|
|
|
25
25
|
# 8-bit
|
|
26
26
|
RGBX2222 = "rgbx2222"
|
|
@@ -30,6 +30,7 @@ class ImageFormats(Enum):
|
|
|
30
30
|
BGR332 = "bgr332" # PIX_FMT_BGR8 / packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
|
|
31
31
|
GRAY8 = "gray8" # PIX_FMT_GRAY8 / Y, 8bpp (Y800 / L8 / Luminance 8-bit)
|
|
32
32
|
ALPHA8 = "alpha8" # (A8 / Alpha 8-bit)
|
|
33
|
+
ALPHA8_16X = "alpha8_16x"
|
|
33
34
|
LA44 = "la44" # (LA4 / L4A4 / Luminance 4-bit and Alpha 4-bit)
|
|
34
35
|
R8 = "r8"
|
|
35
36
|
G8 = "g8"
|
|
@@ -8,7 +8,7 @@ from typing import Final
|
|
|
8
8
|
|
|
9
9
|
import setuptools
|
|
10
10
|
|
|
11
|
-
VERSION_NUM: Final[str] = "0.
|
|
11
|
+
VERSION_NUM: Final[str] = "0.49.0"
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def get_long_description() -> str:
|
|
@@ -27,6 +27,8 @@ setuptools.setup(
|
|
|
27
27
|
description="A set of functions useful in reverse engineering.",
|
|
28
28
|
long_description=get_long_description(),
|
|
29
29
|
long_description_content_type="text/markdown",
|
|
30
|
+
license="GPL-3.0-or-later",
|
|
31
|
+
license_files=["LICENSE"],
|
|
30
32
|
url="https://github.com/bartlomiejduda/ReverseBox",
|
|
31
33
|
classifiers=[
|
|
32
34
|
"Programming Language :: Python :: 3",
|
|
@@ -45,25 +47,16 @@ setuptools.setup(
|
|
|
45
47
|
"Environment :: Console",
|
|
46
48
|
"Intended Audience :: Developers",
|
|
47
49
|
"Intended Audience :: Science/Research",
|
|
48
|
-
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
49
50
|
"Operating System :: OS Independent",
|
|
50
51
|
"Natural Language :: English",
|
|
51
52
|
],
|
|
52
|
-
test_suite="tests",
|
|
53
53
|
keywords="ReverseBox, reverse engineering, RE, CRC, Hash, Encryption, Compression, Checksum, Python, image, decode, decoding, "
|
|
54
54
|
"RGB, swizzle, swizzling, morton, twiddle, twiddling, texture, UYVY, YUY2, NV21, NV12, RGBA, RGBA8888, RGB565, RGBA8, BGR, "
|
|
55
55
|
"grayscale, graphics, color, pixel, convert, converting, YUV, RAW, PSP, PS1, PS2, PS3, PS4, XBOX, X360, gamecube, dreamcast, "
|
|
56
56
|
"BC, BC1, BC2, BC3, BC4, BC5, BC6, BC7, DXT1, DXT2, DXT3, PackBits, RLE, Macintosh, Jenkins, murmur, murmur3, one-at-a-time, "
|
|
57
|
-
"additive, ASTC, ETC1, ETC2, DXT2, DXT4, EAC, BASISU, PVRTCI, UASTC, RGBM, RGBD",
|
|
57
|
+
"additive, ASTC, ETC1, ETC2, DXT2, DXT4, EAC, BASISU, PVRTCI, UASTC, RGBM, RGBD, LZ4",
|
|
58
58
|
python_requires=">=3.6",
|
|
59
|
-
install_requires=[
|
|
60
|
-
"lzokay",
|
|
61
|
-
"polib",
|
|
62
|
-
"crc",
|
|
63
|
-
"hashbase",
|
|
64
|
-
"pillow",
|
|
65
|
-
"mmh3",
|
|
66
|
-
],
|
|
59
|
+
install_requires=["lzokay", "polib", "crc", "hashbase", "pillow", "mmh3", "lz4"],
|
|
67
60
|
packages=setuptools.find_packages(exclude=["tests", "tests.*"]),
|
|
68
61
|
package_data={"": ["libs/*.dll"]},
|
|
69
62
|
include_package_data=True,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_internet_ipv4_header.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_re_tiyoruga_dat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_basic_key_guesser.py
RENAMED
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_gianas_return_zda.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_packbits.py
RENAMED
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_rle_executioners.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/compressed_decoder_encoder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/pvrtexlib_decoder_encoder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|