FreeCalypso > hg > fc-pcsc-tools
annotate simtool/miscadm.c @ 189:123dc7370581
top Makefile: install scripts
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sat, 06 Mar 2021 21:11:21 +0000 | 
| parents | 2545dd27ca38 | 
| children | 9797417ececa | 
| rev | line source | 
|---|---|
| 66 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * This module implements write-iccid and write-imsi commands, | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 * available only in the admin programming phase after authenticating | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 * with some card-vendor-dependent ADM key. | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 */ | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include <sys/types.h> | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 #include <stdio.h> | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 #include "curfile.h" | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 #include "file_id.h" | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | 
| 181 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 12 static | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 13 write_iccid_bin(binrec) | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 14 u_char *binrec; | 
| 68 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 15 { | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 16 int rc; | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 17 | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 18 rc = select_op(FILEID_MF); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 19 if (rc < 0) | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 20 return(rc); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 21 rc = select_op(EF_ICCID); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 22 if (rc < 0) | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 23 return(rc); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 24 rc = parse_ef_select_response(); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 25 if (rc < 0) | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 26 return(rc); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 27 if (curfile_structure != 0x00 || curfile_total_size != 10) { | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 28 fprintf(stderr, | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 29 "error: EF_ICCID is not a transparent EF of 10 bytes\n"); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 30 return(-1); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 31 } | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 32 return update_bin_op(0, binrec, 10); | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 33 } | 
| 
105aa3d1a494
fc-simtool write-iccid command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
66diff
changeset | 34 | 
| 181 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 35 cmd_write_iccid(argc, argv) | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 36 char **argv; | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 37 { | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 38 int rc; | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 39 u_char nibbles[20], binrec[10]; | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 40 | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 41 rc = parse_decimal_string_arg(argv[1], nibbles, 20); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 42 if (rc < 0) | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 43 return(rc); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 44 pack_reversed_nibbles(nibbles, binrec, 10); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 45 return write_iccid_bin(binrec); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 46 } | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 47 | 
| 182 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 48 cmd_write_iccid_sh18(argc, argv) | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 49 char **argv; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 50 { | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 51 int rc; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 52 u_char nibbles[20], binrec[10]; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 53 | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 54 rc = parse_decimal_shorthand(argv[1], nibbles, 18); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 55 if (rc < 0) | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 56 return(rc); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 57 nibbles[18] = compute_iccid_luhn(nibbles); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 58 nibbles[19] = 0xF; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 59 pack_reversed_nibbles(nibbles, binrec, 10); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 60 return write_iccid_bin(binrec); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 61 } | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 62 | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 63 cmd_write_iccid_sh19(argc, argv) | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 64 char **argv; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 65 { | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 66 int rc; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 67 u_char nibbles[20], binrec[10]; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 68 | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 69 rc = parse_decimal_shorthand(argv[1], nibbles, 19); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 70 if (rc < 0) | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 71 return(rc); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 72 if (nibbles[18] != compute_iccid_luhn(nibbles)) { | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 73 fprintf(stderr, "error: Luhn check digit mismatch\n"); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 74 return(-1); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 75 } | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 76 nibbles[19] = 0xF; | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 77 pack_reversed_nibbles(nibbles, binrec, 10); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 78 return write_iccid_bin(binrec); | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 79 } | 
| 
f4edccd4b583
fc-simtool: write-iccid-sh{18,19} commands implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
181diff
changeset | 80 | 
| 181 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 81 static | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 82 write_imsi_bin(binrec) | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 83 u_char *binrec; | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 84 { | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 85 int rc; | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 86 | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 87 rc = select_op(DF_GSM); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 88 if (rc < 0) | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 89 return(rc); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 90 rc = select_op(EF_IMSI); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 91 if (rc < 0) | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 92 return(rc); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 93 rc = parse_ef_select_response(); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 94 if (rc < 0) | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 95 return(rc); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 96 if (curfile_structure != 0x00 || curfile_total_size != 9) { | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 97 fprintf(stderr, | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 98 "error: EF_IMSI is not a transparent EF of 9 bytes\n"); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 99 return(-1); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 100 } | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 101 return update_bin_op(0, binrec, 9); | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 102 } | 
| 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 103 | 
| 66 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 cmd_write_imsi(argc, argv) | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 char **argv; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 { | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 int rc; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 u_char nibbles[16], binrec[9]; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 unsigned ndig; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 rc = parse_decimal_string_arg(argv[1], nibbles + 1, 15); | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 if (rc < 0) | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 return(rc); | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 ndig = rc; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 if (ndig & 1) | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 nibbles[0] = 9; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 else | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 nibbles[0] = 1; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 binrec[0] = (ndig + 2) >> 1; | 
| 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 pack_reversed_nibbles(nibbles, binrec + 1, 8); | 
| 181 
63b640562e21
simtool/miscadm.c: code refactoring in preparation for
 Mychaela Falconia <falcon@freecalypso.org> parents: 
68diff
changeset | 121 return write_imsi_bin(binrec); | 
| 66 
3ef90bd13fbe
fc-simtool write-imsi command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 } | 
| 183 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 123 | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 124 cmd_write_imsi_sh(argc, argv) | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 125 char **argv; | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 126 { | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 127 int rc; | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 128 u_char nibbles[16], binrec[9]; | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 129 | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 130 rc = parse_decimal_shorthand(argv[1], nibbles + 1, 15); | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 131 if (rc < 0) | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 132 return(rc); | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 133 nibbles[0] = 9; | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 134 binrec[0] = 8; | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 135 pack_reversed_nibbles(nibbles, binrec + 1, 8); | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 136 return write_imsi_bin(binrec); | 
| 
2545dd27ca38
fc-simtool write-imsi-sh command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
182diff
changeset | 137 } | 
