Automatische Kontoabfrage mit Linux

Aus LinuxUser 04/2003

Automatische Kontoabfrage mit Linux

OpenHBCI skripten

Die Anwendung Aqmoney im Zusammenspiel mit OpenHBCI ist ein Beispiel zur effizienten Nutzung von Bankdiensten auf der Kommandozeile.

Skripte für Auszug und Überweisung, Libchipcard 0.8, OpenSSL 0.9.7, OpenHBCI 0.9.8

LinuxUser/hbci/

Lange Zeit gab es unter Linux kein Bankprogramm im Stil von T-Online, Quicken oder Zvlight. Der Anwender war gezwungen, auf Windows auszuweichen, wollte er nicht online im Web mit seinen Konten arbeiten. Aber das war auf die Dauer unbefriedigend.

Rückblick

Im letzten Jahr schien sich die Situation zu verbessern: Mit der Software Moneyplex der Firma Matrica (http://www.matrica.de) weckte ein erstes Programm für Linux Hoffnungen. Viele Anwender bestellten das Programm, nicht ohne vorher nachzufragen, ob die Software für die Linux-Distribution und Hausbank geeignet sei.

Die erste Enttäuschung kam rasch: SuSE 7.2 unterstützte den USB-Chipkartenleser nicht. Also musste ein serieller Leser bestellt werden, nur um festzustellen, dass die VR-NetWorld-Card mit dieser Moneyplex-Version noch nicht funktioniert. Auch die Disketten-Version, bei der die Bank die HBCI-Daten direkt zur Verfügung stellt, brach bereits beim Austausch des INI-Briefs ab.

Also lautete die Devise: Warten auf Version 5 von Moneyplex, welche versprach, die Chip-Karte zu unterstützen. Inzwischen auf SuSE 8.1 hochgerüstet, installierten wir Ende vergangenen Jahres gespannt die neue Version. Die Chipkarte wurde erkannt, aber das jähe Ende kam schnell: Der Datenaustausch beim Abholen der Kontendaten brach ab. Das hat sich auch mit der Disketten-Version nicht geändert.

Ursachenforschung

Warum es nicht funktionierte, versuchte zunächst die Bank herauszubekommen. Die Vermutung lautete: Die Karte ist gesperrt, man müsse eine neue bestellen.

Nach vier Monaten waren die Geduld am Ende und die vertane Probierzeit und die Investition in das Programm inklusive zwei Chipkartenleser abgeschrieben. Es musste trotzdem eine andere Lösung her – ohne Windows.

Da kam Anfang des Jahres die Meldung, dass es mit OpenHBCI eine Bibliothek gibt, die HBCI unter Linux möglich macht. Mit dieser Bibliothek und der rudimentären Kommandozeilenanwendung aqmoney konnte innerhalb weniger Tage eine funktionierende Bankverbindung mit Kontenabfrage, Abholen der Kontoauszüge und Überweisungen realisiert werden.

Diese Programme werden im Folgenden beschrieben. Natürlich soll erwähnt werden, dass Gnucash (http://www.gnucash.org) ebenfalls den HBCI-Zugriff integriert. Des weiteren arbeiten Entwickler an den Programmen KopenHBCI und GopenHBCI für die KDE- und GNOME-Umgebungen. Es wird also in absehbarer Zeit unter Linux mehrere grafische Programme geben.

Software

Zunächst wird die neue OpenHBCI-Bibliothek benötigt. Man erhält sie von http://www.openhbci.de. Möchte man mit Chipkarten arbeiten, ist die Bibliothek libchipcard notwendig, die ebenfalls von der obigen Web-Adresse bezogen werden kann. Außerdem muss SSL installiert sein.

Die Installation erfolgt in bekannter Weise über den Dreischritt ./configure; make; make install. Alternativ installiert man ein Paket im Format der jeweiligen Distribution, also beispielsweise für Mandrake Linux: rpm -Uvh openhbci-0.9.7-1mdk.i586.rpm.

Das Kommandozeilen-Tool aqmoney steht unter http://aqmoney.sourceforge.net zum Download bereit – allerdings nur in einer Quellcode-Version.

Initialschritte

Von der Bank ist eine so genannte Disketten-Version erforderlich, mit der man die Bankleitzahl (BLZ), die HBCI-Benutzerkennung (ID) und die Web-Adresse des Bank-Servers bekommt. Außerdem ist ein INI-Brief der Bank vonnöten, der den Bank-Hashcode enthält, der später verglichen werden muss.

Zunächst ist die IP-Adresse des Bank-Servers zu ermitteln:

host hbci02.fiducia.de
hbci02.fiducia.de. has address 195.162.4.242

Mit dieser IP-Adresse (hier 195.162.4.242), der HBCI-ID (hier 1234567890123456) und der Bankleitzahl (hier 53290000) wird ein Benutzer angemeldet. In Listing 1 finden Sie die komplette Kommandozeile.

Listing 1

aqmoney -configfile=$HOME/finanz/aqmoney.conf \
  --command="createuser" --user="1234567890123456" \
  --institute="53290000" -medium="$HOME/finanz/daten" \
  --security="rdh" --server="195.162.4.242"

Dabei werden in aqmoney.conf die Konfiguration und in daten die Verschlüsselungsangaben abgelegt. Außerdem wird ein Passwort abgefragt, das bei künftigen Aktionen notwendig ist. rdh steht für die Disketten-Lösung, ddv für die Chipkarte.

Dann müssen die Keys ausgetauscht werden (Listing 2). In der Fehlerausgabe (auch umzuleiten mit 2 > protokoll) sieht man die Details.

Listing 2

aqmoney --configfile=$HOME/finanz/aqmoney.conf \
  --command="getkeys" --user="1234567890123456" \
  --institute="53290000"
aqmoney --configfile=$HOME/finanz/aqmoney.conf \
  --command="sendkeys" --user="1234567890123456" \
  --institute="53290000"

Im nächsten Schritt (Listing 3) werden die Hashcodes verglichen und der INI-Brief erzeugt. Dazu verwendet man den Aufruf aus Listing 3 zum Vergleich mit dem Brief der Bank.

Listing 3

aqmoney --configfile=$HOME/finanz/aqmoney.conf \
  --command="iniletter" --user="1234567890123456" \
  --institute="53290000" -key="institute"

Nun muss ein eigener INI-Brief erzeugt werden, der unterschrieben an die Bank zurück geht (Listing 4). Ist die Bank mit den übertragenen Codes einverstanden, schaltet sie den Zugang frei. Nach dieser Freischaltung kann es losgehen. Den eigenen INI-Brief erzeugt man mit dem in Listing 4 gezeigten Aufruf.

Listing 4

aqmoney --configfile=$HOME/finanz/aqmoney.conf \
  --command="iniletter" --user="1234567890123456" \
  --institute="53290000" --key="user"

Mit folgender Kommandozeile sieht man etwas versteckt zwischen den Protokollmeldungen die Konten, die über diesen Zugang verwendet werden können.

aqmoney --configfile=$HOME/finanz/aqmoney.conf --command="acclist"

Kontenabfrage

Die Kontenabfrage (Balance) kann mit Hilfe eines kleinen Shell-Skripts erfolgen. Geben Sie keine Kontonummer an, zeigt das Programm alle Kontostände; ansonsten ist mit –account=”12345″ die Kontonummer mitzugeben. Listing 5 zeigt ein solches Programm.

Listing 5

#!/bin/sh
# Kontenabfrage
PATH=$PATH:/usr/local/aqmoney/bin
TMP=/tmp/aqmoney$$
echo Kontostand
aqmoney --configfile=$HOME/finanz/aqmoney.conf --command="balance" 2> $TMP
grep "(Saldenrückmeldung)" $TMP | sed 's/,/./g' | awk -F"[:+-]" '
   { if($11 == "C") betr = $12
     else           betr = $12 @L: * (-1)
     printf("BLZ: %9d   Konto: %12d   am: %2d.%02d.%4d   Stand: %10.2f %3s\n", $7, $5,
       substr($14,7,2), substr($14,5,2), substr($14,1,4), betr, $13) }
        '
rm -f $TMP

Nach der Eingabe der PIN (Passwort aus dem Initialschritt) sieht die Ausgabe so aus, wie in Abbildung 1.

Abbildung 1: Abfrage der Kontostände in der Shell

Abbildung 1: Abfrage der Kontostände in der Shell

Übrigens ist die PIN-Abfrage automatisierbar, da sie von der Standardeingabe erfolgt:

echo 454545454 | aqmoney

Das verschlechtert natürlich die Sicherheit, da die PIN irgendwo als Text unverschlüsselt gespeichert wird. Auf der anderen Seite sind nun automatische Kontoabfragen mit Cron möglich. Mit dem folgenden Crontab-Eintrag stehen in der ersten Mail des Tages die Kontoübersichten:

0 5 * * * echo 454545454 | $HOME/finanz/kontostand

Kontoauszüge und Überweisungen

Bei den Kontoauszügen (Turnover und Dump) hilft ein Skript, das mit Kontonummer und Startzeit aufgerufen wird. Die Auszüge werden gleichzeitig gespeichert und ausgedruckt. Für die Überweisungen ist eine kleine Datei notwendig, die alle Transaktionsdaten enthält und gleichzeitig als Beleg dienen kann. Beide Skripte finden Sie auf der Heft-CD.

Natürlich sind nun weitere Features leicht einbaubar, zum Beispiel eine Offline-Auswertung der Kontoauszüge und Belege, die Anbindung an ein Buchhaltungsprogramm oder eine grafische Oberfläche. Interessant ist aber, dass mit diesen wenigen Komandos und Shell-Zeilen sehr rasch eine funktionierende Bankverbindung realisierbar ist.

Glossar

HBCI

Home Banking Computer Interface ist eine normierte Schnittstelle, um von außen auf die Kontendaten der Bank zugreifen zu können. Sie basiert auf einer verschlüsselten Übertragung, PIN- und TAN-Nummern sind nach der Authentifizierung zu Beginn nicht mehr erforderlich.

INI-Brief

Zunächst gibt die Bank Daten zur Verschlüsselung an den Kunden weiter. Wenn dieser seine Bankübertragung aufbaut, bekommt er diese Daten angezeigt und kann sie vergleichen und somit verifizieren. Er erzeugt seinerseits Verschlüsselungsdaten, die er in Form des INI-Briefs an seine Bank zurück gibt. Somit ist sichergestellt, daß keine Hacker sich Zugang verschafft haben.

Disketten-Version

Man erhält alle erforderlichen Daten im Klartext von der Bank. Ursprünglich gedacht, sie auf einer Diskette zu speichern und sich dann damit zu Authentifizieren.

HBCI-ID

Eindeutige Nummer der Bank für diese Kommunikation, die für mehrere Konten gelten kann.

$$

Shell-Variable, die die aktuelle Prozeßnummer enthält.

Cron

UNIX-Daemon zur Ausführung zyklischer Kommandos (Datensicherung oä). Mit dem Befehl crontab werden die Zeiten und Befehle angegeben.

Infos

[1] http://www.hbci.de HBCI-Infos

[2] http://www.openhbci.de HBCI-Bibliothek und Verweise

[3] http://aqmoney.sourceforge.net Aqmoney-Kommandozeilen-Programme

[4] http://www.gnucash.org GNU-Cash-Version mit HBCI-Anbindung

[5] http://www.matrica.de Kommerzielles HBCI-Programm

LinuxUser 04/2003 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben