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.
Files changed (116) hide show
  1. {reversebox-0.26.3 → reversebox-0.26.6}/PKG-INFO +2 -1
  2. {reversebox-0.26.3 → reversebox-0.26.6}/README.md +1 -0
  3. {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/PKG-INFO +2 -1
  4. {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/SOURCES.txt +1 -0
  5. reversebox-0.26.6/reversebox/hash/hash_pivotal_games_dat.py +48 -0
  6. {reversebox-0.26.3 → reversebox-0.26.6}/setup.py +1 -1
  7. {reversebox-0.26.3 → reversebox-0.26.6}/LICENSE +0 -0
  8. {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/dependency_links.txt +0 -0
  9. {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/requires.txt +0 -0
  10. {reversebox-0.26.3 → reversebox-0.26.6}/ReverseBox.egg-info/top_level.txt +0 -0
  11. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/__init__.py +0 -0
  12. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/__init__.py +0 -0
  13. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_adler32.py +0 -0
  14. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
  15. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_fletcher16.py +0 -0
  16. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_fletcher32.py +0 -0
  17. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
  18. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_sum8.py +0 -0
  19. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
  20. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
  21. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
  22. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/checksum/checksum_xor8.py +0 -0
  23. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/__init__.py +0 -0
  24. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/common.py +0 -0
  25. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/logger.py +0 -0
  26. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/common/numpy_helper_functions.py +0 -0
  27. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/__init__.py +0 -0
  28. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_jcalg1.py +0 -0
  29. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_lzo.py +0 -0
  30. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_mio0.py +0 -0
  31. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_refpack.py +0 -0
  32. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/compression/compression_zlib.py +0 -0
  33. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/__init__.py +0 -0
  34. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_arc.py +0 -0
  35. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_ccitt.py +0 -0
  36. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_dnp.py +0 -0
  37. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_ea_crcf.py +0 -0
  38. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_kermit.py +0 -0
  39. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_modbus.py +0 -0
  40. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc16_sick.py +0 -0
  41. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc32_asobo.py +0 -0
  42. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc32_iso_hdlc.py +0 -0
  43. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc64_asobo.py +0 -0
  44. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc64_go_iso.py +0 -0
  45. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc8.py +0 -0
  46. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/crc/crc_unix_cksum.py +0 -0
  47. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/__init__.py +0 -0
  48. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_hatch_engine.py +0 -0
  49. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_rot13.py +0 -0
  50. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_basic.py +0 -0
  51. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
  52. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
  53. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
  54. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/__init__.py +0 -0
  55. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_additive.py +0 -0
  56. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_ap.py +0 -0
  57. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_djb2.py +0 -0
  58. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_fnv.py +0 -0
  59. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
  60. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_md2.py +0 -0
  61. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_md5.py +0 -0
  62. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_murmur3.py +0 -0
  63. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_sdbm.py +0 -0
  64. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_sha1.py +0 -0
  65. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/hash/hash_sha2.py +0 -0
  66. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/__init__.py +0 -0
  67. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/common.py +0 -0
  68. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/__init__.py +0 -0
  69. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_gst.py +0 -0
  70. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_lzw.py +0 -0
  71. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_packbits.py +0 -0
  72. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_rle_executioners.py +0 -0
  73. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_rle_tga.py +0 -0
  74. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/compression/compression_zlib.py +0 -0
  75. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/__init__.py +0 -0
  76. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
  77. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/compressed_decoder.py +0 -0
  78. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/gst_decoder.py +0 -0
  79. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/n64_decoder.py +0 -0
  80. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/decoders/yuv_decoder.py +0 -0
  81. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/encoders/__init__.py +0 -0
  82. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/encoders/gst_encoder.py +0 -0
  83. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/file_formats/__init__.py +0 -0
  84. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/file_formats/image_dds.py +0 -0
  85. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/image_decoder.py +0 -0
  86. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/image_encoder.py +0 -0
  87. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/image_formats.py +0 -0
  88. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/palettes/__init__.py +0 -0
  89. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/palettes/palette_random.py +0 -0
  90. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/palettes/palette_vga.py +0 -0
  91. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/pillow_wrapper.py +0 -0
  92. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/__init__.py +0 -0
  93. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
  94. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_bc.py +0 -0
  95. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
  96. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
  97. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_gst.py +0 -0
  98. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_morton.py +0 -0
  99. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
  100. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
  101. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_psp.py +0 -0
  102. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
  103. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_switch.py +0 -0
  104. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/image/swizzling/swizzle_x360.py +0 -0
  105. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/__init__.py +0 -0
  106. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/bytes_handler.py +0 -0
  107. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/bytes_helper_functions.py +0 -0
  108. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/check_file.py +0 -0
  109. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/file_handler.py +0 -0
  110. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/mod_handler.py +0 -0
  111. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/io_files/translation_text_handler.py +0 -0
  112. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/DirectXTex.dll +0 -0
  113. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/__init__.py +0 -0
  114. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/ea_swizzle.dll +0 -0
  115. {reversebox-0.26.3 → reversebox-0.26.6}/reversebox/libs/refpack.dll +0 -0
  116. {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
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 ✔️
@@ -98,6 +98,7 @@ or software researchers).
98
98
  - Murmur3 ✔️ <span style="color:yellow">(wrapper only)</span>
99
99
  - (game-specific) Hercules (TODO) ❌
100
100
  - (game-specific) E-racer (TODO) ❌
101
+ - (game-specific) Pivotal Games DAT Hash ✔️
101
102
 
102
103
  * Image
103
104
  - Decode RGB121 ✔️
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ReverseBox
3
- Version: 0.26.3
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))
@@ -8,7 +8,7 @@ from typing import Final
8
8
 
9
9
  import setuptools
10
10
 
11
- VERSION_NUM: Final[str] = "0.26.3"
11
+ VERSION_NUM: Final[str] = "0.26.6"
12
12
 
13
13
 
14
14
  def get_long_description() -> str:
File without changes
File without changes