-
Notifications
You must be signed in to change notification settings - Fork 3
/
utils.py
35 lines (30 loc) · 1.45 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def convert_register_value(hex_value):
# Überprüfe, ob der Wert 'N/A' ist
if hex_value == 'N/A':
return 'N/A', 'N/A', 'N/A'
# Überprüfen, ob hex_value ein ArrayBuffer oder ähnliches Objekt ist
if isinstance(hex_value, (bytes, bytearray, memoryview)):
# Konvertiere jeden Byte-Wert in einen zweistelligen Hexadezimalwert und füge sie zu einem vollständigen String zusammen
hex_value = ''.join(format(b, '02x') for b in hex_value)
elif hasattr(hex_value, 'byteLength'): # Prüfen, ob es sich um Frida ArrayBuffer handelt
# ArrayBuffer in ein Bytearray umwandeln und Hex-String erstellen
hex_value = ''.join(format(b, '02x') for b in bytearray(hex_value))
elif isinstance(hex_value, str) and hex_value.startswith('0x'):
# Falls hex_value ein regulärer Hex-String ist, '0x' entfernen
hex_value = hex_value[2:]
# Konvertiere von hex zu int
try:
int_value = int(hex_value, 16)
except ValueError:
int_value = '<na>'
# Konvertiere zu Bytes
try:
byte_value = bytes.fromhex(hex_value) # Hex-String zu Bytes konvertieren
except ValueError:
byte_value = b'<na>'
# Versuche, eine String-Darstellung zu erhalten
try:
str_value = byte_value.decode('utf-8') if byte_value != b'<na>' else '<na>'
except UnicodeDecodeError:
str_value = '<na>' # Wenn Dekodierung fehlschlägt
return int_value, str_value, byte_value