ReverseBox 0.26.3__tar.gz → 0.26.6__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.26.3 → reversebox-0.26.6}/PKG-INFO +2 -1
- {reversebox-0.26.3 → reversebox-0.26.6}/README.md +1 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/PKG-INFO +2 -1
- {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/SOURCES.txt +1 -0
- reversebox-0.26.6/reversebox/hash/hash_pivotal_games_dat.py +48 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/setup.py +1 -1
- {reversebox-0.26.3 → reversebox-0.26.6}/LICENSE +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/dependency_links.txt +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/requires.txt +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/top_level.txt +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_adler32.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_fletcher16.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_fletcher32.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_sum8.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_xor8.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/common.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/logger.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/numpy_helper_functions.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_jcalg1.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_lzo.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_mio0.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_refpack.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_zlib.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_arc.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_ccitt.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_dnp.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_ea_crcf.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_kermit.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_modbus.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_sick.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc32_asobo.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc32_iso_hdlc.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc64_asobo.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc64_go_iso.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc8.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc_unix_cksum.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_hatch_engine.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_rot13.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_basic.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_additive.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_ap.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_djb2.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_fnv.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_md2.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_md5.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_murmur3.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_sdbm.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_sha1.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_sha2.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/common.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_gst.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_lzw.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_packbits.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_rle_executioners.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_rle_tga.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_zlib.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/compressed_decoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/gst_decoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/n64_decoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/yuv_decoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/encoders/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/encoders/gst_encoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/file_formats/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/file_formats/image_dds.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/image_decoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/image_encoder.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/image_formats.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/palettes/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/palettes/palette_random.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/palettes/palette_vga.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/pillow_wrapper.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_bc.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_gst.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_morton.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_psp.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_switch.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_x360.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/bytes_handler.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/bytes_helper_functions.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/check_file.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/file_handler.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/mod_handler.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/translation_text_handler.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/DirectXTex.dll +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/__init__.py +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/ea_swizzle.dll +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/refpack.dll +0 -0
- {reversebox-0.26.3 → reversebox-0.26.6}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.6
|
|
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
|
|
@@ -135,6 +135,7 @@ or software researchers).
|
|
|
135
135
|
- Murmur3 ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
136
136
|
- (game-specific) Hercules (TODO) ❌
|
|
137
137
|
- (game-specific) E-racer (TODO) ❌
|
|
138
|
+
- (game-specific) Pivotal Games DAT Hash ✔️
|
|
138
139
|
|
|
139
140
|
* Image
|
|
140
141
|
- Decode RGB121 ✔️
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.6
|
|
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
|
|
@@ -135,6 +135,7 @@ or software researchers).
|
|
|
135
135
|
- Murmur3 ✔️ <span style="color:yellow">(wrapper only)</span>
|
|
136
136
|
- (game-specific) Hercules (TODO) ❌
|
|
137
137
|
- (game-specific) E-racer (TODO) ❌
|
|
138
|
+
- (game-specific) Pivotal Games DAT Hash ✔️
|
|
138
139
|
|
|
139
140
|
* Image
|
|
140
141
|
- Decode RGB121 ✔️
|
|
@@ -58,6 +58,7 @@ reversebox/hash/hash_jenkins_one_at_a_time.py
|
|
|
58
58
|
reversebox/hash/hash_md2.py
|
|
59
59
|
reversebox/hash/hash_md5.py
|
|
60
60
|
reversebox/hash/hash_murmur3.py
|
|
61
|
+
reversebox/hash/hash_pivotal_games_dat.py
|
|
61
62
|
reversebox/hash/hash_sdbm.py
|
|
62
63
|
reversebox/hash/hash_sha1.py
|
|
63
64
|
reversebox/hash/hash_sha2.py
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Copyright © 2025 Bartłomiej Duda
|
|
3
|
+
License: GPL-3.0 License
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
|
|
8
|
+
# Pivotal Games DAT hash
|
|
9
|
+
# Used for hashing filenames in DAT archives in games like:
|
|
10
|
+
# - Conflict: Desert Storm
|
|
11
|
+
# - Conflict: Desert Storm II
|
|
12
|
+
# - Conflict: Vietnam
|
|
13
|
+
# - Conflict: Global Terror
|
|
14
|
+
# - Conflict: Denied Ops
|
|
15
|
+
# - The Great Escape
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class PivotalGamesDATHashHandler:
|
|
19
|
+
def __init__(self):
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def calculate_pivotal_games_dat_hash_from_string(input_string: str) -> int:
|
|
24
|
+
j = 0
|
|
25
|
+
dw_hash = np.int32(1)
|
|
26
|
+
b_counter = np.uint8(1)
|
|
27
|
+
dw_blocks = 8 * len(input_string)
|
|
28
|
+
|
|
29
|
+
if dw_blocks > 0:
|
|
30
|
+
for i in range(dw_blocks):
|
|
31
|
+
A = (dw_hash & 0x200000) != 0
|
|
32
|
+
B = (dw_hash & 2) != 0
|
|
33
|
+
C = (dw_hash & 1) != 0
|
|
34
|
+
D = dw_hash < 0
|
|
35
|
+
|
|
36
|
+
dw_hash *= 2
|
|
37
|
+
|
|
38
|
+
X = (ord(input_string[j]) & b_counter) != 0
|
|
39
|
+
|
|
40
|
+
if D ^ (A ^ B ^ C ^ X):
|
|
41
|
+
dw_hash |= 1
|
|
42
|
+
|
|
43
|
+
b_counter *= 2
|
|
44
|
+
if b_counter == 0:
|
|
45
|
+
j += 1
|
|
46
|
+
b_counter = np.uint8(1)
|
|
47
|
+
|
|
48
|
+
return int(np.uint32(dw_hash))
|
|
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.26.3 → reversebox-0.26.6}/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
|
|
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.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_basic_key_guesser.py
RENAMED
|
File without changes
|
{reversebox-0.26.3 → reversebox-0.26.6}/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
|
{reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_packbits.py
RENAMED
|
File without changes
|
{reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_rle_executioners.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
|
|
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.26.3 → reversebox-0.26.6}/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
|