Unter der Haube von ATM-Software

Ich habe viele Artikel über Bankkarten und Geldautomaten über GT und Habré gelesen und mich daher entschlossen, einen Beitrag zu leisten. Im Folgenden werde ich versuchen, darüber zu sprechen, wie der Geldautomat in Bezug auf Software angeordnet ist.

Was ist ein Geldautomat?


Jeder Geldautomat ist im Wesentlichen ein Computer mit angeschlossenen Peripheriegeräten, einem Gerätemanager und der eigentlichen Bankanwendung, die die gesamte Wirtschaft verwaltet. Alle Entscheidungen über die Ausgabe von Geld werden vom Server getroffen. Der Geldautomat sammelt nur Informationen vom Client und überträgt diese an den Server.

Bargeld am Geldautomaten


Der Mindestsatz an Geldautomaten-Bügeleisen umfasst:
  • Kartenleser zum Lesen einer Kundenkarte
  • PIN-Pad zur Eingabe eines PIN-Codes und anderer Informationen, wie z. B. des Betrags der Zahlung / Abhebung
  • Funktionstasten an den Seiten (4 + 4) sind Add-Ons, die mit dem Pin-Pad verbunden sind. In einigen modernen Geldautomaten wurden sie durch einen Touchscreen ersetzt.
  • Geldautomat
  • verschiedene Sensoren, Hintergrundbeleuchtung

Wer betreibt den ganzen Zoo?


Um zu verhindern, dass Hersteller Treiber schreiben, die zu diesem Zeitpunkt niemand benötigt, und Softwareentwickler nicht unter einer Vielzahl von Lösungen für die Verwaltung einer bestimmten Hardware leiden, wurde beschlossen, das Ganze zu vereinheitlichen.

So erschien der CEN / XFS- Standard oder einfach XFS , was für eXtension For Financial Services steht.

Der Standard beschreibt eine Client-Server-Architektur, die aus einem Hardware-Manager und den von ihm verwalteten Dienstanbietern (Lesegerätetreibern) besteht. In der Terminologie des „Service Provider“ -Standards ist dies eine Bibliothek, die eine Reihe von Funktionen zum Abrufen von Informationen über das Gerät und zu dessen Verwaltung bereitstellt. In der Regel ist dies eine dynamische Bibliothek mit einer Reihe von Standardfunktionen (Open, Close, GetInfo, Execute), von denen jede eine Reihe von gerätespezifischen Argumenten enthält.

Die gesamte Interaktion mit Geräten erfolgt über den XFS-API-Manager. Beispielsweise kann der Command-Parameter der Execute-Funktion einen Wert für einen Geldscheinautomaten haben:
WFS_CMD_CDM_DISPENSE (Abholung von Geld von Kassetten)
WFS_CMD_CDM_PRESENT (Zustellung eines Pakets an einen Kunden)

Für einen Kartenleser:
WFS_CMD_IDC_RETAIN_CARD (Erfassungskarte),
WFS_CMD_IDC_READ_TRACK (Spuren lesen)

Es gibt verschiedene Implementierungen von XFS-Managern (einschließlich Open Source), die in c ++ geschrieben wurden, und theoretisch sollten Bibliotheken von Dienstanbietern, die für einen Manager geschrieben wurden, auch für alle anderen geeignet sein In der Tat funktioniert eine Bibliothek, die von einem bestimmten Anbieter für einen bestimmten XFS-Manager geschrieben wurde, manchmal nur mit diesem Manager.

Es gibt auch Java XFS mit eigenen Bibliotheken, die nicht mit klassischen Managern kompatibel sind.

Banking-Anwendung


Eine Bankanwendung wird auf dem Bildschirm angezeigt, wenn Sie sich dem Gerät nähern. Es wurde entwickelt, um Daten vom Benutzer zu sammeln, diese Daten an den Host (Server) zu senden und eine Antwort vom Host durchzuführen. Wie bei Hardware (XFS) gibt es Industrieprotokolle ( NDC / DDC ), über die die Anwendung mit dem Host kommuniziert, die Konfiguration herunterlädt und interpretiert.

Jeder große Geldautomatenhersteller (Wincor, NCR, Diebold) hat eine eigene Implementierung von XFS- und Bankanwendungen.
Es gibt jedoch eine alternative Software auf dem Markt, die alle Standards erfüllt und nicht an einen bestimmten Anbieter gebunden ist.

Ich werde den Geldautomaten am Beispiel des NDC als das in Russland gebräuchlichste Protokoll beschreiben, aber das etwas weniger beliebte DDC hat ein ähnliches Funktionsprinzip.

Wie funktioniert das?


Zu jedem Zeitpunkt befindet sich der Geldautomat in einem der Betriebsmodi:
  • Power Up - Herunterladen
  • Offline - Keine Verbindung zum Server, Verbindung herstellen
  • Vorgesetzter - ein Sammler oder Servicetechniker arbeitet
  • Außer Betrieb - Der Geldautomat funktioniert nicht, weil er fehlerhaft ist, das Geld aufgebraucht ist oder nur jemand in der Bank es in diesen Modus transferiert hat.
  • Im Dienst - die Hauptbetriebsart, die allen bekannt ist, die über Bankkarten verfügen.

Im Servicemodus ATM in einem der Zustände ( Staat ), nummeriert 001 bis 999, und 25-Zeichenkette Beschreibung.

Das erste Zeichen dieser Zeile ist der Zustandstyp (angezeigt durch die Buchstaben A..Z sowie a..z und einige Zeichen (, '.?)). Er definiert die Grundgesamtheit. Die verbleibenden 24 Zeichen sind 8 dreistellige Dezimalzahlen, von denen jede eine bestimmte Statuseinstellung darstellt (Bildschirmnummer für die Anzeige, Bedingungen für das Umschalten in den Status, Liste der Aktionen). Es kann eine beliebige Anzahl von Zuständen eines Typs geben.

Im Servicemodus

Wenn der Servicemodus gestartet wird, führt der Geldautomat automatisch den Status 000 aus. In der Regel ist dies der Status A (Kartenlesestatus). In diesem Modus zeigt der Geldautomat einen Bildschirm an, auf dem Sie aufgefordert werden, eine Karte einzulegen, und versetzt den Kartenleser in den Empfangsmodus. Der Staat ist auch dafür verantwortlich, die Karte zu lesen und zu verzweigen, abhängig von den Ergebnissen dieser Operation.

Unten finden Sie ein Beispiel für die Konfiguration eines typischen Status A:
000 A001001011008004002001104

000 - Statusnummer
A - Statusart (Kartenlesestatus)
001 - Bildschirmnummer (Bildschirmnummer)
001 - Statusnummer , zu der die Karte erfolgreich gelesen wird
011 - Statusnummer, zu der bestanden bei Kartenlesefehlern
008 - Lesebedingung 1
004 - Lesebedingung 2
002 - Lesebedingung 3
001 - Bedingung für die Rückgabe der Karte (unmittelbar nach dem Lesen oder nach Abschluss des Vorgangs)
104 - Übergangszustand, wenn die Karte der Bank nicht bekannt

ist Gehen wir die Parameter genauer durch:
Art des Zustands - alles ist klar: Bestimmung der Art des Zustands kann die Anwendung weitere Parameter interpretieren.
Bildschirmnummer - ist ein Link zu einer Zeile mit einer Textbeschreibung des Bildschirms, der während des Betriebs dieses Status angezeigt wird.

Nicht jeder Staat hat einen Bildschirm.

Ein Bildschirm kann eine Zahl von 000 bis 999 haben. Bildschirme, die sich um 100 unterscheiden, sind normalerweise für verschiedene Sprachen reserviert. Somit sind Bildschirm 010 und Bildschirm 210 höchstwahrscheinlich mehrsprachige Versionen eines einzelnen Bildschirms. Ich werde etwas später über Bildschirme sprechen.

Die Nummer des Übergangszustands bei erfolgreichem Lesen der Karte ist der Zustand, in dem die Anwendung ausgeführt wird, wenn die Karte erkannt und die Daten erfolgreich gelesen wurden.

Neben den Zuständen und Bildschirmen im Geldautomaten gibt es einen weiteren wichtigen Konfigurationsparameter - die Tabelle der Finanzinstitute. Die Tabelle der Finanzinstitute enthält Daten darüber, welche Karten zu welcher Bank gehören, wie die von den Kartenspuren gelesenen Daten zu analysieren sind und was als Nächstes in Abhängigkeit von diesen Daten zu tun ist. Wenn es sich beispielsweise um eine lokale Karte handelt, können Sie ein Szenario ausführen. Wenn es sich bei der Karte um eine Drittbank handelt, müssen Sie den Szenariozweig für mobile Zahlungen und die Überprüfung des Kontostands sperren.

Übergangsstatusnummer bei Problemen mit dem Kartenlesen- Konnte die Karte unter keinen der vorgeschlagenen Bedingungen gelesen werden, wechseln wir in den in diesem Parameter angegebenen Zustand. In der Regel ist dies ein Zustand J (Schließzustand), in dem wir die Karte ausgeben, einen Bildschirm mit einem Vorschlag zum Aufnehmen anzeigen und einen Timer aktivieren, nach dem der Kartenhaltemechanismus gestartet wird. Der Status J ist auch der letzte Status im Falle einer erfolgreichen Transaktion.

Kartenlesebedingungen (3 Parameter in einer Reihe) sind Bitmasken, die die Anzahl der zu lesenden Spuren und, falls verfügbar, die Interaktion mit dem Chip angeben.

Beispiel: Chip lesen, Spur 2 lesen und Spur 1, Spur 1 lesen. Wenn mindestens eine der Bedingungen erfüllt ist, werden die anderen Bedingungen nicht erfüllt und die Karte wird als gelesen betrachtet. Wenn keine der Bedingungen erfüllt ist, gilt die Karte als ungelesen.

Bedingung für die Rückgabe der Karte - Der Geldautomat kann die Karte sofort nach dem Lesen zurückgeben oder am Ende nach Abschluss aller Vorgänge.

Die übrigen Zustände sind in ähnlicher Weise angeordnet:

  • Es gibt Zustände zum Lesen des Betrags von der Tastatur und zum Speichern in einem speziellen internen Puffer.
  • Es gibt Zustände zum Lesen eines PIN-Codes mit einem PIN-Pad und zum anschließenden Empfangen eines PIN-Blocks in einem speziellen Puffer.
  • Es gibt Zustände zum Überprüfen der eingegebenen Daten (wenn der eingegebene Betrag beispielsweise unter dem Mindestbetrag liegt, wird mit einer Fehlermeldung in den Zustand umgeleitet).
  • Es gibt Zustände zum Auswählen mit den Seitentasten (das sogenannte FDK) und zum Platzieren der Zeichen dieser Tasten (ABCD FGHI) in einem speziellen 8-Byte-Puffer;
  • Es gibt Zustände zum Nullsetzen und voreingestellte Puffer.

Durchlaufen alle diese Zustände , erreicht die Anwendung früher oder später den Zustand der Interaktion mit dem Host-Zustand I (Transaction Request State). In dieser Geschichte wird eine Anfrage aus den Daten gebildet, die in früheren Zuständen gesammelt und an den Server gesendet wurden. Die Anforderung besteht aus einer ATM-ID (Logical Unit Number), Daten aus den Kartenspuren, Daten aus früheren Transaktionen, Daten aus den Summenpuffern, Pin-Block, Funktionstastendruck (FDK-Puffer). Daten werden durch ein Trennzeichen getrennt. Die Serveranwendung empfängt eine Anforderung und analysiert den FDK-Puffer. Aus dem Inhalt dieses Puffers versteht der Host, was der Geldautomat möchte. Anschließend wird abhängig von der getroffenen Entscheidung eine Antwort gesendet, die Folgendes enthält:
  • Kennung der auszuführenden Aktion;
  • die Bildschirmnummer, die während dieser Aktion angezeigt werden soll;
  • den Inhalt des Schecks, wenn der Scheck gedruckt werden muss;
  • der Zustand, in den Sie am Ende der Aktion gehen müssen.

In einem speziellen Puffer wird die Anzahl der von jeder Kassette auszugebenden Banknoten übertragen (falls dies eine Bargeldabhebungsoperation ist). Dies ist die Anzahl der Banknoten, da der Geldautomat den Nennwert des ausgegebenen Geldes nicht kennt. Es handelt sich lediglich um Papierstücke in Kassetten.

Nach Abschluss der erforderlichen Aktionen sendet die Anwendung eine Bestätigung an den Host und wechselt in den angegebenen Status. In der Regel ist uns der Status J bereits bekannt. Bei einem Fehler sendet die Anwendung eine Fehlermeldung an den Host und wartet auf eine neue Transaktionsantwort mit dem Übergang in einen neuen Status.

Nun zu den Bildschirmen

Der ATM-Bildschirm ist ein 32 × 16-Zellenfeld. Der Bildschirm kann sowohl Grafikinformationen als auch Textinformationen enthalten, die relativ zu den Zellen positioniert sind. Schriftarten können doppelte Höhe haben.

Die Beschreibung des Bildschirms besteht aus einer Textzeile, die mit kontrollierten Zeichen durchsetzt ist, z. B. Löschen des Bildschirms, Positionieren des Cursors und Schriftgröße. In den meisten modernen Banken wird der Text heutzutage nur bei der Eingabe von Beträgen verwendet, in anderen Fällen ist der Bildschirm nur ein ganzes Bild. Es gibt jedoch auch Volltextbildschirme.

Ein Beispiel für einen Bildschirm, auf dem ein Bild aus einer Bildertabelle angezeigt wird (\ 0c \ 1bP2018 \ 1b \ 5c).

Diese Bildschirme sind mit den Parametern des Status verknüpft.

Der Satz von Zuständen, Bildschirmen, Anpassungen und Zeitgebern wird als ATM-Skript bezeichnet. Jedes Skript hat eine eigene Nummer. Nachdem der Geldautomat geladen und mit dem Netzwerk verbunden wurde, sendet er eine Nachricht an den Host, in der er seine ID und Konfigurationsnummer angibt. Wenn die Konfiguration aktualisiert werden soll, versetzt der Host den Geldautomaten in den Außerbetriebsmodus und beginnt mit dem Laden der erforderlichen Parameter der neuen Konfiguration. Der letzte Parameter ist die Konfigurationsnummer. In ähnlicher Weise werden die Schlüssel zur Verschlüsselung des Stiftblocks, zum Verspotten und der Hauptschlüssel geladen.

Kurz gesagt, so ist der Geldautomat aufgebaut. Ich hoffe, jemand kommt mit diesen Informationen herein.

Jetzt auch beliebt: