Streifenweise

PC liest Magnetkarten

Praxis & Tipps | Praxis

Das 'Plastikgeld' fast aller Geldvermehrer, die VIP-Karte für die Luxus-Lounge, der Parkausweis für die Tiefgarage und die Kleinkredit-Quittung der deutschen Bahnen haben eines gemeinsam: den obskuren Magnetstreifen auf der Rückseite. Wenn Sie wissen wollen, was man dort über Sie gespeichert hat, brauchen Sie unseren Magnetkartenleser zum Anschluß an den PC.

Aufmacher

[#Karteninhalt Karteninhalt]
[#Stückliste Schaltplan und Stückliste]
[#ISO35544-Bit-Codes ISO 3554 4-Bit-Codes]
[#ISO35546-Bit-Codes ISO 3554 6-Bit-Codes]
[#SichereLücken Sichere Lücken]

Glücklicherweise sind die Abmessungen, Spurlage und Kodierverfahren bei Magnetkarten genormt, so daß man ohne große Tricks und Kniffe die enthaltenen Informationen auslesen und dekodieren kann. Die meisten Länder haben sich auf die ISO 3554 geeinigt, nur Deutschland schwört auf die DIN 9781, Teil 1. Da sich die beiden Normen kaum voneinander unterscheiden, werden wir uns hier immer auf die ISO 3554 beziehen, die wir jedem interessierten Leser als Lektüre wärmstens empfehlen (in jeder guten Uni-Bibliothek zu haben). Dort findet man zum Beispiel die äußeren Abmessungen der Magnetkarten, die Lage des Magnetstreifens und seiner Spuren mit der genauen Angabe, ab wo was geschrieben werden darf. Andere Angaben, wie der Bereich, in dem Klarschriftdaten aufgeprägt werden dürfen, sind hier nicht von Interesse.

Der Magnetstreifen kann bis zu drei Spuren mit den seriellen Daten enthalten. Zur Kodierung des Magnetstreifens wird die modifizierte Frequenzmodulation (F2F =Frequency/Double Frequency) angewendet, die bereits 1954 von Aiken entwickelt worden ist. Mit dieser Methode ist es möglich, Daten und Takt gemeinsam in den magnetischen Flußwechseln abzulegen und beim Lesen den Takt wieder zurückzugewinnen. Die Schreibdichte und die Anzahl der Bits pro Zeichen sind nach ISO 3554 von Spur zu Spur unterschiedlich. Auf Spur 1 beträgt die Schreibdichte 210 bpi (bits per inch) bei 7 Bits pro Zeichen. In diesen 7 Bits steckt bereits das Parity-Bit, das jedes Zeichen auf ungerade Parität ergänzt. Mit den verbleibenden 6 Bits ist es auf Spur 1 möglich, auch alphanumerische Zeichen abzulegen. Auf den Spuren 2 und 3 werden hingegen nur 5 Bits pro Zeichen, immer inklusive Parity-Bit, verwendet. Die Schreibdichte beträgt bei Spur 2 lediglich 75 bpi, bei Spur 3 wieder 210 bpi. Aus der Schreibdichte und der Anzahl Bits pro Zeichen ergibt sich die maximale Anzahl der Zeichen, die auf jeder Spur gespeichert werden können. Bei Spur 1 beträgt diese 79 Zeichen, bei Spur 2 maximal 40 und bei Spur 3 maximal 107, inklusive Start- und Stopzeichen. Das niederwertigste Bit (b0) kommt jeweils zuerst, das Parity-Bit zum Schluß als fünftes (b4) beziehungsweise als siebtes Bit (b6).

Selbst auf der EC-Karte stehen die Daten (nicht die Geheimnummer!) unverschlüsselt. Man benötigt lediglich die passende Zeichentabelle, um die einzelnen Bits wieder richtig zusammenzusetzen. In der ISO 3554 findet man die passenden Tabellen für den 4- und 6-Bit-Code, wobei man jeweils noch das Parity-Bit auf ungerade Parität ergänzen muß. Um echte ASCII-Zeichen zu erhalten, addiert man zu den erhaltenen Werten $20 beim 4-Bit- und $30 beim 6-Bit-Code.

Viel benötigt man nicht, um einen PC in ein universelles Kartenlesegerät zu verwandeln. Zu dem eigentlichen Kartenleser, den man als fertige Baugruppe schon für rund 60 DM erhält, kommen nur noch eine Handvoll Widerstände und Dioden zur Anpassung an die parallele Schnittstelle hinzu.

Prinzipiell läßt sich jeder handelsübliche Magnetkartenleser anschließen, also Durchzug, Einsteck- oder motorbetriebener Kartenleser. Letzterer hat den Nachteil, daß er sehr teuer ist. Eine preiswerte Alternative bilden die beiden erstgenannten, wobei einige Einsteckkartenleser aufgrund der mechanischen Abmessungen nicht die gesamte Magnetspur lesen können. Wir haben deshalb einen handbetriebenen Durchzugkartenleser gewählt. Man hat zusätzlich die Wahl zwischen Ein-, Zwei- oder gar Dreispurlesern. Zweispurleser sind für jede beliebige Spurkombination erhältlich (leider steigt der Preis überproportional mit der Anzahl der Spuren an).

Abmessungen der Magnetkarte und Bereich der magnetisierbaren Schicht nach ISO 3554
Vergrößern
Abmessungen der Magnetkarte und Bereich der magnetisierbaren Schicht nach ISO 3554

Wir haben uns für Modelle der Serie HNR von Omron und für das Modell 832 013200 der Firma ddm Hopt+Schuler entschieden. Hierbei handelt es sich um Einspurleser, bei denen man aber durch Lösen von zwei Schrauben den Lesekopf auf jede der drei Spuren einstellen kann. Die Elektronik der Serie HNR ist in CMOS-Technologie ausgelegt. Die Stromaufnahme beträgt maximal 6 mA, so daß vier 'highe' Datenleitungen der parallelen PC-Schnittstelle als Stromversorgung herangezogen werden können. Der Magnetkartenleser von Hopt+Schuler hat eine Stromaufnahme von rund 25 mA und benötigt deshalb eine separate 5-Volt-Stromversorgung. Natürlich sind Sie nicht auf diese zwei Typen angewiesen.

Lage der drei Spuren im Magnetstreifen
Vergrößern
Lage der drei Spuren im Magnetstreifen

Der Aufbau der Schaltung erfolgt am besten freischwebend oder auf einer kleinen Lochrasterplatine. Die wenigen Bauteile sollten in einem D-Sub-Steckergehäuse Platz finden. Übrigens dürfte auch der Betrieb am SCC des Mac möglich sein, wenn man analog zu [4] vorgeht und das Programm auf SCC-Bedienung umstrickt.

Im Datenblatt steht auch, mit welcher Ausgangsbeschaltung (Open Collector oder Komplementärendstufe) und mit welcher Signalpolarität (positive oder negative Logik) der Leser arbeitet. Die von uns eingesetzten Geräte arbeiten mit negativer Logik, andernfalls läßt sich die Software umstellen. Alle uns bekannten Magnetkartenleser haben, für jede Spur getrennt, die Signale CLS (card loading signal), RCP (read clock pulse) und RDP (read data pulse) gemeinsam. Der Ausgang CLS gibt an, daß eine beschriebene Magnetkarte gerade am Lesekopf vorbeigezogen wird und bleibt solange aktiv, bis die Karte entnommen worden ist. Der F2F-Demodulator trennt die magnetischen Flußwechsel auf dem Magnetstreifen in Takt (RCP) und Daten (RDP) auf. Die Daten müssen vom Ausgang RDP mit der abfallenden Flanke von RCP gelesen werden.

Ein weiteres Signal bei der HNR-Serie ist CSV (save current). Dieser Eingang schaltet bei low-Pegel einen Stromsparmodus ein, der den Leseverstärker abschaltet. Im normalen Lesebetrieb muß er auf high gelegt werden. Ferner sind einige Magnetkartenleser mit Mikroschaltern oder Photodetektoren ausgestattet, die angeben, wo sich die Karte gerade im Leser befindet. Diese Features mögen für einige Anwendungen interessant sein, für das grundlegende Verständnis oder das reine Auslesen spielen sie jedoch keine Rolle.

Blockschaltbild der verwendeten Magnetkartenleser
Vergrößern
Blockschaltbild der verwendeten Magnetkartenleser

Das Programm verfolgt zwei Ziele: Zum einen, dem interessierten Leser ein Werkzeug in die Hand zu geben, das Experimente mit Magnetkarten ermöglicht, zum anderen, anhand des Quelltextes das Verfahren des Lesens und der Dekodierung zu erläutern.

Der Datentransfer erfolgt über eine der parallelen Schnittstellen, die gleichzeitig die Stromversorgung des Magnetkartenlesers übernimmt. Dazu werden Pin 2 bis 5 der Schnittstelle auf high gesetzt, und vier Schottky-Dioden verODERn den 5-V-Pegel zwecks Spannungsversorgung des Magnetkartenlesers. Die Schnittstelle liest die ausgelesenen Daten (RDP) auf Busy (Pin 11) und den Takt (RCP) auf Acknowledge (Pin 10) ein. Soll CLS ebenfalls ausgewertet werden (das abgedruckte Programm unterstützt dies nicht), kann Select (Pin 13) dafür herhalten. Zum besseren Verständnis wurde die Hochsprache Pascal gewählt und auf alle Programmiertricks verzichtet. Das Programm erklärt sich zum größten Teil selbst. Es ist für die üblicherweise bei LPT1 und LPT2 verwendeten I/O-Adressen ausgelegt.

Lage der drei Spuren im Magnetstreifen
Vergrößern
Der Omron-Kartenleser ist in SMD-Technik aufgebaut. Mit dem winzigen Schalter läßt sich der Leseverstärker auf die unterschiedlichen Bit-Dichten 75 und 210 bpi einstellen.

Mittels übergebener DOS-Parameter L1, L2 und LH kann man zwischen den verschiedenen parallelen Schnittstellen wählen. Die Zeichenlängen von 5 und 7 Bit stellen die Parameter C5 respektive C7 ein. Als Grundeinstellung ist LPT1 und 5 Bit Zeichenlänge vorgegeben. Ein möglicher Aufruf ist etwa 'M_KARTE L2 C7', der den Kartenleser an der Schnittstelle LPT2 auf eine Zeichenlänge von 7 Bit setzt.

Zum Testen eines Magnetkartenlesers ist eine Konstante TEST vorgesehen. Bei TEST = TRUE stellt das Programm sowohl die eingelesenen Takt-Bits als auch die Daten-Bits bitweise dar. Dies kann in einigen Fällen hilfreich sein, um zu testen, ob der Magnetkartenleser überhaupt funktioniert.

Schaltplan zum Anschluß des HNR-Magnetkartenlesers
Vergrößern
Schaltplan zum Anschluß des HNR-Magnetkartenlesers in CMOS-Technologie (jede Datenleitung ist mit max. 2 mA zu belasten). Beim Anschluß anderer Magnetkartenleser kann eine externe Stromversorgung notwendig sein.

Der Kern der Software besteht aus fünf Teilen. Nach dem Starten initialisiert das Programm zuerst die entsprechende Schnittstelle unter Berücksichtigung eventuell angegebener Paramater. Danach liest die Prozedur Lieskarte Bit für Bit der Magnetkarte ein (hier mit fallender Flanke des Taktsignals), ohne eine Synchronisations- und Endkennung zu berücksichtigen. Im Listing finden Sie Hinweise für den Fall, daß der Leser mit positiver Logik arbeitet.

Hat man die Karte durchgezogen, muß man den Lesevorgang explizit mit der Eingabetaste (Return) beenden. Hat man beispielsweise eine Magnetkarte vorliegen, deren Synchronisationszeichen nicht bekannt ist, ist dieses Verfahren im Testmodus dazu geeignet, die Informationsstruktur besser zu erkennen. Anschließend verzweigt das Programm zur Routine Findsyncro. Diese hat die Aufgabe, aus dem Bitstrom das Synchronisationszeichen und das Stopzeichen herauszufiltern. Diese Steuerzeichen müssen bekannt sein und hexadezimal in der Konstantendefinition angegeben werden. Sie sind vom Benutzer im Programmquelltext bei Bedarf entsprechend zu ändern. Ist dies geschehen, so übernimmt die Routine Liesrueckwaerts die Aufgabe (nomen est omen), den Bitstrom, der ja auf der Magnetkarte rückwärts (Bit 0, Bit 1, Bit 2, Bit 3, Parity) geschrieben steht, beginnend beim Synchronisationszeichen mit der richtigen Gewichtung, also 8 × b3 + 4 × b2 + 2 × b1 + 1 × b0, und das Parity-Bit zu lesen. Das Parity-Bit ist von der Anzahl der gesetzten Bits abhängig. Es handelt sich hierbei ergo um den Modulo-2-Rest der Bit-Quersumme.

Zeitdiagramm der wichtigsten Ausgangssignale
Vergrößern
Zeitdiagramm der wichtigsten Ausgangssignale CLS, RCPund RDP. Bei negativer Logik liegen auf der abfallenden Flanke des Taktes (RCP) gültige Daten (RDP) an.

Nach dieser Hürde paßt die Prozedur Decodiere die 4-Bit- beziehungsweise 6-Bit-Informationen den menschlichen Gepflogenheiten an und gibt sie als Klartext aus. Dazu addiert sie zum resultierenden numerischen Wert bei 5 Bit Zeichenlänge $30 hinzu, bei 7 Bit Zeichenlänge $20. Als letztes versucht eine Prozedur namens Analysiere, die Informationen der zwei gebräuchlichsten Magnetkarten (EC- und S-Karte), also Kontonummer, Bankleitzahl und Gültigkeitsdauer, zu extrahieren. Hier ist es dem jeweiligen Benutzer selbst überlassen, inwieweit er in die Geheimnisse seiner Magnetkarte Einblick nehmen möchte. (cm)

Weitere Hinweise und Berichtigungen unter: c't-Projekte

[1] ISO-Norm 3554

[2] Datenblätter der Firma OMRON

[3] Datenblätter der Firma ddm Hopt+Schuler

[4] Carsten Meyer: CardWare, Macintosh-HyperCard liest Telefonkarten, c't 10/93, S. 194

[#anfang Seitenanfang]


Stückliste
R1...3 Widerstand 10k
D1...4 Schottky-Diode BAT 42
Durchzug-Kartenleser Omron 3S4YR-HNR4
(z.B. bei Quick-Ohm, Wuppertal oder eMedia, Hannover)
Sub-D-Stecker 25pol. male

[#anfang Seitenanfang]


Karteninhalt
EC-Karte
Spur Stelle Inhalt
2 1-3 Kennung (672, bei S-Card und EC-Karte gleich)
2 9-18 Kontonummer
2 21-22 Gültigkeitsjahr
2 23-24 Gültigkeitsmonat
3 1-4 Kennung (0159, EC-Karte)
3 5-12 Bankleitzahl
3 14-23 Kontonummer
3 37-40 Betrag in DM, den man noch abheben darf (nicht alle Geldinstitute)
3 41 Endziffer des Jahres der letzten Abhebung
3 61-62 Gültigkeitsjahr
3 63-64 Gültigkeitsmonat
S-Card
Spur Stelle Inhalt
2 x wie EC-Karte
3 1-4 Kennung (0059, S-Card)
3 9-24 wie EC-Karte
Kreditkarte
Spur Stelle Inhalt
1 2-17 Kreditkartennummer
1 19-44 Familienname des Karteninhabers
1 46-47 Gültigkeitsjahr
1 48-49 Gültigkeitsmonat
2 1-16 Kreditkartennummer
2 18-19 Gültigkeitsjahr
2 20-21 Gültigkeitsmonat

Inhalt des Magnetstreifens der EC-, Kreditkarten und S-Card (Anmerkung: Die Stelle gilt jeweils nach dem Startzeichen)

[#anfang Seitenanfang]


ISO 3554 4-Bit-Codes
b3 b2 b1 b0 Binärwert Zeichen
0 0 0 0 0 0
0 0 0 1 1 1
0 0 1 0 2 2
0 0 1 1 3 3
0 1 0 0 4 4
0 1 0 1 5 5
0 1 1 0 6 6
0 1 1 1 7 7
1 0 0 0 8 8
1 0 0 1 9 9
1 0 1 0 10 (a)
1 0 1 1 11 ; (d)
1 1 0 0 12 (a)
1 1 0 1 13 = (d)
1 1 1 0 14 (a)
1 1 1 1 15 ? (d)

Anmerkung: (a) für Hardwaresteuerungen benötigt, (d) spezielle Steuerzeichen (; Startzeichen, ? Endzeichen, = Trennzeichen)

[#anfang Seitenanfang]


ISO 3554 6-Bit-Codes
b5 0 0 1 1
b4 0 1 0 1
b3 b2 b1 b0 0 1 2 3
0 0 0 0 0 SP 0 (a) P
0 0 0 1 1 (a) 1 A Q
0 0 1 0 2 (a)

2

B R
0 0 1 1 3 (c) 3 C S
0 1 0 0 4 $ 4 D T
0 1 0 1 5 % 5 E U
0 1 1 0 6 (a) 6 F V
0 1 1 1 7 (a) 7 G W
1 0 0 0 8 ( 8 H X
1 0 0 1 9 ) 9 I Y
1 0 1 0 10 (a) (a) J Z
1 0 1 1 11 (a) K (b)
1 1 0 0 12 (a) (a) L (b)
1 1 0 1 13 - (a) M (b)
1 1 1 0 14 . (a) N ^(d)
1 1 1 1 15 / ?(d) O (a)

Anmerkung: (a) diese Zeichen werden für Hardwaresteuerungen benötigt, (b) hier können nationale Sonderzeichen eingesetzt werden, (c) reserviert, (d) spezielle Steuerzeichen (% Startzeichen, ? Endzeichen, ^ Trennzeichen)

[#anfang Seitenanfang]


Sichere Lücken

Egal, ob man seine Kreditkarte dem angesichts der Zwangsabgabe zähneknirschenden Ladenbesitzer unter die Nase hält, nach getaner Arbeit noch schnell 'einen Blauen zieht' oder Einlaß in den angesagtesten Schuppen der Stadt begehrt: Meist hat ein Magnetstreifen seine Bits im Spiel, und je nach Yuppie-Faktor bäuchelt die Börse nicht von Bündeln, Scheinen und Münzen, sondern von Telefon-, Bahn-, Kredit-, EC-, Kunden-, Konto-, ID-, Entry-, Login- und Sonstwas-Cards. Solange diese Karten nicht wie die sogenannten Smart Cards mit fälschungssiche(re)ren Kryptochips, sondern mit 'altmodischen' Magnetstreifen ausgerüstet sind, haben sie einen gewaltigen Nachteil: Die enthaltenen Informationen liegen praktisch 'nackt' da, lassen sich von jedermann mit geringem Aufwand ändern und sind somit potentielle Auslöser krimineller Machenschaften. So reicht bereits das Zurückdatieren des letzten Abhebungsdatums auf einer EC- oder Servicekarte, um damit mehr als die limitierten 400 beziehungsweise 1000 DM pro Tag abzuheben.

Da die Geheimnummer (PIN = Personal Identification Number) kodiert in den aufgespielten Daten enthalten ist, ordnen Experten die Magnetkarte mit ihrer 64-Bit-DES-Verschlüsselung (DES = Data Encryption Standard) nur noch unter 'mittlere Sicherheitsstufe' ein. Daß jemand auf Ihre Kosten mit einer geklauten oder geklonten Karte dreißig Kontoauszüge holt, dürfte zu verschmerzen sein; was aber, wenn er Algorithmus und Schlüssel kennt? Gerüchten zufolge soll ein Informatikstudent, der vor Jahren mit der Universitäts-VAX und hochmathematischer Vorbildung den DES-Schlüssel der EC-Karten in monatelanger Kleinarbeit ermittelte, von IBM, einem der Hersteller von Black-Box-Logiken, kurzerhand in den gutbezahlten Vorstand berufen worden sein.

Tatsächlich ist die 'Black Box', die in jedem Geldautomaten die Rohdaten entschlüsselt und mit der eingegebenen Geheimnummer vergleicht, immer noch eines der bestgehüteten Industriegeheimnisse unserer Zeit; mafiösen Organisationen sollte es aber nicht allzu schwer fallen, an diese Logik heranzukommen, um im Trial- and Error-Verfahren die PIN einer vorliegenden Karte zu ermitteln - denn knapp 10 000 Versuche bei einer vierstelligen PIN sind weitaus weniger als die mindestens 2(56), die der 64-Bit-DES erfordern würde.

Aber auch das ohne PIN arbeitende Kreditkartenwesen ist nicht ganz ohne. Fahren Sie beizeiten mal zu einer Tankstelle mit Kreditkartenlesegerät (elektronisch, nicht diese Gemüseraspeln), und achten Sie darauf, ob die Bedienung die auf dem Kassenbon ausgedruckte Kreditkartennummer mit der eingestanzten vergleicht. Er oder sie wird es nicht tun. Bestenfalls Ihr Autogramm muß sich noch einer augenscheinlichen Prüfung unterziehen. Wenn Sie vorher eine - fast beliebige - kreditwürdige Nummer (nicht gerade eine aus der Amex-Anzeigenkampagne) aufgespielt hätten, dürften Sie sich über eine kostenlose Tankfüllung freuen.

Weiteres Beispiel für eine klaffende Sicherheitslücke: Nicht nur der Geldautomat muß wissen, daß Sie und Ihre Karte echt sind, auch der Automat müßte sich ausweisen können. Bislang sind zwar die unmittelbare Nähe der zugehörigen Bank und eine Leuchtreklame Indiz für die Echtheit des Monetenspenders, Beweise sind dies jedoch nicht. Im Prinzip kann jeder ein geldautomatenähnliches Gebilde aufstellen, das gutgläubigen Passanten Karte und PIN abluchst und prompt 'Störung' meldet.

Noch größerer Schaden kann entstehen, wenn jemand mit dem Abbild Ihres Magnetstreifens Zugang zu hochvertraulichen Daten erlangt oder sich in eine sicherheitsempfindliche Umgebung, etwa in ein Kernkraftwerk oder eine Waffenschmiede, einschleicht. Solange sich die Karten nicht mit einer elektronischen Unterschrift - die EC-PIN oder ein Foto auf der Kreditkarte reichen oft nicht - schützen, ist der Freiraum für Manipulationen groß, und die Erfahrung zeigt, daß dieser auch genutzt wird.

Übrigens: Daß die Bundesbahnschaffner manchen 'Graufahrern', die sich mit geliehener BahnCard einen Fahrpreisrabatt erschleichen wollen, auch ohne Magnetkartenleser auf die Schliche kommen, hat einen einfachen Grund: Das Alter des Inhabers zum Gültigkeitsbeginn ist in einer der aufgedruckten Nummern untergebracht - suchen Sie einmal danach. Der Magnetstreifen enthält dagegen nur die Kartennummer und das Gültigkeitsjahr.

Infos zum Artikel

Kapitel
  1. Normalo
  2. Bauvorhaben
  3. Der kleine Unterschied
  4. Belesen
  5. Handbetrieb
  6. Literatur
  7. Carsten Meyer
Anzeige

Anzeige

Anzeige