comparison doc/GrcardSIM2-WEKI-file @ 222:8c151bb01d28

doc/GrcardSIM2-WEKI-file: update for partial understanding and implementation
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 09 Mar 2021 03:13:41 +0000
parents c804f2f8c138
children
comparison
equal deleted inserted replaced
221:e3059d58ec93 222:8c151bb01d28
18 different into them. 18 different into them.
19 19
20 * The next byte gives COMP128 algorithm selection plus something else that is 20 * The next byte gives COMP128 algorithm selection plus something else that is
21 not understood: 21 not understood:
22 22
23 - The low nibble of this byte selects COMP128 algorithm version as follows: 23 - The low 2 bits of this byte select COMP128 algorithm version as follows:
24 24
25 0 = COMP128v1 25 0b00 = COMP128v1
26 1 = COMP128v2 26 0b01 = COMP128v2
27 2 = COMP128v3 27 0b10 = COMP128v3
28 28
29 Note that the Osmocom wiki page is wrong in its description of this nibble: 29 Note that the Osmocom wiki page is wrong in its description of these bits:
30 setting this nibble to 3 ends up selecting COMP128v2 rather than v3. 30 setting these two bits to 0b11 ends up selecting COMP128v2 rather than v3.
31 (pySim-prog is unaffected because it always writes 0 for COMP128v1.) 31 (pySim-prog is unaffected because it always writes 00 into the whole byte,
32 selecting COMP128v1.)
32 33
33 - The high nibble of this byte is not understood. Osmocom wiki page tells 34 - The remaining 6 bits of this byte are not understood. Osmocom wiki page
34 people to write 0 into this nibble and so does pySim-prog, but the "blank" 35 tells people to write zeros into the upper 6 bits and so does pySim-prog,
35 unprogrammed cards we got from Grcard have it set to 2. Setting this nibble 36 but the "blank" unprogrammed cards we got from Grcard have this byte set to
36 to either 0 or 2 does not seem to affect the result of RUN GSM ALGORITHM 37 0x20. Setting the upper nibble to either 0 or 2 does not seem to affect
37 operations, thus it probably controls something else. 38 the result of RUN GSM ALGORITHM operations, thus it probably controls
39 something else.
38 40
39 * The next 16 bytes store Ki - this part is straightforward. 41 * The next 16 bytes store Ki - this part is straightforward.
40 42
41 * The last 16 bytes are not understood; our "blank" unprogrammed cards from 43 * The last 16 bytes are not understood; our "blank" unprogrammed cards from
42 Grcard have all FFs in these bytes. 44 Grcard have all FFs in these bytes.
45
46 fc-simtool support for programming Ki and COMP128 algorithm selection
47 =====================================================================
48
49 Even if we never learn the function of the other mysterious fields of EF.WEKI,
50 we must be able to program our own Ki and make our own selection of COMP128
51 algorithm version in order to use these programmable SIM cards with our own GSM
52 networks. The following solution has been implemented for immediate use:
53
54 * Our grcard2-set-comp128 command takes a single argument of 1, 2 or 3,
55 selecting COMP128 algorithm version. The implementation of this command
56 selects EF.WEKI, reads the previous content of the magic byte at offset 2,
57 keeps the upper 6 bits unchanged, and writes the new COMP128 algorithm
58 selection into the low 2 bits. If we ever learn the meaning of other bits,
59 we'll be able to add new orthogonal commands that manipulate those other bits,
60 but leave COMP128 selection unchanged.
61
62 * Our grcard2-set-ki command writes 16 bytes at offset 3, leaving all other
63 bytes untouched.