Skip to content

Instantly share code, notes, and snippets.

@danylokos
Created January 23, 2019 13:49
Show Gist options
  • Save danylokos/24addb9a82e53fb3b8b78cbc5e00e010 to your computer and use it in GitHub Desktop.
Save danylokos/24addb9a82e53fb3b8b78cbc5e00e010 to your computer and use it in GitHub Desktop.
QMI UIM APDU example, iPhone 6 iOS 9.0, Qualcomm MDM9625 4.01.00
QMI UIM APDU example
iPhone 6 iOS 9.0, Qualcomm MDM9625 4.01.00
REQ:
open logical channel on slot 01 width AID a0:00:00:00:87:10:02 (07 bytes) (3GPP USIM AID)
01 1b 00 00 0b 02 00 04 00 3f 00 0f 00 01 01 00 | .........?......
01 10 08 00 07 a0 00 00 00 87 10 02 | ............
marker: 0x01
qmux.length: 0x001b (27)
qmux.flags: 0x00 (0000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x00 (0000 0000)
qmi.service.header.transaction: 0x0004
qmi.service.header.message: 0x003f (63)
qmi.service.header.tlv_length: 0x000f (15)
qmi.service.tlv[0].tlv_type: 0x01 (1)
qmi.service.tlv[0].tlv_length: 0x0001 (1)
qmi.service.tlv[0].tlv_value:
01 | .
qmi.service.tlv[1].tlv_type: 0x10 (16)
qmi.service.tlv[1].tlv_length: 0x0008 (8)
qmi.service.tlv[1].tlv_value:
07 a0 00 00 00 87 10 02 | ........
RESP:
channel 01 oppened
01 55 00 80 0b 02 02 04 00 3f 00 49 00 02 04 00 | .U.......?.I....
00 00 00 00 12 36 00 35 62 33 82 02 78 21 83 02 | .....6.5b3..x!..
7f f0 84 10 a0 00 00 00 87 10 02 ff 47 f0 01 89 | ............G...
00 00 01 ff 8a 01 05 8b 03 2f 06 1a c6 09 90 01 | ........./......
40 83 01 01 83 01 81 81 04 00 00 15 00 11 02 00 | @...............
90 00 10 01 00 01 | ......
marker: 0x01
qmux.length: 0x0055 (85)
qmux.flags: 0x80 (1000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x02 (0000 0010)
qmi.service.header.transaction: 0x0004
qmi.service.header.message: 0x003f (63)
qmi.service.header.tlv_length: 0x0049 (73)
qmi.service.tlv[0].tlv_type: 0x02 (2)
qmi.service.tlv[0].tlv_length: 0x0004 (4)
qmi.service.tlv[0].tlv_value:
00 00 00 00 | ....
qmi.service.tlv[1].tlv_type: 0x12 (18)
qmi.service.tlv[1].tlv_length: 0x0036 (54)
qmi.service.tlv[1].tlv_value:
35 62 33 82 02 78 21 83 02 7f f0 84 10 a0 00 00 | 5b3..x!.........
00 87 10 02 ff 47 f0 01 89 00 00 01 ff 8a 01 05 | .....G..........
8b 03 2f 06 1a c6 09 90 01 40 83 01 01 83 01 81 | ../......@......
81 04 00 00 15 00 | ......
qmi.service.tlv[2].tlv_type: 0x11 (17)
qmi.service.tlv[2].tlv_length: 0x0002 (2)
qmi.service.tlv[2].tlv_value:
90 00 | ..
qmi.service.tlv[3].tlv_type: 0x10 (16)
qmi.service.tlv[3].tlv_length: 0x0001 (1)
qmi.service.tlv[3].tlv_value:
01 | .
REQ:
select MF 3f00, APDU: 01:a4:00:00:02:3f:00 (0007 bytes), 1st byte (01) - channel number
01 20 00 00 0b 02 00 05 00 3b 00 14 00 01 01 00 | . .......;......
01 02 09 00 07 00 01 a4 00 00 02 3f 00 10 01 00 | ...........?....
01 | .
marker: 0x01
qmux.length: 0x0020 (32)
qmux.flags: 0x00 (0000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x00 (0000 0000)
qmi.service.header.transaction: 0x0005
qmi.service.header.message: 0x003b (59)
qmi.service.header.tlv_length: 0x0014 (20)
qmi.service.tlv[0].tlv_type: 0x01 (1)
qmi.service.tlv[0].tlv_length: 0x0001 (1)
qmi.service.tlv[0].tlv_value:
01 | .
qmi.service.tlv[1].tlv_type: 0x02 (2)
qmi.service.tlv[1].tlv_length: 0x0009 (9)
qmi.service.tlv[1].tlv_value:
07 00 01 a4 00 00 02 3f 00 | .......?.
qmi.service.tlv[2].tlv_type: 0x10 (16)
qmi.service.tlv[2].tlv_length: 0x0001 (1)
qmi.service.tlv[2].tlv_value:
01 | .
RESP:
90 00 (0002 bytes)
01 1a 00 80 0b 02 02 05 00 3b 00 0e 00 02 04 00 | .........;......
00 00 00 00 10 04 00 02 00 90 00 | ...........
marker: 0x01
qmux.length: 0x001a (26)
qmux.flags: 0x80 (1000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x02 (0000 0010)
qmi.service.header.transaction: 0x0005
qmi.service.header.message: 0x003b (59)
qmi.service.header.tlv_length: 0x000e (14)
qmi.service.tlv[0].tlv_type: 0x02 (2)
qmi.service.tlv[0].tlv_length: 0x0004 (4)
qmi.service.tlv[0].tlv_value:
00 00 00 00 | ....
qmi.service.tlv[1].tlv_type: 0x10 (16)
qmi.service.tlv[1].tlv_length: 0x0004 (4)
qmi.service.tlv[1].tlv_value:
02 00 90 00 | ....
REQ:
select EFiccid 2fe2, APDU: 01:a4:00:00:02:2f:e2 (0007 bytes), 1st byte (01) - channel number
01 20 00 00 0b 02 00 06 00 3b 00 14 00 01 01 00 | . .......;......
01 02 09 00 07 00 01 a4 00 00 02 2f e2 10 01 00 | .........../....
01 | .
marker: 0x01
qmux.length: 0x0020 (32)
qmux.flags: 0x00 (0000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x00 (0000 0000)
qmi.service.header.transaction: 0x0006
qmi.service.header.message: 0x003b (59)
qmi.service.header.tlv_length: 0x0014 (20)
qmi.service.tlv[0].tlv_type: 0x01 (1)
qmi.service.tlv[0].tlv_length: 0x0001 (1)
qmi.service.tlv[0].tlv_value:
01 | .
qmi.service.tlv[1].tlv_type: 0x02 (2)
qmi.service.tlv[1].tlv_length: 0x0009 (9)
qmi.service.tlv[1].tlv_value:
07 00 01 a4 00 00 02 2f e2 | ......./.
qmi.service.tlv[2].tlv_type: 0x10 (16)
qmi.service.tlv[2].tlv_length: 0x0001 (1)
qmi.service.tlv[2].tlv_value:
01 | .
RESP:
90 00 (0002 bytes)
01 1a 00 80 0b 02 02 06 00 3b 00 0e 00 02 04 00 | .........;......
00 00 00 00 10 04 00 02 00 90 00 | ...........
marker: 0x01
qmux.length: 0x001a (26)
qmux.flags: 0x80 (1000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x02 (0000 0010)
qmi.service.header.transaction: 0x0006
qmi.service.header.message: 0x003b (59)
qmi.service.header.tlv_length: 0x000e (14)
qmi.service.tlv[0].tlv_type: 0x02 (2)
qmi.service.tlv[0].tlv_length: 0x0004 (4)
qmi.service.tlv[0].tlv_value:
00 00 00 00 | ....
qmi.service.tlv[1].tlv_type: 0x10 (16)
qmi.service.tlv[1].tlv_length: 0x0004 (4)
qmi.service.tlv[1].tlv_value:
02 00 90 00 | ....
REQ:
read binary, 0a (10) bytes, APDU: 01:b0:00:00:0a (0005 bytes), 1st byte (01) - channel number
01 1e 00 00 0b 02 00 07 00 3b 00 12 00 01 01 00 | .........;......
01 02 07 00 05 00 01 b0 00 00 0a 10 01 00 01 | ...............
marker: 0x01
qmux.length: 0x001e (30)
qmux.flags: 0x00 (0000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x00 (0000 0000)
qmi.service.header.transaction: 0x0007
qmi.service.header.message: 0x003b (59)
qmi.service.header.tlv_length: 0x0012 (18)
qmi.service.tlv[0].tlv_type: 0x01 (1)
qmi.service.tlv[0].tlv_length: 0x0001 (1)
qmi.service.tlv[0].tlv_value:
01 | .
qmi.service.tlv[1].tlv_type: 0x02 (2)
qmi.service.tlv[1].tlv_length: 0x0007 (7)
qmi.service.tlv[1].tlv_value:
05 00 01 b0 00 00 0a | .......
qmi.service.tlv[2].tlv_type: 0x10 (16)
qmi.service.tlv[2].tlv_length: 0x0001 (1)
qmi.service.tlv[2].tlv_value:
01 | .
RESP:
90 00 (000c (12) bytes), ICCID 8938003992624183313
01 24 00 80 0b 02 02 07 00 3b 00 18 00 02 04 00 | .$.......;......
00 00 00 00 10 0e 00 0c 00 98 83 00 93 29 26 14 | .............)&.
38 13 f3 90 00 | 8....
marker: 0x01
qmux.length: 0x0024 (36)
qmux.flags: 0x80 (1000 0000)
qmux.service: 0x0b (UIM)
qmux.client: 0x02
qmi.service.header.flags: 0x02 (0000 0010)
qmi.service.header.transaction: 0x0007
qmi.service.header.message: 0x003b (59)
qmi.service.header.tlv_length: 0x0018 (24)
qmi.service.tlv[0].tlv_type: 0x02 (2)
qmi.service.tlv[0].tlv_length: 0x0004 (4)
qmi.service.tlv[0].tlv_value:
00 00 00 00 | ....
qmi.service.tlv[1].tlv_type: 0x10 (16)
qmi.service.tlv[1].tlv_length: 0x000e (14)
qmi.service.tlv[1].tlv_value:
0c 00 98 83 00 93 29 26 14 38 13 f3 90 00 | ......)&.8....
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment