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 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
Parsing 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
Command line
The same software is also available as a command line tool:
parseATR.py
Before
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
Conclusion
I like colorization.