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

13 thoughts on “Blank 64k Programmable JAVA SIM Card”

  1. Hallo,

    ich möchte auch im Rahmen eines Demo Projektes kleine Applets auf Java-SIM-Karte schreiben, die dann per STK-Interface auf dem Handy angezeigt werden.
    Momentan habe ich gerade das Problem, dass der SIMAlliance CAT Loader eine ganz normale GSM SIM Karte nicht erkennt.
    Braucht man unbedingt eine leere Java SIM Karte, um den Applet mithilfe des SIMAlliance CAT Loader auf die Karte zu installieren?

    Danke
    Stephane

    1. Hi Stephane, mit einer ganz normalen Sim-Karte wirst du kein Glück haben, weil Du keine Rechte hast ein Applet auf die Karte zu laden. Btw: Für die im Artikel angegebene Karte gibt es aber auch noch ein anderes Programm um Applets zu laden

      1. Danke für die schnelle Antwort!
        Ich probiere dann mit der Java SIM Karte.

        Grüsse
        Yannick

  2. Hi,
    die Java SIM Karte habe ich inzwischen bekommen aber leider wird der Card-Reader (Modelname: SCM SCR3500) von dem SIMAlliance CAT Loader nicht erkannt. Der Card-Reader wird problemlos vom Betriebsystem (Win 7) erkannt aber beim Versuchen den SIM-Inhalt zu durchsuchen (d.h. mit dem Klick auf „Explorer“ im CAT-Loader) kommt die Meldung „Reader detection Error“.
    Hast du auch dieselbe Erfahrung mit dem SIMAlliance CAT Loader gemacht?

    Danke & Grüsse
    Stephane

      1. Win7 hat den Reader erkannt und einen Treiber installiert. Im Anschluss habe ich den Treiber des Herstellers nachinstalliert. Sowohl mit dem System- als auch mit dem Herstellertreiber ist der SIMAlliance CAT-Loader leider nicht glücklich. Der Reader wird nicht erkannt….
        Gibt es vielleicht hier einen Treiberkonflikt?

  3. Hi,

    den Treiber habe ich deinstalliert und wieder installiert aber leider ohne Erfolg… mmhh habe echt keine Ahnung warum den SIMAlliance Loader meinen SIM-Reader nicht erkennt, obwohl er vom System (Win7) und die Herstellersoftware problemlos erkannt wird.

    Ich würde mit dem anderen Programm „Shadytel SIM Tools“ ausprobieren wollen. Gibt es ein grundsätzlicher Unterschied zwischen dem SIMAlliance Loader und dem Shadytel SIM Tools?

  4. Hi,

    Mittlerweile habe ich auf eine alter Maschine versucht, auf der Windows XP installiert ist und die Karte wird jetzt erkannt!!!
    Da es auf der Windows 7 Maschine bei mir nicht läuft, bei dir aber schon , nehme ich mal an, dass Windows 7 nicht schuld ist. Höchstwahrscheinlich habe ich hier mit einem Treiberproblem auf der Win 7 Maschine zu tun.
    Ich bohre mal weiter.

    Grüsse

  5. Dear friends!

    You must set up the check box „Run as Administrator“ in the properties of the SIM Alliance loader link on your computer. Then, any readers will be recognized by SIM Alliance loader in the Windows 7.

    Good luck!

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s