Hallo,
Ich habe mich gerade mit Libchipard beschäftigt und festgestellt,
dass sich mein Leser anders verhält, wie es das Programm erwartet.

Folgender Code ist in ct_card.c

      if (LC_Card_GetLastSW1(hcard)==0x63) {
        switch (LC_Card_GetLastSW2(hcard)) {
        case 0xc0: /* no error left */
          return GWEN_ERROR_BAD_PIN_0_LEFT;
        case 0xc1: /* one left */
          return GWEN_ERROR_BAD_PIN_1_LEFT;
        case 0xc2: /* two left */
          return GWEN_ERROR_BAD_PIN_2_LEFT;
        default:   /* unknown error */
          return GWEN_ERROR_BAD_PIN;
        } // switch
      }
      else if (LC_Card_GetLastSW1(hcard)==0x69 &&
               LC_Card_GetLastSW2(hcard)==0x83) {
        DBG_ERROR(LC_LOGDOMAIN, "Card unusable");
        return GWEN_ERROR_IO;
      }
      else if (LC_Card_GetLastSW1(hcard)==0x64 &&
               LC_Card_GetLastSW2(hcard)==0x01) {
        DBG_ERROR(LC_LOGDOMAIN, "Aborted by user");
        return GWEN_ERROR_USER_ABORTED;
      }

Das Programm geht also davon aus, dass bei einer fehlerhaften Pin Eingabe
SW1 = 63
SW2 = C0, C1, C2 zurückgeliefert wird.

Ich hab ein falsch PIN ausprobiert.
Mein Kobil Kaan Pro liefert bei falsch eingegebener PIN
SW1 = 6a
SW2 = 80

Im Kobil Handbuch steht folgendes:

Nach der Eingabeaufforderung am Display wird die einzugebende PIN
(üblicherweise zwischen vier
und acht Ziffern) mit einem Sternchen pro eingegebener Ziffer angezeigt. Die
Länge der PIN ist dem
Control Byte zu entnehmen. Die PIN wird dann in das Datenfeld des
ICC-Kommandos eingetragen,
das sich im Datenfeld des PERFORM VERIFICATION-Kommandos befindet
(Command-to-perform;
falls dort nur der Command Header angegeben,wird vor der PIN das Lc-Feld
eingetragen).
Anschließend wird das ICC-Kommando zur Chipkarte übertragen. Die in der
Antwort des ICC-Kommandos
zurückgelieferten Status-Bytes (bei korrekter PIN-Eingabe ist SW1-SW2 =
'9000')
werden als Status-Bytes des PERFORM VERIFICATION-Kommandos an das
Anwendungssystem
weitergereicht, und am Display wird der Standard-Anzeigetext ´Aktion
erfolgreich´ ausgegeben.
Wenn die an die Chipkarte übergebene PIN nicht korrekt war, ist der
Returncode von der Chipkarte
SW1-SW2 verschieden von '9000'. In diesem Fall wird der Standard-Anzeigetext
'Geheimzahl falsch /
gesperrt' ausgegeben und der Returncode an das Anwendungssystem
zurückgeliefert. Drückt der
Benutzer vor Abschluß der PIN-Eingabe die Abbruch-Taste, dann wird kein
Kommando zur Chipkarte
geschickt, am Display der Standard-Anzeigetext 'Abbruch' ausgegeben, der
Eingabepuffer gelöscht
und als Returncode SW1-SW2 = '6401' zurückgegeben. Erfolgt nach
Eingabeaufforderung nicht
innerhalb von 15 sec (Default-Wert) die Eingabe der ersten Ziffer oder
verstreichen mehr als 5 sec bis
zur Eingabe der jeweils nächsten Ziffer, dann wird kein Kommando zur
Chipkarte geschickt, am
Display der Standard-Anzeigetext 'Abbruch' ausgegeben und als Returncode
SW1-SW2 = '6400'
zurückgegeben. Hat der Benutzer bei variabler PIN-Länge nur das Drücken der
Bestätigungstaste
vergessen, dann zeigt das Chipkartenterminal 'Bitte Eingabe bestätigen' an
und wartet auf die
Bestätigung der eingegebenen Geheimzahl durch den Benutzer auffordern. Nach
einer weiteren
Timeout-Zeit wird dieser Vorgang abgebrochen.

Es steht also nur,
dass SW1-SW2 verschieden von '9000' ist
Mein Versuch zeigt:
SW1 = 6a
SW2 = 80
Gruß
Herbert


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Aqbanking-devel mailing list
Aqbanking-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to