# HG changeset patch # User Mychaela Falconia # Date 1611526593 0 # Node ID 597c4e87a1f478f67507e258293320ae22e5bbcf # Parent a5dfab380a90a79014ffb677332aef657682826a fc-simtool: imsi high-level read command implemented diff -r a5dfab380a90 -r 597c4e87a1f4 simtool/dispatch.c --- a/simtool/dispatch.c Sun Jan 24 22:11:34 2021 +0000 +++ b/simtool/dispatch.c Sun Jan 24 22:16:33 2021 +0000 @@ -13,6 +13,7 @@ #include "globals.h" extern int cmd_iccid(); +extern int cmd_imsi(); extern int cmd_readbin(); extern int cmd_readef(); extern int cmd_readrec(); @@ -35,6 +36,7 @@ } cmdtab[] = { {"exit", 0, 0, cmd_exit}, {"iccid", 0, 0, cmd_iccid}, + {"imsi", 0, 0, cmd_imsi}, {"quit", 0, 0, cmd_exit}, {"readbin", 2, 2, cmd_readbin}, {"readef", 1, 1, cmd_readef}, diff -r a5dfab380a90 -r 597c4e87a1f4 simtool/hlread.c --- a/simtool/hlread.c Sun Jan 24 22:11:34 2021 +0000 +++ b/simtool/hlread.c Sun Jan 24 22:16:33 2021 +0000 @@ -65,3 +65,30 @@ printf("%s\n", buf); return(0); } + +cmd_imsi() +{ + int rc; + char buf[17]; + + rc = select_op(DF_GSM); + if (rc < 0) + return(rc); + rc = select_op(EF_IMSI); + if (rc < 0) + return(rc); + rc = parse_ef_select_response(); + if (rc < 0) + return(rc); + if (curfile_structure != 0x00 || curfile_total_size != 9) { + fprintf(stderr, "error: expected transparent EF of 9 bytes\n"); + return(-1); + } + rc = readbin_op(0, 9); + if (rc < 0) + return(rc); + decode_reversed_nibbles(sim_resp_data + 1, 8, buf); + buf[16] = '\0'; + printf("%s parity=%c len=%u\n", buf + 1, buf[0], sim_resp_data[0]); + return(0); +}