Fehler beim Zugriff auf die HBCI-Karte

 
Maniac
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Bremen
Beiträge: 4
Dabei seit: 12 / 2008
Betreff:

Fehler beim Zugriff auf die HBCI-Karte

 · 
Gepostet: 15.12.2008 - 14:15 Uhr  ·  #1
Hallo,

ich nutze auch die FinTS-Api.

In meinen Tests läuft soweit alles gut, vor allem weil ich es beim Entwickeln mit PIN/TAN nutze.

Bei der Nutzung mit der Karte auf einem "speziellen" Rechner (Win98 SE) läuft es dann zuerst auch problemlos. Die Umsätze können abgerufen werden etc. Aber nach einigen Kommunikationen (Umsatzabfrage, Überweisung etc.) scheint sich irgendetwas aufzuhängen.

Die Diode am Kartenleser leuchtet ständig und die API meldet dann Fehler beim Zugriff auf das Sicherheitsmedium.

Nach einem Rechnerneustart ist wieder alles gut.

Ist da in dieser Richtung schon etwas bekannt?

Weitere Fehlermeldungen, die ich erhalten habe:
Ausnahmefehler: Kein Datenträger im Laufwerk: Exception from HRESULT: 0x8007 0258
und
SCardException 0X000 00069

Ich weiß, das ist noch sehr dürftig. Ich werde noch weitere Funktionen zum Tracen und Ausgabe der Logs einbauen, um mich spätestens dann hier mit weiteren Informationen zu melden.

Aber vielleicht ist ja so schon etwas bekannt.

Danke!
subsembly
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: München
Homepage: subsembly.com/
Beiträge: 4581
Dabei seit: 11 / 2004
Betreff:

Re: Fehler beim Zugriff auf die HBCI-Karte

 · 
Gepostet: 15.12.2008 - 17:44 Uhr  ·  #2
Hallo,

hört sich für mich eher nach einem Problem mit dem Treiber des Chipkartenlesers an. Um welchen Leser handelt es sich denn? Sind die Treiber aktuell.

PS: Unter Win98 teste ich eigentlich schon lange nicht mehr. Ich habe noch nicht einmal ein Win98 System hier.
Maniac
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Bremen
Beiträge: 4
Dabei seit: 12 / 2008
Betreff:

Re: Fehler beim Zugriff auf die HBCI-Karte

 · 
Gepostet: 16.12.2008 - 09:07 Uhr  ·  #3
Erstmal danke für die Antwort.

Wie gesagt, ich kümmere mich nochmal um genauere Traces. Außerdem werd ich nochmal nach aktuellen Kartenleser-Treibern gucken.

Das ist so ein kleiner Towitoko Leser, den die Sparkasse Bremen vor Jahren mal verteilt hat. Ist glaube ich sogar noch einer, der per Seriell & PS/2 (für Strom) angeschlossen ist.

Win 98 ist eine längere Geschichte... :

Das Banking-Programm woran ich grade arbeite ist für einen Bekannten, der Blind ist und schon "etwas älter" ist. Ebenso sein Rechner damals, auf dem er als Blinder im Umgang mit dem PC geschult wurde. Als ich ihm dann einen neuen Rechner zusammen gestellt habe, wollte ich auch Win XP einsetzen. Allerdings habe ich festgestellt, dass sein Screenreader (Blindows 1.2) damit nicht kompatibel ist. Eine neue Version vom Screenreader hätte mit mehreren hundert Euro und (vermutlich) einer Umstellung der gewohnten Arbeitsweise zu buche geschlagen.
Somit sind wir bei Win 98 und dem alten Screenreader und der für ihn so wichtig gewohnten Umgebung geblieben.

Daher rührt eben auch das Problem mit dem Banking. Das damals ausgelieferte StarMoney 4 war für ihn überhaupt nicht bedienbar.
Er hat dann die ganze Zeit mit Wiso Mein Geld gearbeitet. Auch nicht 100%ig, weil Menüs nicht erkannt wurden usw. aber es hat gereicht.

Nun funktioniert aber auch Wiso nicht mehr (auch ne längere Geschichte ;)) und somit habe ich nach einer Alternative gesucht. Und damit auch Subsembly Banking gefunden, weil es ja barrierefrei sein soll.

Es funktionierte auch soweit, allerdings für seinen Screenreader noch immer nicht vernünftig (Saldo nicht auffindbar, Textbox-Labels nicht erkannt etc.).

Dann habe ich zufällig eben auch die API gefunden und ihm nun ein maßgeschneidertes Banking-Programm geschrieben (z.B. werden Beträge so angezeigt: "minus 35,50 Euro" und sämtliche Buchungstexte in Kleinbuchstaben, damit sein Screenreader das "brauchbar" vorliest usw.).

Das funktioniert soweit auch sehr gut (bis auf Umsätze abrufen und Überweisungen tätigen nutzt er sowieso nichts), nur der Chipkartenleser hängt sich offensichtlich ab und an mal auf.

Eigentlich nichts tragisches, weil es nach einem Neustart wieder funktioniert. Allerdings natürlich nervig und vor allem für ihn als Blinden natürlich ein großer Unsicherheitsfaktor (er sieht ja nicht, dass die Diode am Leser ständig leuchtet und sich damit wohl aufgehangen hat).

So, das als kurzen Exkurs, warum Win98! ;)

Werde mich mal um Traces bemühen. Allerdings fürchte ich auch, dass es am Treiber oder ähnliches liegt, wenn die Diode ständig leuchtet und der Leser offensichtlich nicht wieder frei gegeben wird o.ä.
Allerdings lief der Treiber und der Leser bisher mit Wiso Mein Geld über Jahre ohne Probleme. Von daher muss es irgendwie in der Kombination API + Treiber oder so liegen.
Maniac
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Bremen
Beiträge: 4
Dabei seit: 12 / 2008
Betreff:

Re: Fehler beim Zugriff auf die HBCI-Karte

 · 
Gepostet: 02.01.2009 - 21:07 Uhr  ·  #4
Hallo,

so, nun habe ich mal zwei Stacktraces von den Fehlern, die auftreten. Falls Du den HBCI Trace noch brauchst, bitte melden. Aber ich glaube, die Exceptions sind das Problem.

Vielleicht hast Du ja einen Ansatz, woran es liegen kann. Die Treiber für den Cardreader habe ich noch nicht aktualisiert, weil ich noch nicht wieder bei meinem Bekannten war, wird aber noch nachgeholt.

Code
Protokoll:
----------
Verbinden mit "Spk Bremen"...
Ausnahmefehler: SCardException: 0x00000069

Subsembly.SmartCard.PcSc.SCardException: SCardException: 0x00000069
   at Subsembly.SmartCard.PcSc.SCardException.RaiseWin32ResponseCode(UInt32 rc)
   at Subsembly.SmartCard.PcSc.SCardComm.Transmit(Byte[] vbSendBuffer, Byte[]& vbRecvBuffer)
   at Subsembly.SmartCard.CardPcScTerminalBase._Transmit(CardCommandAPDU aCommandAPDU)
   at Subsembly.SmartCard.CardPcScTerminalBase.SendCommand(CardCommandAPDU aCommandAPDU)
   at Subsembly.SmartCard.CardExpress.SendCommandEx(CardCommandAPDU aCommandAPDU)
   at Subsembly.FinTS.FinSecurityMediaSmartCard.SendCommand(CardCommandAPDU aCmdAPDU)
   at Subsembly.FinTS.FinSecurityMediaDDV._WriteSeq(Int32 nSeq)
   at Subsembly.FinTS.FinSecurityMediaDDV.OnSignHash(FinContact aContact, FinSecureKey aKey, FinOperationMode nOpMode, FinHash nHash, Byte[] vbHash)
   at Subsembly.FinTS.FinSecurityMediaSmartCard.SignHash(FinContact aContact, FinSecureKey aKey, FinOperationMode nOpMode, FinHash nHash, Byte[] vbHash)
   at Subsembly.FinTS.FinMessage.Sign(FinContact aContact, FinSignerRole nSignerRole, FinSecureKey aKey)
   at Subsembly.FinTS.FinDialog._Sign(FinMessage aMessage, FinSignerRole nRole, String sTan)
   at Subsembly.FinTS.FinDialog.InitDialog(FinDialogType nDialogType, String sCustID, String sPin, String sTan)
   at Subsembly.FinTS.Online.FinOnlineBanking._BeginDialog(String sCustID, FinDialogType nDialogType, FinMessageResult& nInitMsgResult)


Code
Protokoll:
----------
Verbinden mit "Spk Bremen"...
0010 Nachricht ist vollständig bearbeitet (HBMSG=10322)
Ausnahmefehler: Kein Datenträger im Laufwerk. (Exception from HRESULT: 0x80070458)
Der Status der letzten Aktion ist unklar!
Verbindung zur Bank wird abgebaut...

System.Runtime.InteropServices.COMException (0x80070458): Kein Datenträger im Laufwerk. (Exception from HRESULT: 0x80070458)
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
   at Subsembly.SmartCard.PcSc.SCardException.RaiseWin32ResponseCode(UInt32 rc)
   at Subsembly.SmartCard.PcSc.SCardComm.Transmit(Byte[] vbSendBuffer, Byte[]& vbRecvBuffer)
   at Subsembly.SmartCard.CardPcScTerminalBase._Transmit(CardCommandAPDU aCommandAPDU)
   at Subsembly.SmartCard.CardPcScTerminalBase.SendCommand(CardCommandAPDU aCommandAPDU)
   at Subsembly.SmartCard.CardExpress.SendCommandEx(CardCommandAPDU aCommandAPDU)
   at Subsembly.FinTS.FinSecurityMediaSmartCard.SendCommand(CardCommandAPDU aCmdAPDU)
   at Subsembly.FinTS.FinSecurityMediaDDV._Mac(Byte[] vbHash)
   at Subsembly.FinTS.FinSecurityMediaDDV.OnSignHash(FinContact aContact, FinSecureKey aKey, FinOperationMode nOpMode, FinHash nHash, Byte[] vbHash)
   at Subsembly.FinTS.FinSecurityMediaSmartCard.SignHash(FinContact aContact, FinSecureKey aKey, FinOperationMode nOpMode, FinHash nHash, Byte[] vbHash)
   at Subsembly.FinTS.FinMessage.Sign(FinContact aContact, FinSignerRole nSignerRole, FinSecureKey aKey)
   at Subsembly.FinTS.FinDialog._Sign(FinMessage aMessage, FinSignerRole nRole, String sTan)
   at Subsembly.FinTS.FinDialog.ExecuteOrder(FinOrder aOrder, String sTan)
   at Subsembly.FinTS.Online.FinOnlineBanking.SendOrder(FinOrder aOrder, Boolean fTanRequired, FinTan& aTan)
   at Subsembly.FinTS.Online.FinScriptSendOrder.OnRunScript(FinOnlineBanking aBanking, FinContact aContact)
   at Subsembly.FinTS.Online.FinScript._ThreadStart()
subsembly
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: München
Homepage: subsembly.com/
Beiträge: 4581
Dabei seit: 11 / 2004
Betreff:

Re: Fehler beim Zugriff auf die HBCI-Karte

 · 
Gepostet: 05.01.2009 - 14:01 Uhr  ·  #5
Hallo,

die Exceptions sind direkt übersetzte Fehlercodes aus dem Treiber des Chipkartenlesers. Möglicherweise wird der Treiber durch die komplexe Umgebung etwas überfordert? Möglicherweise liegt es daran, dass der Treiber von evrschiedenen Threads aufgerufen wird. Kann dazu leider auch nicht mehr sagen.
Maniac
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Bremen
Beiträge: 4
Dabei seit: 12 / 2008
Betreff:

Re: Fehler beim Zugriff auf die HBCI-Karte

 · 
Gepostet: 05.01.2009 - 14:49 Uhr  ·  #6
Ok, trotzdem danke.

Dann werde ich das demnächst mal mit den aktualisierten Treibern probieren...

Was mich halt nur wundert: das ganze lief jahrelang problemlos mit dem Wiso Mein Geld und dem gleichen Treiber.

Naja gut... jahrelang... bis jemand unfähiges versucht hat, den Rechner per DSL ins Internet zu bringen und dafür irgendwelche ominösen, inoffiziellen Win98SE Service Packs installiert hat und son Mist.

Da Wiso aber seit dem leider auch komplett den Dienst verweigert, kann ich da auch nicht mehr testen, ob die Probleme dort nun auch auftreten.

Aber ich werd die Treiber aktualisieren und dann mal weiter sehen. Schön ist es nicht, aber zur Not könnte er wohl auch damit Leben. Ab und zu mal ein Neustart ist besser als ein für ihn nicht bedienbares Banking-Programm.
Gewählte Zitate für Mehrfachzitierung:   0