Parsing an ATR: now in color
Since 2010 I provide a way to parse an ATR online using a web page. I also provide a Python script to do the same using a command line tool.
I am not a user interface design expert. But I like to have important elements in color. Syntax colorization is a great invention. So I decided to add color to the ATR parsing results.
Web page
Available at http://smartcard-atr.appspot.com/Before
Parsing ATR: 3B FA 13 00 FF 81 31 80 45 00 31 C1 73 C0 01 00 00 90 00 B1TS = 0x3B | Direct Convention |
---|---|
T0 = 0xFA | Y(1): b1111, K: 10 (historical bytes) |
TA(1) = 0x13 | Fi=372, Di=4, 93 cycles/ETU (43010 bits/s at 4.00 MHz, 53763 bits/s for fMax=5 MHz) |
TB(1) = 0x00 | VPP is not electrically connected |
TC(1) = 0xFF | Extra guard time: 255 (special value) |
TD(1) = 0x81 | Y(i+1) = b1000, Protocol T=1 |
---- | |
TD(2) = 0x31 | Y(i+1) = b0011, Protocol T=1 |
---- | |
TA(3) = 0x80 | IFSC: 128 |
TB(3) = 0x45 | Block Waiting Integer: 4 - Character Waiting Integer: 5 |
---- | |
Historical bytes | 00 31 C1 73 C0 01 00 00 90 00 |
Category indicator byte: 0x00 |
(compact TLV data object) Tag: 3, Len: 1 (card service data byte) Card service data byte: 193 - Application selection: by full DF name - Application selection: by partial DF name - EF.DIR and EF.ATR access services: by GET RECORD(s) command - Card without MF Tag: 7, Len: 3 (card capabilities) Selection methods: 192 - DF selection by partial DF name - DF selection by full DF name Data coding byte: 1 - Behaviour of write functions: one-time write - Value 'FF' for the first byte of BER-TLV tag fields: valid - Data unit in quartets: 1 Command chaining, length fields and logical channels: 0 - Logical channel number assignment: No logical channel - Maximum number of logical channels: 0 Mandatory status indicator (3 last bytes) LCS (life card cycle): 0 (No information given) SW: 9000 () |
TCK = 0xB1 | (correct checksum) |
Possibly identified card: OpenPGP
After
Parsing ATR: 3B FA 13 00 FF 81 31 80 45 00 31 C1 73 C0 01 00 00 90 00 B1TS = 0x3B | Direct Convention |
---|---|
T0 = 0xFA | Y(1): b1111, K: 10 (historical bytes) |
TA(1) = 0x13 | Fi=372, Di=4, 93 cycles/ETU (43010 bits/s at 4.00 MHz, 53763 bits/s for fMax=5 MHz) |
TB(1) = 0x00 | VPP is not electrically connected |
TC(1) = 0xFF | Extra guard time: 255 (special value) |
TD(1) = 0x81 | Y(i+1) = b1000, Protocol T=1 |
---- | |
TD(2) = 0x31 | Y(i+1) = b0011, Protocol T=1 |
---- | |
TA(3) = 0x80 | IFSC: 128 |
TB(3) = 0x45 | Block Waiting Integer: 4 - Character Waiting Integer: 5 |
---- | |
Historical bytes | 00 31 C1 73 C0 01 00 00 90 00 |
Category indicator byte: 0x00 |
(compact TLV data object)
Tag: 3, Len: 1 (card service data byte)
Card service data byte: 193
- Application selection: by full DF name
- Application selection: by partial DF name
- EF.DIR and EF.ATR access services: by GET RECORD(s) command
- Card without MF
Tag: 7, Len: 3 (card capabilities)
Selection methods: 192
- DF selection by partial DF name
- DF selection by full DF name
Data coding byte: 1
- Behaviour of write functions: one-time write
- Value 'FF' for the first byte of BER-TLV tag fields: valid
- Data unit in quartets: 1
Command chaining, length fields and logical channels: 0
- Logical channel number assignment: No logical channel
- Maximum number of logical channels: 0
Mandatory status indicator (3 last bytes)
LCS (life card cycle): 0 (No information given)
SW: 90 00 ()
|
TCK = 0xB1 | correct checksum |
Possibly identified card: OpenPGP
Command line
The same software is also available as a command line tool: parseATR.pyBefore
ATR: 3B FA 13 00 FF 81 31 80 45 00 31 C1 73 C0 01 00 00 90 00 B1 TS = 0x3B --> Direct Convention T0 = 0xFA --> Y(1): b1111, K: 10 (historical bytes) TA(1) = 0x13 --> Fi=372, Di=4, 93 cycles/ETU (43010 bits/s at 4.00 MHz, 53763 bits/s for fMax=5 MHz) TB(1) = 0x00 --> VPP is not electrically connected TC(1) = 0xFF --> Extra guard time: 255 (special value) TD(1) = 0x81 --> Y(i+1) = b1000, Protocol T=1 ---- TD(2) = 0x31 --> Y(i+1) = b0011, Protocol T=1 ---- TA(3) = 0x80 --> IFSC: 128 TB(3) = 0x45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5 ---- Historical bytes --> 00 31 C1 73 C0 01 00 00 90 00 Category indicator byte: 0x00 --> (compact TLV data object) Tag: 3, Len: 1 (card service data byte) Card service data byte: 193 - Application selection: by full DF name - Application selection: by partial DF name - EF.DIR and EF.ATR access services: by GET RECORD(s) command - Card without MF Tag: 7, Len: 3 (card capabilities) Selection methods: 192 - DF selection by partial DF name - DF selection by full DF name Data coding byte: 1 - Behaviour of write functions: one-time write - Value 'FF' for the first byte of BER-TLV tag fields: valid - Data unit in quartets: 1 Command chaining, length fields and logical channels: 0 - Logical channel number assignment: No logical channel - Maximum number of logical channels: 0 Mandatory status indicator (3 last bytes) LCS (life card cycle): 0 (No information given) SW: 9000 () TCK = 0xB1 --> (correct checksum) Possibly identified card: OpenPGP
After
ATR: 3B FA 13 00 FF 81 31 80 45 00 31 C1 73 C0 01 00 00 90 00 B1 TS = 0x3B --> Direct Convention T0 = 0xFA --> Y(1): b1111, K: 10 (historical bytes) TA(1) = 0x13 --> Fi=372, Di=4, 93 cycles/ETU (43010 bits/s at 4.00 MHz, 53763 bits/s for fMax=5 MHz) TB(1) = 0x00 --> VPP is not electrically connected TC(1) = 0xFF --> Extra guard time: 255 (special value) TD(1) = 0x81 --> Y(i+1) = b1000, Protocol T=1 ---- TD(2) = 0x31 --> Y(i+1) = b0011, Protocol T=1 ---- TA(3) = 0x80 --> IFSC: 128 TB(3) = 0x45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5 ---- Historical bytes --> 00 31 C1 73 C0 01 00 00 90 00 Category indicator byte: 0x00 --> (compact TLV data object) Tag: 3, Len: 1 (card service data byte) Card service data byte: 193 - Application selection: by full DF name - Application selection: by partial DF name - EF.DIR and EF.ATR access services: by GET RECORD(s) command - Card without MF Tag: 7, Len: 3 (card capabilities) Selection methods: 192 - DF selection by partial DF name - DF selection by full DF name Data coding byte: 1 - Behaviour of write functions: one-time write - Value 'FF' for the first byte of BER-TLV tag fields: valid - Data unit in quartets: 1 Command chaining, length fields and logical channels: 0 - Logical channel number assignment: No logical channel - Maximum number of logical channels: 0 Mandatory status indicator (3 last bytes) LCS (life card cycle): 0 (No information given) SW: 90 00 () TCK = 0xB1 --> correct checksum Possibly identified card: OpenPGP