Moneyplex und Card Reader nach Installation von openSUSE 12.2 – 5. Fortsetzung

Obwohl mein Moneyplex in der 32-Bit Version jetzt unter OpenSUSE 12.2 läuft, wollte ich in einer virtuellen Maschine prüfen, ob ein Umstieg auf die 64-Bit Version möglich ist. Leider scheitert dies an der Erkennung des Kartenlesers.

Aber fangen wir von vorne an. Zuerst habe ich in VirtualBox eine VM definiert und darin ein reines openSUSE 12.2 von der DVD ohne Updates installiert. Anschließend habe ich die Pakete für KDE 4.9 hinzugefügt und für den Kartenleser. Zypper habe ich erlaubt, den Vendor ohne nachfragen zu wechseln, so dass KDE und der Kartenleser die neuste Version nehmen.

zypper addrepo -cf -n „KDE Release 49“ „http://download.opensuse.org/repositories/KDE:/Release:/49/openSUSE_12.2“ „KDE49“
zypper addrepo -cf -n „KDE Release 49 Extra“ „http://download.opensuse.org/repositories/KDE:/Extra/KDE_Release_49_openSUSE_12.2/“ „KDE49Extra“
zypper addrepo -cf -n „Repo for card reader“ „http://download.opensuse.org/repositories/security:/chipcard/openSUSE_12.2/“ „Security Chipcards“
sed ‚/solver.allowVendorChange = false/ s!# !! ; s!false!true!‘ < /etc/zypp/zypp.conf > /etc/zypp/zypp.conf.new
cp /etc/zypp/zypp.conf /etc/zypp/zypp.conf.old
cp /etc/zypp/zypp.conf.new /etc/zypp/zypp.conf

Abschließend habe ich nur die Module für den Kartenleser installiert. Das Ergebnis war sauber. Laut dmesg wird der Kartenleser erkannt. Nur der pcscd mag nicht so wie in der realen Maschine. Obwohl die „Datei“ pcscd.pid vorhanden ist, wird gemeldet, dass sie nicht vorhanden ist. Hier gibt es einen Fehler, der so auf der realen Maschine nicht (immer) auftritt.

os-12-2:~ # rcpcscd status
redirecting to systemctl
pcscd.service – PC/SC Smart Card Daemon
Loaded: loaded (/lib/systemd/system/pcscd.service; static)
Active: active (running) since Wed, 26 Sep 2012 20:02:53 +0200; 46s ago
Main PID: 11303 (pcscd)
CGroup: name=systemd:/system/pcscd.service
└ 11303 /usr/sbin/pcscd –foreground –auto-exit

Sep 26 20:02:53 os-12-2 pcscd[11303]: 00000000 utils.c:53:GetDaemonPid() Can’t open /var/run/pcscd/pcscd.pid: No such file or directory
os-12-2:~ # ll /var/run/pcsc/pcscd.pid
-rw-r–r– 1 root root 6 Sep 26 20:02 /var/run/pcscd/pcscd.pid

Sieht fast gut aus. Aber in Moneyplex bietet unter PCSC keinen Kartenleser zur Auswahl an. Die Drop Down Box liefert nur einen wenige Pixel hohen Strich. Um nicht alten Fehlern nach zu laufen, habe ich das System aktualisiert, so dass statt KDE 4.8.x ein KDE 4.9.1 läuft. Dies brachte jedoch keine Besserung.

Der Versuch mittels pcsc_scan mehr zu erfahren, scheitert im ersten Anlauf, denn es fehlen die pcsc-tools. Zwar hat Matrica wohl recht, dass in meiner Beschreibung mehr Pakete installiert werden, als zum Betrieb notwendig, für eine Fehlersuche sind die pcsc-tools zusätzlich zu installieren. Und um eine Fehlersuche kam ich bisher nie herum.

Also: sudo zypper in pcsc-tools

Nun meldet pcsc_scan, dass das Perl-Module Card.pm nicht gefunden werden kann. Dieses befindet sich im Paket perl-pcsc. Dies hatte ich bisher noch nicht in der Liste der benötigten Pakete; nicht für die Funktion des Kartenlesers, sondern für ein Prüfung der Funktionsfähigkeit.

Auf der virtuellen Maschine hilft dies nicht. Der pcsc_scan wartet ewig auf den ersten Kartenleser.

os-12-2:~ # pcsc_scan
PC/SC device scanner
V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.6
Using reader plug’n play mechanism
Scanning present readers…
Waiting for the first reader…

Sehr viel schöner ist das Ergebnis auf der realen Maschine (siehe nächstes Listing des Outputs). Hier müsste sich nur jemand um das veraltete „defined“ Statement (im Output fett hervorgehoben) in Zeile 69 der Datei PCSC.pm kümmern.

Im nachfolgenden Listing habe ich die Byte-Folgen, die auf meinen Kartenleser oder mein Karte hindeuten, durch drei rote Punkte auf gelben Grund () ersetzt.

x1:~ # pcsc_scan
PC/SC device scanner
V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.6
Using reader plug’n play mechanism
Scanning present readers…
0: REINER SCT cyberJack RFID standard (4341515563) 00 00

Wed Sep 26 21:15:23 2012
Reader 0: REINER SCT cyberJack RFID standard (4341515563) 00 00
Card state: Card inserted,
ATR:

defined(@array) is deprecated at /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi/Chipcard/PCSC.pm line 69.
(Maybe you should just omit the defined()?)

ATR:
+ TS = 3B –> Direct Convention
+ T0 = FF, Y(1): 1111, K: 15 (historical bytes)
TA(1) = 18 –> Fi=372, Di=12, 31 cycles/ETU
129032 bits/s at 4 MHz, fMax for Fi = 5 MHz => 161290 bits/s
TB(1) = 00 –> VPP is not electrically connected
TC(1) = FF –> Extra guard time: 255 (special value)
TD(1) = 81 –> Y(i+1) = 1000, Protocol T = 1
—–
TD(2) = 31 –> Y(i+1) = 0011, Protocol T = 1
—–
TA(3) = FE –> IFSC: 254
TB(3) = 45 –> Block Waiting Integer: 4 – Character Waiting Integer: 5
+ Historical bytes: …
Category indicator byte: 65 (proprietary format)
+ TCK = 20 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):

Debit card (Germany): ec-cash, GeldKarte(EUR), Maestro, Cirrus, …

Geldkarte (generic ATR)

Gemalto
ROM Mask=ZKA 680 V5A
Init-Table=SSI3P3M6E_1 (MS0)
Massen-Signaturerstellungseinheit ZKA Banking Signature Card, Version 5.11M
TUVIT.93148.TU.06.2007

Eine kurze Moneyplex Installation auf dem 64-Bit Rechner zeigt: Es geht. Der Kartenleser wird sauber erkannt.

Fazit für heute

Ganz so einfach geht es in einer virtuellen Maschine (VirtualBox) nicht. Entweder fehlen mir doch ein paar Pakete (auf der realen Maschine ist alles installiert) oder der PCSC-Treiber verträgt sich nicht mit der Virtualisierung.

Zusätzlich zu den pcsc-tools sollte perl-pcsc installiert werden.

3 Kommentare

  1. Sehr viel schöner ist das Ergebnis auf der realen Maschine. Hier müsste sich nur jemand um das veraltete “defined” Statement in PCSC.pm kümmern. Die Byte-Folgen habe ich durch … ersetzt.

    Kannst du mir bitte genau beschreiben wo und welche Byte-Folge du ersetzt hast?
    in der
    /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi/Chipcard/PCSC.pm
    habe ich nichts finden können. Meine Kenntnisse sind aber auch nicht besonders.

    meine pcsc_scan läuft bis

    Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
    3B B7 94 00 81 31 FE 65 53 50 4B 32 33 90 00 D1
    Giesecke & Devrient Starcos 2.3

    Danke

  2. Guten Abend,

    ich meine ich habe die Bytefolgen im darunter aufgeführten Output, die auf meine HBCI- Karte oder meinen Kartenleser hindeuten durch drei Punkte „…“ ersetzt.

    Bitte die durch meine Unklarheit ausgelöste Verwirrung zu entschuldigen. Ich
    danke für den Hinweis und werde die Passage klarer fassen.

    Die /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-
    multi/Chipcard/PCSC.pm habe ich nicht angefasst. Mit dem nächsten Update würde meine Änderung überschrieben. Es gibt zahlreichen Perl Module, die noch ein veraltetes „defined“-Statement nutzen. Soweit ich es verstanden habe, wird ignoriert. In der Regel sollte man diese Statements – hier in der Zeile 69 de4r PCSC.pm – löschen oder auskommentieren können, ohne dass die Funktion des Modules Schaden nimmt. Aber ich bin kein Perl-Fachmann.

    Wünsche einen schönen Abend

Kommentare sind geschlossen.