JavaCard (erste Schritte): Difference between revisions
Line 12: | Line 12: | ||
Angesprochen wird die Karte durch APDU Kommandos. Vor jeder Operation wird das Simple Wallet Applet mit ihrer AID <code>F000A0000E00</code> ausgewählt. |
Angesprochen wird die Karte durch APDU Kommandos. Vor jeder Operation wird das Simple Wallet Applet mit ihrer AID <code>F000A0000E00</code> ausgewählt. |
||
===Guthaben verändern=== |
|||
Das Guthaben kann beispielsweise mit dem Code <code>B040000001[AMOUNT, 1 Bytes]</code> erhöht werden: |
Das Guthaben kann beispielsweise mit dem Code <code>B040000001[AMOUNT, 1 Bytes]</code> erhöht werden: |
||
Line 48: | Line 50: | ||
</pre> |
</pre> |
||
Alternativ kann das Guthaben auch mit <code>B030000001[AMOUNT, 1 Bytes]</code> reduziert werden. Die Antwort <code>0x9000</code> steht hier für "Erfolgreich". |
|||
⚫ | |||
===Guthaben auslesen=== |
|||
⚫ | |||
<code> |
<code> |
||
Line 83: | Line 89: | ||
</pre> |
</pre> |
||
Das Guthaben wird hier mit <code>0x0005</code> vor dem Returncode <code>0x9000</code> (Erfolgreich) zurückgegeben. |
|||
==Erstellen einer eigenen Anwendung== |
==Erstellen einer eigenen Anwendung== |
Revision as of 17:08, 7 October 2022
Erste Schritte: Installation einer Beispielanwendung
Hier erfolgt zunächst der erste Test der Funktionalität der SmartCard durch Installation eines Applets, das eine einfache Guthabenkarte implementiert, hier Simple Wallet[1].
Installiert und angesprochen kann die JavaCard mittels GlobalPlatformPro[2].
Installiert wird die Applikation durch:
java -jar gp.jar -install simplewallet.cap -default
Angesprochen wird die Karte durch APDU Kommandos. Vor jeder Operation wird das Simple Wallet Applet mit ihrer AID F000A0000E00
ausgewählt.
Guthaben verändern
Das Guthaben kann beispielsweise mit dem Code B040000001[AMOUNT, 1 Bytes]
erhöht werden:
java -jar gp.jar -a "00A4040006F000A0000E0000" -a "B04000000105" -debug -verbose
Ausgabe:
GlobalPlatformPro v20.01.23-0-g5ad373b Running on Linux 5.15.0-48-generic amd64, Java 17.0.4 by Private Build # Detected readers from JNA2PCSC [*] REINER SCT cyberJack RFID basis 00 00 SCardConnect("REINER SCT cyberJack RFID basis 00 00", T=*) -> T=1, 3B80800101 SCardBeginTransaction("REINER SCT cyberJack RFID basis 00 00") Reader: REINER SCT cyberJack RFID basis 00 00 ATR: 3B80800101 More information about your card: http://smartcard-atr.appspot.com/parse?ATR=3B80800101 A>> T=1 (4+0006) 00A40400 06 F000A0000E00 00 A<< (0000+2) (33ms) 9000 A>> T=1 (4+0001) B0400000 01 05 A<< (0000+2) (25ms) 9000 A>> T=1 (4+0000) 00A40400 00 A<< (0018+2) (19ms) 6F108408A000000151000000A5049F6501FF 9000 [TRACE] GPSession - [6F] [TRACE] GPSession - [84] A000000151000000 [TRACE] GPSession - [A5] [TRACE] GPSession - [9F65] FF [DEBUG] GPSession - Auto-detected ISD: A000000151000000 SCardEndTransaction("REINER SCT cyberJack RFID basis 00 00") SCardDisconnect("REINER SCT cyberJack RFID basis 00 00", true) tx:23/rx:24
Alternativ kann das Guthaben auch mit B030000001[AMOUNT, 1 Bytes]
reduziert werden. Die Antwort 0x9000
steht hier für "Erfolgreich".
Guthaben auslesen
Das Guthaben kann dann mit dem Code B050000002
ausgelesen werden:
java -jar gp.jar -a "00A4040006F000A0000E0000" -a "B050000002" -debug -verbose
Ausgabe:
GlobalPlatformPro v20.01.23-0-g5ad373b Running on Linux 5.15.0-48-generic amd64, Java 17.0.4 by Private Build # Detected readers from JNA2PCSC [*] REINER SCT cyberJack RFID basis 00 00 SCardConnect("REINER SCT cyberJack RFID basis 00 00", T=*) -> T=1, 3B80800101 SCardBeginTransaction("REINER SCT cyberJack RFID basis 00 00") Reader: REINER SCT cyberJack RFID basis 00 00 ATR: 3B80800101 More information about your card: http://smartcard-atr.appspot.com/parse?ATR=3B80800101 A>> T=1 (4+0006) 00A40400 06 F000A0000E00 00 A<< (0000+2) (28ms) 9000 A>> T=1 (4+0000) B0500000 02 A<< (0002+2) (15ms) 0005 9000 A>> T=1 (4+0000) 00A40400 00 A<< (0018+2) (23ms) 6F108408A000000151000000A5049F6501FF 9000 [TRACE] GPSession - [6F] [TRACE] GPSession - [84] A000000151000000 [TRACE] GPSession - [A5] [TRACE] GPSession - [9F65] FF [DEBUG] GPSession - Auto-detected ISD: A000000151000000 SCardEndTransaction("REINER SCT cyberJack RFID basis 00 00") SCardDisconnect("REINER SCT cyberJack RFID basis 00 00", true) tx:22/rx:26
Das Guthaben wird hier mit 0x0005
vor dem Returncode 0x9000
(Erfolgreich) zurückgegeben.
Erstellen einer eigenen Anwendung
TODO