Compare commits

...

3 Commits

Author SHA1 Message Date
Philipp Maier 65b527ba08 sysmo-isim-tool: allow selection of 4g5g auth algo individually
At the moment we set the algorithm type for 4g5g to the same algorithm
type we use for 3g. There is no way to select the algorithm type for
4g5g individually.

With the Advent of TUAK users might need to set the 4g5g algorithm to
TUAK and the Algorithm used for 3g to something else (e.g. Milenage). So
let's allow to select the algorithm for 4g5g individually, but only if
the user explicitly defines it.

Related: SYS#6473
2023-06-23 11:11:26 +02:00
Philipp Maier fb9d5f7591 sysmo_isim_sja2: convert #comments to python comments where possible
Related: SYS#6473
2023-06-23 10:07:43 +02:00
Philipp Maier a97d2a2858 sysmo_isim_sja2: rename classes SYSMO_ISIMSJA2_ to SYSMO_ISIMSJAX_
The classes that model the file layout are applicable on both card
models, so lets replace the 2 with an X
2023-06-23 10:07:26 +02:00
6 changed files with 431 additions and 116 deletions

View File

@ -58,9 +58,15 @@ class Common():
show_iccid = False
show_aid = False
def __init__(self, argv, getopts, getopts_long):
# This flag specifies whether the commandline options should offer writing auth parameters (algorithm to use
# for authentication). The commandline options are not implemented separately for each card since the method
# calls are nearly the same for all card generations.
write_auth_4g5g = False
def __init__(self, argv, getopts, getopts_long, write_auth_4g5g = False):
self._banner()
self.write_auth_4g5g = write_auth_4g5g
# Analyze commandline options
try:
@ -98,7 +104,7 @@ class Common():
elif opt in ("-t", "--auth"):
self.show_auth = True
elif opt in ("-T", "--set-auth"):
self.write_auth = arg.split(':',1)
self.write_auth = arg.split(':', 2)
elif opt in ("-o", "--opc"):
self.show_opc = True
elif opt in ("-O", "--set-op"):
@ -143,8 +149,11 @@ class Common():
print(" -L, --set-milenage HEXSTRING ... Set milenage parameters")
print(" -k, --key ...................... Show auth key value")
print(" -K, --set-key .................. Set auth key value")
print(" -t, --auth ..................... Show Authentication algorithms")
print(" -T, --set-auth 2G:3G ........... Set 2G/3G Auth algo (e.g. COMP128v1:COMP128v1)")
print(" -t, --auth ..................... Show authentication algorithms")
if self.write_auth_4g5g:
print(" -T, --set-auth 2g:3g[:4g5g] .... Set 2G/3G auth algo (e.g. COMP128v1:COMP128v1)")
else:
print(" -T, --set-auth 2g:3g ........... Set 2G/3G auth algo (e.g. COMP128v1:COMP128v1)")
print(" -o, --opc ...................... Show OP/c configuration")
print(" -O, --set-op HEXSTRING ......... Set OP value")
print(" -C, --set-opc HEXSTRING ........ Set OPc value")
@ -192,7 +201,10 @@ class Common():
self.sim.show_auth_params()
if self.write_auth:
self.sim.write_auth_params(self.write_auth[0], self.write_auth[1])
if self.write_auth_4g5g and len(self.write_auth) > 2:
self.sim.write_auth_params(self.write_auth[0], self.write_auth[1], self.write_auth[2])
else:
self.sim.write_auth_params(self.write_auth[0], self.write_auth[1])
if self.show_opc:
self.sim.show_opc_params()

View File

@ -71,7 +71,7 @@ class Application(Common):
def main(argv):
Application(argv, "d", ["dump"])
Application(argv, "d", ["dump"], True)
if __name__ == "__main__":

View File

@ -71,7 +71,7 @@ class Application(Common):
def main(argv):
Application(argv, "d", ["dump"])
Application(argv, "d", ["dump"], True)
if __name__ == "__main__":

View File

@ -91,7 +91,7 @@ sysmo_isimsja5_algorithms = sysmo_isimsja2_algorithms + [
(SYSMO_ISIMSJA5_ALGO_TUAK, 'TUAK'),
]
class SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY:
class SYSMO_ISIMSJAX_FILE_EF_XSIM_AUTH_KEY:
"""
Superclass model that generates that handles the header byte of
SYSMO_ISIMSJA2_EF_USIM_AUTH_KEY, SYSMO_ISIMSJA2_EF_USIM_AUTH_KEY_2G
@ -139,7 +139,7 @@ class SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY:
return out
class SYSMO_ISIMSJA2_FILE_EF_SIM_AUTH_KEY(SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY):
class SYSMO_ISIMSJAX_FILE_EF_SIM_AUTH_KEY(SYSMO_ISIMSJAX_FILE_EF_XSIM_AUTH_KEY):
key = [0xAA] * 16
opc = [0xBB] * 16
@ -180,7 +180,7 @@ class SYSMO_ISIMSJA2_FILE_EF_SIM_AUTH_KEY(SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY):
return out
class SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY):
class SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(SYSMO_ISIMSJAX_FILE_EF_XSIM_AUTH_KEY):
full_res = True # Return full 8-byte RES or first 4 bytes only
ext_res = False # Return 16 byte RES (ignores full_res, only valid with 3G XOR)
@ -192,7 +192,7 @@ class SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY)
if content == None:
return
SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY.__init__(self, content)
SYSMO_ISIMSJAX_FILE_EF_XSIM_AUTH_KEY.__init__(self, content)
header = content[0]
self.full_res = bool((header >> 6) & 1)
@ -206,7 +206,7 @@ class SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY)
dump = ""
pfx = " "
dump += SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY.__str__(self)
dump += SYSMO_ISIMSJAX_FILE_EF_XSIM_AUTH_KEY.__str__(self)
if self.full_res == True and self.ext_res == False:
dump += pfx + "3G: Return full 8-byte RES\n"
elif self.full_res == False and self.ext_res == False:
@ -235,7 +235,7 @@ class SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY)
def encode(self) -> list:
out = SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY.encode(self)
out = SYSMO_ISIMSJAX_FILE_EF_XSIM_AUTH_KEY.encode(self)
if self.full_res == True:
out[0] |= 1 << 6
if self.ext_res == True:
@ -250,11 +250,11 @@ class SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(SYSMO_ISIMSJA2_FILE_EF_XSIM_AUTH_KEY)
# EF_USIM_AUTH_KEY_2G and EF_USIM_AUTH_KEY_GBA have the same layout as
# EF_USIM_AUTH_KEY, so there is nothing to specialize other than the class name
class SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY):
class SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_2G(SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY):
pass
class SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_GBA(SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY):
class SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_GBA(SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY):
pass
@ -310,7 +310,7 @@ class SYSMO_ISIMSJA2_FILE_EF_MILENAGE_CFG:
return out
class SYSMO_ISIMSJA2_FILE_EF_USIM_SQN:
class SYSMO_ISIMSJAX_FILE_EF_USIM_SQN:
# Flag1:
ind_size_bits = 5 # speficy file length by 2^ind_len
@ -485,8 +485,10 @@ class Sysmo_isim_sja2(Sysmo_usim):
if card_detected != True:
sys.exit(1)
# Show current milenage parameters
def show_milenage_params(self):
"""
Show current milenage parameters
"""
print("Reading Milenage parameters...")
self._init()
@ -500,8 +502,10 @@ class Sysmo_isim_sja2(Sysmo_usim):
print(str(ef))
print("")
# Write new milenage parameters
def write_milenage_params(self, params):
"""
Write new milenage parameters
"""
print("Programming Milenage parameters...")
if (len(params) < 85):
@ -568,27 +572,27 @@ class Sysmo_isim_sja2(Sysmo_usim):
self.__select_xsim_auth_key(isim = False, _2G = True)
res = self._read_binary(self.sim.filelen)
print(" * ADF_USIM/EF_USIM_AUTH_KEY_2G:")
print(SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_2G(res.apdu))
if self.sim.has_isim:
# ADF_ISIM/EF_ISIM_AUTH_KEY_2G:
self.__select_xsim_auth_key(isim = True, _2G = True)
res = self._read_binary(self.sim.filelen)
print(" * ADF_ISIM/EF_ISIM_AUTH_KEY_2G:")
print(SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_2G(res.apdu))
# ADF_USIM/EF_USIM_AUTH_KEY:
self.__select_xsim_auth_key(isim = False, _2G = False)
res = self._read_binary(self.sim.filelen)
print(" * ADF_USIM/EF_USIM_AUTH_KEY:")
print(SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu))
if self.sim.has_isim:
# ADF_ISIM/EF_ISIM_AUTH_KEY:
self.__select_xsim_auth_key(isim = True, _2G = False)
res = self._read_binary(self.sim.filelen)
print(" * ADF_ISIM/EF_ISIM_AUTH_KEY:")
print(SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu))
# ADF_USIM/EF_MILENAGE_CFG:
self.sim.select(GSM_SIM_MF)
@ -613,7 +617,7 @@ class Sysmo_isim_sja2(Sysmo_usim):
self.sim.select(SYSMO_ISIMSJA2_EF_USIM_SQN)
res = self._read_binary(self.sim.filelen)
print(" * ADF_USIM/EF_USIM_SQN:")
print(SYSMO_ISIMSJA2_FILE_EF_USIM_SQN(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_SQN(res.apdu))
if self.sim.has_isim:
# ADF_USIM/EF_ISIM_SQN:
@ -622,7 +626,7 @@ class Sysmo_isim_sja2(Sysmo_usim):
self.sim.select(SYSMO_ISIMSJA2_EF_USIM_SQN)
res = self._read_binary(self.sim.filelen)
print(" * ADF_ISIM/EF_ISIM_SQN:")
print(SYSMO_ISIMSJA2_FILE_EF_USIM_SQN(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_SQN(res.apdu))
def show_key_params(self):
"""
@ -635,7 +639,7 @@ class Sysmo_isim_sja2(Sysmo_usim):
print(" * Reading...")
self.__select_xsim_auth_key(isim = False, _2G = True)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
print(" * Current Key setting:")
print(" Key: " + hexdump(ef.key))
@ -652,49 +656,61 @@ class Sysmo_isim_sja2(Sysmo_usim):
print(" * Programming...")
self.__select_xsim_auth_key(isim = False, _2G = True)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
ef.key = key
self.sim.update_binary(ef.encode())
self.__select_xsim_auth_key(isim = False, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.key = key
self.sim.update_binary(ef.encode())
if self.sim.has_isim:
self.__select_xsim_auth_key(isim = True, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.key = key
self.sim.update_binary(ef.encode())
print("")
# Show current athentication parameters
# (Which algorithim is used for which rat?)
def show_auth_params(self):
"""
Show current authentication parameters
"""
print("Reading Authentication parameters...")
self._init()
print(" * Reading...")
self.__select_xsim_auth_key(isim = False, _2G = True)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
algo_2g = ef.algo
self.__select_xsim_auth_key(isim = False, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
algo_3g = ef.algo
if self.sim.has_isim:
self.__select_xsim_auth_key(isim = True, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
algo_4g5g = ef.algo
else:
algo_4g5g = algo_3g
print(" * Current algorithm setting:")
print(" 2G: %d=%s" % (algo_2g, id_to_str(self.algorithms, algo_2g)))
print(" 3G: %d=%s" % (algo_3g, id_to_str(self.algorithms, algo_3g)))
print(" 2g: %d=%s" % (algo_2g, id_to_str(self.algorithms, algo_2g)))
print(" 3g: %d=%s" % (algo_3g, id_to_str(self.algorithms, algo_3g)))
print(" 4g5g: %d=%s" % (algo_3g, id_to_str(self.algorithms, algo_4g5g)))
print("")
# Program new authentication parameters
def write_auth_params(self, algo_2g_str, algo_3g_str):
def write_auth_params(self, algo_2g_str, algo_3g_str, algo_4g5g_str = None):
"""
Write new authentication parameters
"""
print("Programming Authentication parameters...")
self._init()
@ -708,35 +724,46 @@ class Sysmo_isim_sja2(Sysmo_usim):
else:
algo_3g = str_to_id(self.algorithms, algo_3g_str)
if algo_4g5g_str:
if algo_4g5g_str.isdigit():
algo_4g5g = int(algo_4g5g_str)
else:
algo_4g5g = str_to_id(self.algorithms, algo_4g5g_str)
else:
algo_4g5g = algo_3g
print(" * New algorithm setting:")
print(" 2G: %d=%s" % (algo_2g, id_to_str(self.algorithms, algo_2g)))
print(" 3G: %d=%s" % (algo_3g, id_to_str(self.algorithms, algo_3g)))
print(" 2g: %d=%s" % (algo_2g, id_to_str(self.algorithms, algo_2g)))
print(" 3g: %d=%s" % (algo_3g, id_to_str(self.algorithms, algo_3g)))
print(" 4g5g: %d=%s" % (algo_4g5g, id_to_str(self.algorithms, algo_4g5g)))
print(" * Programming...")
self.__select_xsim_auth_key(isim = False, _2G = True)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.algo = algo_2g
self.sim.update_binary(ef.encode())
self.__select_xsim_auth_key(isim = False, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.algo = algo_3g
self.sim.update_binary(ef.encode())
if self.sim.has_isim:
self.__select_xsim_auth_key(isim = True, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.algo = algo_3g
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.algo = algo_4g5g
self.sim.update_binary(ef.encode())
print("")
# Show current OPc value
def show_opc_params(self):
"""
Show OP/OPc current configuration. (see also method: write_opc_params).
"""
print("Reading OP/c value...")
self._init()
@ -744,7 +771,7 @@ class Sysmo_isim_sja2(Sysmo_usim):
print(" * Reading...")
self.__select_xsim_auth_key(isim = False, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
if ef.use_opc:
mode_str = "OPc"
@ -755,8 +782,10 @@ class Sysmo_isim_sja2(Sysmo_usim):
print(" %s: %s" % (mode_str, hexdump(ef.opc)))
print("")
# Program new OPc value
def write_opc_params(self, select, op):
"""
Program new OPc value
"""
if select:
print("Writing OPc value...")
mode_str = "OPc"
@ -771,7 +800,7 @@ class Sysmo_isim_sja2(Sysmo_usim):
print(" * Programming...")
self.__select_xsim_auth_key(isim = False, _2G = True)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY_2G(res.apdu)
ef.opc = op
ef.use_opc = bool(select)
self.sim.update_binary(ef.encode())
@ -779,22 +808,24 @@ class Sysmo_isim_sja2(Sysmo_usim):
if self.sim.has_isim:
self.__select_xsim_auth_key(isim = True, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.opc = op
ef.use_opc = bool(select)
self.sim.update_binary(ef.encode())
self.__select_xsim_auth_key(isim = False, _2G = False)
res = self._read_binary(self.sim.filelen)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_AUTH_KEY(res.apdu)
ef.opc = op
ef.use_opc = bool(select)
self.sim.update_binary(ef.encode())
print("")
# Show current milenage SQN parameters
def show_milenage_sqn_params(self):
"""
Show current milenage SQN parameters
"""
print("Reading Milenage Sequence parameters...")
self._init()
@ -803,7 +834,7 @@ class Sysmo_isim_sja2(Sysmo_usim):
self.sim.card.SELECT_ADF_USIM()
self.sim.select(SYSMO_ISIMSJA2_EF_USIM_SQN)
res = self._read_binary(self.sim.filelen)
print(SYSMO_ISIMSJA2_FILE_EF_USIM_SQN(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_SQN(res.apdu))
if self.sim.has_isim:
print(" * Current SQN Configuration for ADF_ISIM:")
@ -811,12 +842,14 @@ class Sysmo_isim_sja2(Sysmo_usim):
self.sim.card.SELECT_ADF_ISIM()
self.sim.select(SYSMO_ISIMSJA2_EF_USIM_SQN)
res = self._read_binary(self.sim.filelen)
print(SYSMO_ISIMSJA2_FILE_EF_USIM_SQN(res.apdu))
print(SYSMO_ISIMSJAX_FILE_EF_USIM_SQN(res.apdu))
print("")
# Reset milenage SQN configuration
def reset_milenage_sqn_params(self):
"""
Reset milenage SQN configuration
"""
print(" * Resetting SQN Configuration to defaults...")
self._init()
@ -825,13 +858,13 @@ class Sysmo_isim_sja2(Sysmo_usim):
self.sim.card.SELECT_ADF_USIM()
self.sim.select(SYSMO_ISIMSJA2_EF_USIM_SQN)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_SQN()
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_SQN()
self.sim.update_binary(ef.encode())
if self.sim.has_isim:
self.sim.card.SELECT_ADF_ISIM()
self.sim.select(SYSMO_ISIMSJA2_EF_USIM_SQN)
ef = SYSMO_ISIMSJA2_FILE_EF_USIM_SQN()
ef = SYSMO_ISIMSJAX_FILE_EF_USIM_SQN()
self.sim.update_binary(ef.encode())
print("")

View File

@ -16,8 +16,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 1=COMP128v1
3G: 1=COMP128v1
2g: 1=COMP128v1
3g: 1=COMP128v1
4g5g: 1=COMP128v1
* Programming...
Done!
@ -40,8 +41,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 1=COMP128v1
3G: 1=COMP128v1
2g: 1=COMP128v1
3g: 1=COMP128v1
4g5g: 1=COMP128v1
Done!
sysmoISIM-SJA2 parameterization tool
@ -62,8 +64,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 3=COMP128v3
3G: 1=COMP128v1
2g: 3=COMP128v3
3g: 1=COMP128v1
4g5g: 1=COMP128v1
* Programming...
Done!
@ -86,8 +89,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 3=COMP128v3
3G: 1=COMP128v1
2g: 3=COMP128v3
3g: 1=COMP128v1
4g5g: 1=COMP128v1
Done!
sysmoISIM-SJA2 parameterization tool
@ -108,8 +112,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 4=MILENAGE
3G: 1=COMP128v1
2g: 4=MILENAGE
3g: 1=COMP128v1
4g5g: 1=COMP128v1
* Programming...
Done!
@ -132,8 +137,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 4=MILENAGE
3G: 1=COMP128v1
2g: 4=MILENAGE
3g: 1=COMP128v1
4g5g: 1=COMP128v1
Done!
sysmoISIM-SJA2 parameterization tool
@ -154,8 +160,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 5=SHA1-AKA
3G: 1=COMP128v1
2g: 5=SHA1-AKA
3g: 1=COMP128v1
4g5g: 1=COMP128v1
* Programming...
Done!
@ -178,8 +185,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 5=SHA1-AKA
3G: 1=COMP128v1
2g: 5=SHA1-AKA
3g: 1=COMP128v1
4g5g: 1=COMP128v1
Done!
sysmoISIM-SJA2 parameterization tool
@ -200,8 +208,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 15=XOR
3G: 1=COMP128v1
2g: 15=XOR
3g: 1=COMP128v1
4g5g: 1=COMP128v1
* Programming...
Done!
@ -224,8 +233,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 15=XOR
3G: 1=COMP128v1
2g: 15=XOR
3g: 1=COMP128v1
4g5g: 1=COMP128v1
Done!
sysmoISIM-SJA2 parameterization tool
@ -246,8 +256,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 1=COMP128v1
3G: 4=MILENAGE
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=MILENAGE
* Programming...
Done!
@ -270,8 +281,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 1=COMP128v1
3G: 4=MILENAGE
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=MILENAGE
Done!
sysmoISIM-SJA2 parameterization tool
@ -292,8 +304,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 3=COMP128v3
3G: 15=XOR
2g: 3=COMP128v3
3g: 15=XOR
4g5g: 15=XOR
* Programming...
Done!
@ -316,8 +329,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 3=COMP128v3
3G: 15=XOR
2g: 3=COMP128v3
3g: 15=XOR
4g5g: 15=XOR
Done!
sysmoISIM-SJA2 parameterization tool
@ -338,8 +352,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 2=COMP128v2
3G: 2=COMP128v2
2g: 2=COMP128v2
3g: 2=COMP128v2
4g5g: 2=COMP128v2
* Programming...
Done!
@ -362,8 +377,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 2=COMP128v2
3G: 2=COMP128v2
2g: 2=COMP128v2
3g: 2=COMP128v2
4g5g: 2=COMP128v2
Done!
sysmoISIM-SJA2 parameterization tool
@ -384,8 +400,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 1=COMP128v1
3G: 3=COMP128v3
2g: 1=COMP128v1
3g: 3=COMP128v3
4g5g: 3=COMP128v3
* Programming...
Done!
@ -408,8 +425,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 1=COMP128v1
3G: 3=COMP128v3
2g: 1=COMP128v1
3g: 3=COMP128v3
4g5g: 3=COMP128v3
Done!
sysmoISIM-SJA2 parameterization tool
@ -430,8 +448,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 4=MILENAGE
3G: 4=MILENAGE
2g: 1=COMP128v1
3g: 2=COMP128v2
4g5g: 3=COMP128v3
* Programming...
Done!
@ -454,8 +473,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 4=MILENAGE
3G: 4=MILENAGE
2g: 1=COMP128v1
3g: 2=COMP128v2
4g5g: 2=COMP128v3
Done!
sysmoISIM-SJA2 parameterization tool
@ -476,8 +496,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 1=COMP128v1
3G: 4=MILENAGE
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 5=SHA1-AKA
* Programming...
Done!
@ -500,8 +521,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 1=COMP128v1
3G: 4=MILENAGE
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=SHA1-AKA
Done!
sysmoISIM-SJA2 parameterization tool
@ -522,8 +544,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 3=COMP128v3
3G: 4=MILENAGE
2g: 5=SHA1-AKA
3g: 4=MILENAGE
4g5g: 15=XOR
* Programming...
Done!
@ -546,8 +569,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 3=COMP128v3
3G: 4=MILENAGE
2g: 5=SHA1-AKA
3g: 4=MILENAGE
4g5g: 4=XOR
Done!
sysmoISIM-SJA2 parameterization tool
@ -568,8 +592,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 2=COMP128v2
3G: 4=MILENAGE
2g: 4=MILENAGE
3g: 4=MILENAGE
4g5g: 4=MILENAGE
* Programming...
Done!
@ -592,8 +617,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 2=COMP128v2
3G: 4=MILENAGE
2g: 4=MILENAGE
3g: 4=MILENAGE
4g5g: 4=MILENAGE
Done!
sysmoISIM-SJA2 parameterization tool
@ -614,8 +640,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 5=SHA1-AKA
3G: 15=XOR
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=MILENAGE
* Programming...
Done!
@ -638,8 +665,9 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 5=SHA1-AKA
3G: 15=XOR
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=MILENAGE
Done!
sysmoISIM-SJA2 parameterization tool
@ -660,8 +688,9 @@ Authenticating...
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2G: 1=COMP128v1
3G: 4=MILENAGE
2g: 3=COMP128v3
3g: 4=MILENAGE
4g5g: 4=MILENAGE
* Programming...
Done!
@ -684,7 +713,248 @@ Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2G: 1=COMP128v1
3G: 4=MILENAGE
2g: 3=COMP128v3
3g: 4=MILENAGE
4g5g: 4=MILENAGE
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2g: 2=COMP128v2
3g: 4=MILENAGE
4g5g: 4=MILENAGE
* Programming...
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2g: 2=COMP128v2
3g: 4=MILENAGE
4g5g: 4=MILENAGE
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2g: 5=SHA1-AKA
3g: 15=XOR
4g5g: 15=XOR
* Programming...
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2g: 5=SHA1-AKA
3g: 15=XOR
4g5g: 15=XOR
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=MILENAGE
* Programming...
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=MILENAGE
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 5=SHA1-AKA
* Programming...
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2g: 1=COMP128v1
3g: 4=MILENAGE
4g5g: 4=SHA1-AKA
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Programming Authentication parameters...
* Initalizing...
* New algorithm setting:
2g: 2=COMP128v2
3g: 1=COMP128v1
4g5g: 3=COMP128v3
* Programming...
Done!
sysmoISIM-SJA2 parameterization tool
Copyright (c) 2019-2022 sysmocom - s.f.m.c. GmbH
Trying to find card with ATR: 3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9
Initializing smartcard terminal...
* Detected Card IMSI: 901700000046734
ISIM Application installed
USIM Application installed
Authenticating...
* Remaining attempts: 3
* Authenticating...
* Authentication successful
* Remaining attempts: 3
Reading Authentication parameters...
* Initalizing...
* Reading...
* Current algorithm setting:
2g: 2=COMP128v2
3g: 1=COMP128v1
4g5g: 1=COMP128v3
Done!

View File

@ -1,8 +1,8 @@
#!/bin/sh
. ./test-data
ALGOS="1:1 3:1 4:1 5:1 15:1 1:4 3:15 2:2 1:3 "
ALGOS=$ALGOS"MILENAGE:MILENAGE COMP128v1:MILENAGE COMP128v3:MILENAGE COMP128v2:MILENAGE SHA1-AKA:XOR COMP128v1:MILENAGE"
ALGOS="1:1 3:1 4:1 5:1 15:1 1:4 3:15 2:2 1:3 1:2:3 1:4:5 5:4:15 "
ALGOS=$ALGOS"MILENAGE:MILENAGE COMP128v1:MILENAGE COMP128v3:MILENAGE COMP128v2:MILENAGE SHA1-AKA:XOR COMP128v1:MILENAGE COMP128v1:MILENAGE:SHA1-AKA COMP128v2:COMP128v1:COMP128v3"
for algo in $ALGOS; do
$TOOL -a $ADMPIN -T $algo
$TOOL -a $ADMPIN -t