Blank 64k Programmable JAVA SIM Card

Blank_64k_Programmable_JAVA_SIM_Card
„Blank 64k Programmable JAVA SIM Card“ so wurde die SIM-Karte bei eBay betitelt. Die musste natürlich bestellt werden, da ich schon ein bisschen mit JavaCards experimentiert habe und die Karte auch nur $5 (~3.70EUR + 2.22EUR Versand) gekostet hat. Erste Tests zeigten allerdings dass es sich hier nicht um eine generische JavaCard handelt, bei der man mit freien Tools (zB gpj, etc) einfach Applets per Cardmanager auf die Karte installieren kann. Diese Karte ist entweder für die Nutzung als SIM-Karte prepersonalisiert oder grundsätzlich nur für diesen Verwendungszweck konzipiert worden:

Hier ein paar Versuche der Karte Daten / R-APDUs zu entlocken:

#ATR auslesen
/atr
3B 9E 96 80 1F 87 80 31 E0 73 FE 21 12 66 55 57 4A 43 30 33 91

#default Applet selektieren (liefert File Control Information (FCI) Template)
/send 00a4040000
=> 00 A4 04 00 00
<= 6F 13 84 0B A0 00 00 00 70 00 05 01 49 53 44 A5
   04 9F 65 01 FF 90 00

#damit kann man den Cardmanager / ISD (mit AID A000000070000501495344) selektieren
/card -a "A0 00 00 00 70 00 05 01 49 53 44"
 <= 6F 13 84 0B A0 00 00 00 70 00 05 01 49 53 44 A5     
 04 9F 65 01 FF 90 00 

#CPLC Daten (alias Tag 9F7F) auslesen
cm> get-cplc
 => 80 CA 9F 7F 00
 <= 6A 88 Status: Reference data not found 

#Card Recognition Data (alias Tag 0066) Auslesen
cm> get-data 0066
 => 80 CA 00 66 00
 <= 6A 88 Status: Reference data not found 

#Key Information Template (alias Tag 0xE0) auslesen möglich?
cm> get-data 00e0
 => 80 CA 00 E0 00
 <= 6A 88
Status: Reference data not found

Anhand der des Cardmanager AIDs (A000000070000501495344) kann man auf den Hersteller bzw den RID (Registered Application Provider Identifier) schliessen:
A000000070; Prism Card Technologies; South Africa zu finden unter http://prism.co.za bzw mitlerweile http://net1.com

Leider unterstützt die Karte keine Authentifizierung durch INITIALIZE UPDATE / EXTERNAL AUTHENTICATE wie es bei JavaCards nach Global Platform 2.x spezifiziert ist um Applets auf die Karte zu laden:

cm> init-update
=> 80 50 00 00 08 60 F3 6D 23 32 2F 2D D4 00
<= 6E 00
Status: CLA value not supported

SIMalliance CAT Loader alias Applet Upload

Mehr Erfolg mit einem Upload eines Applets / CAP Files hat man wie @codebutler im README.md beschreibt:

    Right-click on "Root", "Add Node" -> "Add OTA Session"
        Send Terminal Profile: True
        Right-click on OTASession, "Add Package"
            FileName: (choose cap file)
            Security domain AID: A000000070000501495344
        Right-click on OTASession, "Add Applet STK"
            Package AID: D0D1D2D3D4D601
            AID: D0D1D2D3D4D60101
            Instance AID: D0D1D2D3D4D60101
            Max menu entries: 01
            Menu entries: 0001

    OTA Configuration (toolbar button)
        SMS
            Originating Address / Service centre
                Type of number: International
                NPI: National
                Number: 55667788

Hierfür lädt man sich den SIMalliance CAT Loader V2.0 (nach einer Registrierung) herunter und kann so z.B. das Hello JavaCard Applet auf die Karte via CAT TP (Card Application Toolkit Transport Protocol) installieren.

screenshot-simalliance-loader

AIDs / ISDs / Packages

Folgende Packages sind auf der Karte vorhanden:

 
#vor der Nutzung des SimAlliance Loaders
Packages
A0000000620001                   java.lang
A0000000620101                   javacard.framework
A0000000620102                   javacard.security
A000000070000501495344           Secure Domain
A0000000700005016A637265696E74
A0000000700005016E61746D
A0000000700005015574696C
A000000070000501FFFFFFFF43414C

#nach dem Upload des hello World applets
Packages
A0000000620001                    java.lang
A0000000620101                    javacard.framework
A0000000620102                    javacard.security
A0000000620201                    javacardx.crypto
A0000000090003FFFFFFFF8910710001  sim.access  http://www.andresteder.com/static/api/simtoolkitapi/sim/access/package-summary.html
A0000000090003FFFFFFFF8910710002  sim.toolkit http://www.andresteder.com/static/api/simtoolkitapi/sim/toolkit/package-summary.html
A0000000700005016A637265696E74 
A0000000700005016E61746D 
A0000000700005015574696C 
A000000070000501FFFFFFFF43414C
A0000000700005016A637265
A000000070000501FFFFFFFF43414D
A000000070000503444553
A000000070000503534841
A000000070000503524E47
A000000070000501FFFFFFFF4746324E
A0000000700005017374776962
A0000000700005016A77696269
A0000000700005016A776962
A0000000700170696E
A0000000700005014D617468
A00000015100                   GP Cardmanager / Secure Domain
D0D1D2D3D4D601                 hello world applet package

Applets:
A00000007000050152464D
A000000070000501574942
A000000070000501495344         CardManager/ISD (application privilege: 0x80)
A0000000700005016A63726501
D0D1D2D3D4D60101               hello world applet instance

UPDATE 2013-10-09:

Shadytel SIM Tools

Eine weitere Möglichkeit Applets auf die Karte zu laden ist die Verwendung der Shadytel SIM Tools. Dieses in Python geschriebene Skript verpackt die Upload-APDUs eines CAP-Files in SMS-PP ENVELOPE APDUs. Ausser dem Hochladen können die vorhandenen Packages / Instanzen aufgelistet werden:

user@rena:~/javacard/hello-stk$ ../sim-tools/bin/shadysim --pcsc -t
ICCID: 89XXXXXXXXXXXXXXXXXX
AID: a0000000620001, State: 01, Privs: 00
AID: a0000000620101, State: 01, Privs: 00
AID: a0000000700005016a637265696e74, State: 01, Privs: 00
AID: a0000000700005016e61746d, State: 01, Privs: 00
AID: a0000000700005015574696c, State: 01, Privs: 00
AID: a000000070000501ffffffff43414c, State: 01, Privs: 00
AID: a0000000620102, State: 01, Privs: 00
AID: a0000000620201, State: 01, Privs: 00
AID: a0000000090003ffffffff8910710001, State: 01, Privs: 00
AID: a0000000090003ffffffff8910710002, State: 01, Privs: 00
AID: a0000000700005016a637265, State: 01, Privs: 00
	Instance AID: a0000000700005016a63726501
AID: a000000070000501ffffffff43414d, State: 01, Privs: 00
	Instance AID: a000000070000501ffffffff43414d01
AID: a000000070000503444553, State: 01, Privs: 00
AID: a000000070000503534841, State: 01, Privs: 00
AID: a000000070000503524e47, State: 01, Privs: 00
AID: a000000070000501ffffffff4746324e, State: 01, Privs: 00
AID: a0000000700005017374776962, State: 01, Privs: 00
AID: a0000000700005016a77696269, State: 01, Privs: 00
AID: a0000000700005016a776962, State: 01, Privs: 00
	Instance AID: a0000000700005016a77696201
AID: a00000015100, State: 01, Privs: 00
AID: a0000000700170696e, State: 01, Privs: 00
AID: a0000000700005014d617468, State: 01, Privs: 00
AID: d07002ca449001, State: 01, Privs: 00
	Instance AID: d07002ca44900101

Weitere Infos/Links

Advertisements