Skip to content

Commit 0cb18de

Browse files
committed
decode_jk can decode the full reply now. Further test is needed anyway
1 parent 98d7c36 commit 0cb18de

File tree

1 file changed

+55
-1
lines changed

1 file changed

+55
-1
lines changed

pressureTest.py

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,17 +302,49 @@ def decode_jk(response_to_decode: bytes, head_len: int):
302302
'1': 'running',
303303
'2': 'not running',
304304
'3': 'console disabled by GUI'}
305+
305306
TAMPER_STATUS_CODE = {
306307
'0': 'Unknown',
307308
'1': 'Not Tampered',
308309
'2': 'Tampered'}
310+
309311
HOST_STATUS_CODE = {
310312
'0': 'unknown',
311313
'1': 'running',
312314
'2': 'not running',
313315
'3': 'not configured'
314316
}
315317

318+
TAMPER_CAUSE_CODE = {
319+
'00': 'unknown',
320+
'01': 'temp out of range',
321+
'02': 'battery low',
322+
'03': 'erase button pressed',
323+
'04': 'security processor watchdog',
324+
'05': 'power too high',
325+
'06': 'security processor restart',
326+
'07': 'motion detected',
327+
'08': 'case tampered',
328+
'09': 'TSPP Module',
329+
'10': 'General'
330+
}
331+
LMK_ALGORITHM_CODE = {
332+
'0': '3DES2Key',
333+
'1': '3DES3Key',
334+
'2': 'AES 256-bit'
335+
}
336+
LMK_SCHEME_CODE = {
337+
'V': 'Variant',
338+
'K': 'Keyblock'
339+
}
340+
LMK_STATUS_CODE = {
341+
'L': 'Live',
342+
'T': 'Test'
343+
}
344+
LMK_AUTH_CODE = {
345+
'0': 'Not authorized',
346+
'1': 'Authorized'
347+
}
316348
msg_len = int.from_bytes(response_to_decode[:2], byteorder='big', signed=False)
317349
print("Message length", msg_len)
318350
response_to_decode = response_to_decode.decode('ascii', 'replace')
@@ -348,7 +380,7 @@ def decode_jk(response_to_decode: bytes, head_len: int):
348380
print("Tamper State: ", TAMPER_STATUS_CODE.get(tamper_state, '?'))
349381
str_pointer = str_pointer + 1
350382
if tamper_state == '2':
351-
print("Tamper Cause: ", response_to_decode[str_pointer:str_pointer + 2])
383+
print("Tamper Cause: ", TAMPER_CAUSE_CODE.get(response_to_decode[str_pointer:str_pointer + 2], '?'))
352384
str_pointer = str_pointer + 2
353385
print("Tamper Date: ", response_to_decode[str_pointer:str_pointer + 6])
354386
str_pointer = str_pointer + 6
@@ -363,6 +395,28 @@ def decode_jk(response_to_decode: bytes, head_len: int):
363395
str_pointer = str_pointer + 2
364396
if int(lmk_loaded) > 0:
365397
print("There are LMK loaded")
398+
remaining_to_decode = response_to_decode[str_pointer:]
399+
lmks_string = str.split(remaining_to_decode, '\x15')[0]
400+
lmks_array = str.split(lmks_string, '\x14')
401+
for lmk in lmks_array:
402+
if len(lmk) > 0:
403+
local_lmk_pointer = 0
404+
print("LMK ID: ", lmk[local_lmk_pointer:local_lmk_pointer + 2])
405+
local_lmk_pointer = local_lmk_pointer + 2
406+
print("Authorised: ", LMK_AUTH_CODE.get(lmk[local_lmk_pointer:local_lmk_pointer + 1], '?'))
407+
local_lmk_pointer = local_lmk_pointer + 1
408+
print("Num Authorised Activities: ", lmk[local_lmk_pointer:local_lmk_pointer + 2])
409+
local_lmk_pointer = local_lmk_pointer + 2
410+
print("LMK Scheme: ", LMK_SCHEME_CODE.get(lmk[local_lmk_pointer:local_lmk_pointer + 1], '?'))
411+
local_lmk_pointer = local_lmk_pointer + 1
412+
print("Algorithm: ", LMK_ALGORITHM_CODE.get(lmk[local_lmk_pointer:local_lmk_pointer + 1], '?'))
413+
local_lmk_pointer = local_lmk_pointer + 1
414+
print("Status: ", LMK_STATUS_CODE.get(lmk[local_lmk_pointer:local_lmk_pointer + 1], '?'))
415+
local_lmk_pointer = local_lmk_pointer + 1
416+
print("Comments: ", lmk[local_lmk_pointer:])
417+
fraud_detection = str.split(response_to_decode[str_pointer:], '\x15')[1]
418+
print("Fraud detection Exceeded: ", fraud_detection[0])
419+
print("PIN attacks exceeded: ", fraud_detection[1])
366420
print("")
367421

368422

0 commit comments

Comments
 (0)