How to list applets on JCOP cards?

3.3k views Asked by At

I have a dual interface java card and get the below information from the card :

Contact interface - ATR = 3B F8 13 00 00 81 31 FE 45 4A 43 4F 50 76 32 34 31 B7

Contactless interface - ATR =3B 88 80 01 4A 43 4F 50 76 32 34 31 5E

After searching for the ATR in the net, I found that the contact interface is a NXP JCOP CJ3A080v241

But searching for the contact less ATR doesn't give me anything.

Now the question :

  • 1- How I can gain any information about the contact-less interface (And even contact interface), and totally about this card (its default keys, applets, commands, and its ISD AID)?
  • 2- Why I can't give the list of its applets using GPJ?

GPJ output :

E:\Smart Card\gpj>GPJ -jcop

E:\Smart Card\gpj>java -jar gpj.jar -jcop
Unable to load jcop compatibility provider.
Please put offcard.jar and jcopio.jar on the class path.

java.lang.ClassNotFoundException: ds.javacard.emulator.jcop.DS_provider
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.loadJCOPProvid
er(Unknown Source)
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)

E:\Smart Card\gpj>
  • 3- Whould you please list for me the name of Tools that are for JCOP cards?

Note : I have an ACR38 and an ACR122U card reader.

2

There are 2 answers

1
Hana Bzh On

You can use some of these helpful commands:

  • GET DATA (Tag 0066) ==> Just send 80CA006600 to the card, The Response would be something like this:

    66 4C

    73 4A

    06 07 2A 86 48 86 FC 6B 01

    60 0C 06 0A 2A 86 48 86 FC 6B 02 02 01 01

    63 09 06 07 2A 86 48 86 FC 6B 03

    64 0B 06 09 2A 86 48 86 FC 6B 04 01 05

    65 0B 06 09 2B 85 10 86 48 64 02 01 03

    66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 02

    90 00

    Global Platform version : 2.1.1

    Global Platform Secure Channel Protocol: 01 option 05

    Java Card version : 2.2

  • GET DATA (Tag 9F7F) ==> Just send 80CA9F7F00 to the card (get-cplc command), The Response would be something like this:

    IC Fabricator : 4790

    IC Type : 5040

    Operating System ID : 4791

    Operating System release date : 8102 (11.4.2008)

    Operating System release level : 3100

    IC Fabrication Date : 8358 (23.12.2008)

    IC Serial Number : 00116891

    IC Batch Identifier : 4581

    IC Module Fabricator : 4812

    IC Module Packaging Date : 8365 (30.12.2008)

    ICC Manufacturer : 0000

    IC Embedding Date : 0000

    IC Pre-Personalizer : 012F

    IC Pre-Perso. Equipment Date : 3130 (10.5.2003)

    IC Pre-Perso. Equipment ID : 31313638

    IC Personalizer : 0000

    IC Personalization Date : 0000

    IC Perso. Equipment ID : 00000000

  • Also you can use card-info command in Jcop Shell in order to list all available applets ans SDs on the card with their AIDs. (There is equivalent commands in GPShell for this command but you should parse the bytes, If you use JCop Shell then all data are parsed and clearly available for you)

3
Martin Paljak On

Have a look here: https://github.com/martinpaljak/GlobalPlatform (and don't use -jcop, which is also not present in the newer version)