pySIM 写白卡流程
pySIM 官方操作手册:https://osmocom.org/projects/pysim/wiki
1、安装 libccid、pcscd 工具包
$ sudo apt-get install pcscd pcsc-tools libccid libpcsclite-dev python-pyscard
2、扫描白卡读写设备
$ pcsc_scan
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: HID Global OMNIKEY 3x21 Smart Card Reader [OMNIKEY 3x21 Smart Card Reader] 00 00
Mon Dec 9 21:10:21 2019
Reader 0: HID Global OMNIKEY 3x21 Smart Card Reader [OMNIKEY 3x21 Smart Card Reader] 00 00
Card state: Card inserted,
ATR: 3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5
ATR: 3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5
+ TS = 3B --> Direct Convention
+ T0 = 9F, Y(1): 1001, K: 15 (historical bytes)
TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0
-----
TD(2) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following
-----
TA(3) = C7 --> Clock stop: no preference - Class accepted by the card: (3G) A 5V B 3V C 1.8V
+ Historical bytes: 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01
Category indicator byte: 80 (compact TLV data object)
Tag: 3, len: 1 (card service data byte)
Card service data byte: A0
- Application selection: by full DF name
- BER-TLV data objects available in EF.DIR
- EF.DIR and EF.ATR access services: by GET RECORD(s) command
- Card with MF
Tag: 7, len: 3 (card capabilities)
Selection methods: BE
- DF selection by full DF name
- DF selection by path
- DF selection by file identifier
- Implicit DF selection
- Short EF identifier supported
- Record number supported
Data coding byte: 21
- Behaviour of write functions: proprietary
- Value 'FF' for the first byte of BER-TLV tag fields: invalid
- Data unit in quartets: 2
Command chaining, length fields and logical channels: 13
- Logical channel number assignment: by the card
- Maximum number of logical channels: 4
Tag: 6, len: 7 (pre-issuing data)
Data: 43 20 07 18 00 00 01
+ TCK = A5 (correct checksum)
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5
sysmoUSIM-SJS1 (Telecommunication)
http://www.sysmocom.de/products/sysmousim-sjs1-sim-usim
3、安装 pySIM 白卡读写软件
$ sudo apt-get install python-pip python-yaml
$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytlv
$ git clone git://git.osmocom.org/pysim pysim
$ cd pysim
4、读卡
$ ./pySim-read.py -p0
Using PC/SC reader (dev=0) interface
Reading ...
ICCID: 8988211000000318025
IMSI: 901700000031802
SMSP: ffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffff0581005155f5ffffffffffff000000
PLMNsel: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
PLMNwAcT:
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
OPLMNwAcT:
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
HPLMNAcT:
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ffffffffff # unused
ACC: 0004
MSISDN: Not available
AD: 00000002
Done !
5、根据 UDM udm-ue-key.xml 中的 SUPI、Key、OPc,以及 USIM 自身的 ADM Key、ICCID 等信息写卡。
# USIM1
# supi: 466920100001101
# key: 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12
# OPc: 21 2E 3B 94 27 9C B0 F8 09 5A 55 E8 EF 55 69 F7
# ADM Key: 55427724
# ICCID: 8988211000000350168
./pySim-prog.py -p 0 -t sysmoUSIM-SJS1 -a 55427724 -x 466 -y 92 -i 466920100001101 -s 8988211000000350168 -o 212E3B94279CB0F8095A55E8EF5569F7 -k 12345678901234567890123456789012
# USIM2
# supi: 466920100001102
# key: 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12
# OPc: 21 2E 3B 94 27 9C B0 F8 09 5A 55 E8 EF 55 69 F7
# ADM Key: 64538902
# ICCID: 8988211000000350176
./pySim-prog.py -p 0 -t sysmoUSIM-SJS1 -a 64538902 -x 466 -y 92 -i 466920100001102 -s 8988211000000350176 -o 212E3B94279CB0F8095A55E8EF5569F7 -k 12345678901234567890123456789012
# USIM3
# supi: 466920100001103
# key: 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12
# OPc: 21 2E 3B 94 27 9C B0 F8 09 5A 55 E8 EF 55 69 F7
# ADM Key: 19250183
# ICCID: 8988211000000350184
./pySim-prog.py -p 0 -t sysmoUSIM-SJS1 -a 19250183 -x 466 -y 92 -i 466920100001103 -s 8988211000000350184 -o 212E3B94279CB0F8095A55E8EF5569F7 -k 12345678901234567890123456789012