mobile: few fixes in the 5G NAS

This commit is contained in:
mich 2019-12-04 17:06:56 +01:00
parent 20f86648d6
commit f94d1f5595
4 changed files with 16 additions and 7 deletions

View File

@ -104,6 +104,12 @@ def parse_NAS5G(buf, inner=True, sec_hdr=True):
# error 97: message type non-existent or not implemented
return None, 97
#
try:
Msg.from_bytes(buf)
except Exception:
# error 96, invalid mandatory info
return None, 96
#
if inner and pd == 126:
if typ in (65, 76, 79, 94):
nasc = Msg['NASContainer']

View File

@ -579,7 +579,7 @@ class EPSUpdateType(Envelope):
class NAS_KSI(Envelope):
_GEN = (
Uint('TSC', bl=1, dic={0:' native security context', 1:'mapped security context'}),
Uint('TSC', bl=1, dic={0:'native security context', 1:'mapped security context'}),
Uint('Value', bl=3, dic={7:'no key available'})
)

View File

@ -157,7 +157,7 @@ class FGMMAuthenticationRequest(Layer3):
Type1V('NAS_KSI', val={'V': 7}, IE=NAS_KSI()),
Type4LV('ABBA', val={'V':b'\0\0'}),
Type3TV('RAND', val={'T':0x21, 'V':16*b'\0'}, bl={'V':128}),
Type4LV('AUTN', val={'V':16*b'\0'}, IE=AUTN()),
Type4TLV('AUTN', val={'T':0x20, 'V':16*b'\0'}, IE=AUTN()),
Type6TLVE('EAPMsg', val={'T':0x78, 'V':b'\0\0\0\0\0'})
)
@ -269,8 +269,8 @@ class FGMMRegistrationAccept(Layer3):
_name = '5GMMRegistrationAccept'
_GEN = (
FGMMHeader(val={'Type':66}),
Type4LV('5GSRegResult', val={'V':b'\0'}, IE=FGSRegType()),
Type6LVE('GUTI', val={'V':b'\0\0\0\0'}, IE=FGSID()),
Type4LV('5GSRegResult', val={'V':b'\0'}, IE=FGSRegResult()),
Type6TLVE('GUTI', val={'T': 0x77, 'V':b'\0\0\0\0'}, IE=FGSID()),
Type4TLV('EquivPLMNList', val={'T':0x4A, 'V':3*b'\0'}, IE=PLMNList()),
Type4TLV('5GSTAIList', val={'T':0x54, 'V':7*b'\0'}, IE=FGSTAIList()),
Type4TLV('AllowedNSSAI', val={'T':0x15, 'V':b'\0\0'}, IE=NSSAI()),
@ -596,7 +596,7 @@ class FGMMSecurityModeCommand(Layer3):
Uint('spare', bl=4, rep=REPR_HEX),
Type1V('NAS_KSI', val={'V':0}, IE=NAS_KSI()),
Type4LV('UESecCap', val={'V':b'\0\0'}, IE=UESecCap()),
Type1TV('IMEISVReq', val={'T':0xC, 'V':0}, IE=IMEISVReq()),
Type1TV('IMEISVReq', val={'T':0xE, 'V':0}, IE=IMEISVReq()),
Type3TV('EPSNASSecAlgo', val={'T':0x57, 'V':b'\x11'}, bl={'V':8}, IE=EPSNASSecAlgo()),
Type4TLV('Add5GSecInfo', val={'T':0x36, 'V':b'\0'}, IE=Add5GSecInfo()),
Type6TLVE('EAPMsg', val={'T':0x78, 'V':b'\0\0\0\0\0'}),

View File

@ -159,6 +159,7 @@ class FGMMCap(Envelope):
ENV_SEL_TRANS = False
_name = '5GMMCap'
_GEN = (
Uint('SGC', bl=1),
Uint('5G-HC-CP-CIoT', bl=1),
@ -446,7 +447,7 @@ class FGSIDDigit(Envelope):
Uint('Digit1', val=0xF, bl=4, rep=REPR_HEX),
Uint('Odd', bl=1),
Uint('Type', val=FGSIDTYPE_IMEI, bl=3, dic=FGSIDType_dict),
Buf('Digits', val=b'', rep=REPR_HEX)
BufBCD('Digits', val='')
)
@ -490,6 +491,8 @@ class FGSIDUnk(Envelope):
class FGSID(Envelope):
_name = '5GSID'
# FGSIDTYPE_NO (0) -> FGSIDNone
# FGSIDTYPE_SUPI (1) -> FGSIDSUPI
# FGSIDTYPE_GUTI (2) -> FGSIDGUTI
@ -626,7 +629,7 @@ _FGSRegResult_dict = {
class FGSRegResult(Envelope):
_name = '5GSRegType'
_name = '5GSRegResult'
_GEN = (
Uint('spare', bl=3),
Uint('NSSAAPerformed', bl=1),