FreeCalypso > hg > fc-sim-tools
annotate utils/fcsim1-mkprov.c @ 63:f4eb486aab40
doc/Admin-write-commands: fix verify-hex command name
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 23 Mar 2021 23:29:31 +0000 |
parents | 38c14fa89937 |
children | 28fae57b3e29 |
rev | line source |
---|---|
35
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This utility is the provisioning data generator for FCSIM1 cards. |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <sys/types.h> |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <sys/file.h> |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdlib.h> |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <unistd.h> |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 static u_char iccid_bin[19], imsi_bin[15], msisdn_bin[20]; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 static int msisdn_set, msisdn_plus; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 static unsigned num_cards = 1, access_class, msisdn_digits; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 static char *random_file = "/dev/urandom"; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 static int random_fd; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 static void |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 set_iccid(arg) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 char *arg; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 int rc; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 rc = parse_decimal_shorthand(arg, iccid_bin, 18); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 if (rc < 0) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 exit(1); /* error msg already printed */ |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 static void |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 set_imsi(arg) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 char *arg; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 int rc; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 rc = parse_decimal_shorthand(arg, imsi_bin, 15); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 if (rc < 0) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 exit(1); /* error msg already printed */ |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 static void |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 set_msisdn(arg) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 char *arg; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 int rc; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 if (*arg == '+') { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 msisdn_plus = 1; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 arg++; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 rc = parse_decimal_string_arg(arg, msisdn_bin, 20); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 if (rc < 0) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 exit(1); /* error msg already printed */ |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 msisdn_digits = rc; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 msisdn_set = 1; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 static void |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 parse_cmdline(argc, argv) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 char **argv; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 extern int optind; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 extern char *optarg; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 int c; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 while ((c = getopt(argc, argv, "a:m:n:r:")) != EOF) { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 switch (c) { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 case 'a': |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 if (optarg[0] < '0' || optarg[0] > '9' || optarg[1]) { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 fprintf(stderr, "error: invalid -a argument\n"); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 exit(1); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 access_class = optarg[0] - '0'; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 continue; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 case 'm': |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 set_msisdn(optarg); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 continue; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 case 'n': |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 num_cards = atoi(optarg); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 continue; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 case 'r': |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 random_file = optarg; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 continue; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 case '?': |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 default: |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 usage: fprintf(stderr, |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 "usage: %s [options] start-iccid start-imsi\n", |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 argv[0]); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 exit(1); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 if (argc - optind != 2) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 goto usage; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 set_iccid(argv[optind]); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 set_imsi(argv[optind+1]); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 static void |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 get_random_ki(strbuf) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 char *strbuf; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 { |
36
38c14fa89937
fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
100 u_char bin[16]; |
35
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 char *dp; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 unsigned n; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 int rc; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 |
36
38c14fa89937
fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
105 rc = read(random_fd, bin, 16); |
38c14fa89937
fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
106 if (rc != 16) { |
35
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 fprintf(stderr, "error reading from %s\n", random_file); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 exit(1); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 dp = strbuf; |
36
38c14fa89937
fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
111 for (n = 0; n < 16; n++) { |
35
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 sprintf(dp, "%02X", bin[n]); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 dp += 2; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 *dp = '\0'; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 static void |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 make_one_card() |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 unsigned acc_mask; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 char iccid_str[20], imsi_str[16], ki_str[33]; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 char msisdn_str[21]; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 nibbles_to_ascii(iccid_bin, 19, iccid_str); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 nibbles_to_ascii(imsi_bin, 15, imsi_str); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 acc_mask = 1 << access_class; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 get_random_ki(ki_str); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 printf("ICCID=%s IMSI=%s ACC=%04X Ki=%s", iccid_str, imsi_str, |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 acc_mask, ki_str); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 if (msisdn_set) { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 fputs(" MSISDN=", stdout); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 if (msisdn_plus) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 putchar('+'); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 nibbles_to_ascii(msisdn_bin, msisdn_digits, msisdn_str); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 fputs(msisdn_str, stdout); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 putchar('\n'); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 main(argc, argv) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 char **argv; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 unsigned n; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 parse_cmdline(argc, argv); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 random_fd = open(random_file, O_RDONLY); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 if (random_fd < 0) { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 perror(random_file); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 exit(1); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 for (n = 0; n < num_cards; n++) { |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 iccid_bin[18] = compute_iccid_luhn(iccid_bin); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 make_one_card(); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 decimal_string_increment(iccid_bin, 18); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 decimal_string_increment(imsi_bin, 15); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 if (msisdn_set) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 decimal_string_increment(msisdn_bin, msisdn_digits); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 access_class++; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 if (access_class >= 10) |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 access_class = 0; |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 } |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 exit(0); |
26d2ef843a99
fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 } |