Created
May 5, 2025 21:59
-
-
Save Dante383/e583136b502bbe4d7bba16f16dfaa459 to your computer and use it in GitHub Desktop.
Generate TunerPro idhash property
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Courtesy of Mark from TunerPro, thank you! | |
krgb_table = [ | |
1, 87, 49, 12, 176, 178, 102, 166, 121, 193, 6, 84, 249, 230, 44, 163, | |
14, 197, 213, 181, 161, 85, 218, 80, 64, 239, 24, 226, 236, 142, 38, 200, | |
110, 177, 104, 103, 141, 253, 255, 50, 77, 101, 81, 18, 45, 96, 31, 222, | |
25, 107, 190, 70, 86, 237, 240, 34, 72, 242, 20, 214, 244, 227, 149, 235, | |
97, 234, 57, 22, 60, 250, 82, 175, 208, 5, 127, 199, 111, 62, 135, 248, | |
174, 169, 211, 58, 66, 154, 106, 195, 245, 171, 17, 187, 182, 179, 0, 243, | |
132, 56, 148, 75, 128, 133, 158, 100, 130, 126, 91, 13, 153, 246, 216, 219, | |
119, 68, 223, 78, 83, 88, 201, 99, 122, 11, 92, 32, 136, 114, 52, 10, | |
138, 30, 48, 183, 156, 35, 61, 26, 143, 74, 251, 94, 129, 162, 63, 152, | |
170, 7, 115, 167, 241, 206, 3, 150, 55, 59, 151, 220, 90, 53, 23, 131, | |
125, 173, 15, 238, 79, 95, 89, 16, 105, 137, 225, 224, 217, 160, 37, 123, | |
118, 73, 2, 157, 46, 116, 9, 145, 134, 228, 207, 212, 202, 215, 69, 229, | |
27, 188, 67, 124, 168, 252, 42, 4, 29, 108, 21, 247, 19, 205, 39, 203, | |
233, 40, 186, 147, 198, 192, 155, 33, 164, 191, 98, 204, 165, 180, 117, 76, | |
140, 36, 210, 172, 41, 54, 159, 8, 185, 232, 113, 196, 231, 47, 146, 120, | |
51, 65, 28, 144, 254, 221, 93, 189, 194, 139, 112, 43, 71, 109, 184, 209 | |
] | |
HASH32_SEED = 0xDC379ACF | |
ULONG_MAX = 0xFFFFFFFF | |
def hash_buffer32(data: bytes, dw_range: int = ULONG_MAX) -> int: | |
""" | |
Generates a 32-bit hash for the given data. | |
Parameters: | |
data (bytes): The data to hash. If None, returns 0. | |
dw_range (int): The range to confine the hash. Default is 0xFFFFFFFF (no modulo reduction). | |
Returns: | |
int: The resulting 32-bit hash value. | |
""" | |
if data is None: | |
return 0 | |
hash_value = HASH32_SEED | |
for b in data: | |
hash_value ^= krgb_table[b] | |
hash_value = ((hash_value << 5) | (hash_value >> (32 - 5))) & 0xFFFFFFFF | |
# Apply modulo reduction if a specific range is provided. | |
if dw_range != ULONG_MAX: | |
hash_value %= dw_range | |
return hash_value | |
print(hex(hash_buffer32(bytes('CAMSHAFTPO'.encode('utf8'))))) | |
# <ADXVALUE id="CAMSHAFTPO" idhash="0XBA79A83B" title="Camshaft Position-Target"> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment