Die Idee:
Magnet und Chipkarten faszinieren mich von frühster Kindheit an. Ich erinnere mich noch gut daran wie ich verbrauchte Magnet und Chipkarten aller Art sammelte und von einem Automaten träumte mit dem ich die Karten verändern und analysieren könnte. Meine Leidenschaft für die einfachen Speicherchipkarten entdeckte ich um `97 als die Zeitungen über die ersten Telefonkartennachbauten berichteten. Auf den Fotos waren abenteuerliche Konstruktionen zu sehen. Man hatte neben den normalen Goldkontakten ein Loch geschnitten und einen flachgefeilten IC eingelassen den man dann mit filigranen Drähten an den Goldkontakten angeschlossen hatte. Ich war sofort Feuer und Flamme. das musste ich auch probieren. Ich habe damals meine einzige Telefonkarte genommen und vorsichtig, wie auf den Bildern in der Zeitung gezeigt, die Rückseite der Karte aufgeschnitten und die Kontakte angezapft. Dann habe ich angefangen sämtliche ICs aus Elektroaltgeräten auszulöten die in etwa so aussahen wie der winzige IC auf dem Foto. Dieses Vorhaben ist natürlich gnadenlos in die Hose gegangen. Vor kurzem ist mir beim Aufräumen die alte aufgeschnittene Telefonkarte von damals in die Hände gefallen. Da kam mir die Idee für das ChipcardLab, ein kleines Labor für Chipkarten das es erlaubt sich auf unterster Ebene mit der Thematik auseinander zu setzen und eigene Ideen für Chipkartenanwendungen zu entwicklen und auszuprobieren.
ChipcardLab:
Das ChipcardLab ist ein modulares Entwicklungs und Analyseset für ISO und kompatible Chipkarten. Es ist modular erweiterbar und kann vielseitig eingesetzt werden. Eigene Ideen können mit minimalem Aufwand schnell ausprobiert werden. Das Projekt wendet sich in erster Linie an Einsteiger ohne Vorerfahrung. Das offene Konzept soll dazu einladen sich auf die Thematik Chipkarten aktiv einzulassen. Die Vorgefertigte Software und die bereits erstellte und getestete Platine sorgen für einen sicheren Start in die Welt der Chipkarten.
Die Hardware:
Das Cardboard: Die Basis bildet das Cardboard, auf welchem sich eine ISO/Anfor Kontaktiereinheit und ein 25 Pol Sub-D Stecker befindet. Sowol die ISO, als auch die Anfor Kontakte sind auf Steckleisten an der Seite geführt und normgerecht beschriftet. Bei dem Sub-D Stecker wurden alle Parallelport relevanten Pins ebenfalls auf die Steckleisten geführt und normgerecht beschriftet. So hält man bereits mit der Cardboard Platine ein Werkzeug in der Hand um z.B.: mit ein par Drähten eine Chipkarte am Parallelport eines PCs anzuschließen und zu lesesn bzw. zu beschreiben. Die Stiftleisten sind weiterhin dazu geeignet Module aufzunehmen.
Die Kartenimitation: Die Kartenimitation dient dazu das ChipcardLab direkt mit einem Cipkartenterminal zu verbinden um z.B.: eine Chipkarte zu emulieren bzw. den Datenverkehr zwischen Chipkartenterminal und Karte zu debugzwecken aufzuzeichnen. Ex existiert eine Imitation für ISO-Karten (Überlänge) und SIM-Karten.
Die SIM-Kartenkontaktiereinrichtung: Da SIM-Karten nicht in die normale Kontaktiereinrichtung passen gibt es eine Kontaktiereinrichtung die an die Kartenimitation angeschlossen werden kann. Auf diese Weise wird die Sim-Karte adaptiert. Das muss natürlich auch nicht sein. Man kann auch einen im Handel erhältlichen Adapter verwenden.
Der Adapter: Der Adapter (rechts oben im Bild) dient dazu die Kartenimitation direkt an das Cardboard anzuschließen um die entsprechenden Kontakte auf den Steckleisten des Cardboards zur Verfügung zu stellen. Das Cardboard ist schon entsprechend beschriftet. Der Adapter ist mit dem ChipcardController Board nicht kompatiebel, dort wird die Kartenimitation direkt an den dafür vorgesehenen Stecker angschlossen.
Das BSCRDW Modul: BSCDRW steht für »Billigster SmartCard Reader Der Welt« und geht auf
www.gsho.de zurück. Mit dem BSCRDW von Gsho habe ich meine ersten Chipkartenexperimente gemacht. Da für selbiges Konzept auf Gsho.de auch C++ Quelltexte zur Verfügung stehen ist der BSCRDW eine gute Fingerübung für alle die in die Thematik einsteigen wollen. Das Modul besitzt leider nur Lesefähigkeiten.
Das Smartlab Modul: Das Smartlab ist ein ebenfalls auf Gsho herunterladbares Programm (leider nur für Windows) mit dem sich die Inhalte von Telefonkarten lesen und bearbeiten lassen. Im Gegensatz zum BSCRDW besitzt das Smartlab Modul Schreibfähigkeiten und eine Status LED. Das Smartlab Modul benötigt aber eine zusätzliche Stromversorgung.
Der ChipcardController: Der Chipcard Controller macht das Chipcarlab zu einem mächtigen Universalgerät und ist das eigentliche Gehirn des ChipcardLab. Auf der Platine befindet sich ein Atmega16 als Hauptprozessor, eine Serielle und eine Parallele (4 Input Pins, 4 Output Pins, gepuffert) Schnittstelle, eine Schnittstelle zum Anschluss der Kartenimitation. 4 Status LEDs. Die Anschlüsse für die LEDs, die Kartenimitation und die ISO Kontakte der Kontaktiereinrichtung sind zusammen mit GND und 5V auf eine Steckleiste geführt um kleine Erweiterungsmodule aufstecken zu können. Programmiert wird über eine ISP Schnittstelle, welche natürlich entsprechend herausgeführt ist. Sowol beim Anschluss für die Kartenimitation, als auch bei der Kontaktiereinrichtung sind alle 8 ISO Pins erreichbar und können mit beliebigen Pegeln versorgt werden. Falls man den Atmega8 mit einem externen Oszillator betreiben möchte steht ein ein entsprechender Steckplatz bereits auf dem Board zur Verfügung.
Die Software:
Die Software wurde komplett neu geschrieben und unterstützt nun eine viel Zahl von alltäglichen Dingen die man in einem Chipkartenhaushalt so braucht. Das Konzept hat sich gegenüber der alten Software gravierend gändert. Es ist nicht mehr die komplette Software im ChipcardLab sondern nur noch eine Firmware die mit einer Software (Linux) fernbedient wird. Wer das ChipcardLab nachbaut findet im Paket vorkompilierte Binarys der kompletten Software. Was den Controller anbelangt können diese Binaries sogar so wie sie sind verwendet, sprich in den Controller geflasht werden. Bei der PC-Software ist es nicht garantiert das die Binaries funktioniern. Man sollte deshalb die PC-Software selber neu kompilieren. Hierzu muss zuerst die libCodeBananas installiert werden. Erst dann kann man die PC-Software kompilieren. Wenn die Software startet und die Verbindung mit dem ChipcardLab klappt ist der Rest ein Kinderspiel. Die Menüführung der Software ist diesmal mit sehr reichaltigen Hinweisen und Tips ausgeschmückt so das man sich schnell zurechtfindet.
Unter
https://berlin.ccc.de/wiki/ChipcardLab Habe ich zu dem eine genaue Anleitung veröffentlicht wie die Software zu handhaben ist. Diese Anleitung liegt dem Paket auch bei.
Tipps und Tricks:
Speicherkarten: Normale Speicherkarten (z.B.: Telefonkarten) haben eine 3 Drahtschnittstelle. Das sind Takt, Reset und I/O. Mit jedem Taktpuls wird der Adresszähler erhöht und mit Reset kann er wieder auf 0 gesetzt werden. An I/O liegt der jeweilige Status der Speicherzelle an, sollte man meinen. Tatsächlich ist es so das im Falle einer logischen 0 I/O auf Masse zieht und im Falle einer logischen 1 einen undefinierten Pegel annimmt. Deshalb muss I/O auf alle Fälle mit einem Pullup Widerstand an VCC gelegt werden.
Abtelefonierte Telefonkarten: Abtelefonierte Telefonkarten kann man zwar nicht wieder aufladen aber man kann sie als ID-Karten weiterverwenden: Telefonkarten sind durch ein Challenge/Response Verfahren geschützt. Die Challange ist 48 Bit lang und die Response 16 Bit. Man könnte sich nun eine Anzahl Responses von der Karte berechnen lassen und diese dann zur Validierung verwenden. Telefonkarten haben aber noch ein anderes Chic: Hält man sie unter schwarzlicht wird die Seriennummer sichtbar.
Von der Bitlänge zur Baudrate:
An vielen Stellen muss, falls man sie nicht weis, die Baudrate bestimmt werden. Im einfachsten Fall macht man das mit einem Speicheroszilloskop. Man greift sich willkürlich ein Stück der Kommunikation herraus und sucht sich das kleinst mögliche stetige Intervall, also eine Stelle wo man sicher ist das es sich um ein einzelnes Bit handelt heraus und misst den Abstand zwischen Anfang und Ende. Nehmen wir mal an wir messen hier einen Abstand von DeltaT=104us. Daraus kann man jetzt sehr einfach die Baudrate berechnen, denn die Baudrate ist genau der Kehrwert von DeltaT. Man muss das ganze nur richtig in den Taschenrechner eingeben, also die us bzw. das *10^-6 nicht vergessen. Effektiv rechnet man also 1/(104*10^-6). Heraus kommt 9615,384615385 was ungefähr 9600 Baud ist.
ChipcardLabMini:
Das ChipcardLab ist eigentlich ein modulares System. Diese modularität hat viele Vorteile die direkt auf der Hand liegen: Man kann leicht etwas ändern, man kommt überall leicht ran, man kann leicht eigene Änderungen einbringen, usw... Allerdings macht genau diese Modularität das ChipcardLab aufwändig und teuer. Deshalb habe ich eine miniatur-Version des ChipcardLab entwickelt die fast alles kann was das große ChipcardLab mit ChipcardController auch kann. Es kann sogar die gleiche Firmware ohne Änderungen weiter benutzt werden. Das ChipcardLabMini ist klein und passt in jede Tasche und ist natürlich USB-Powered. Allerdings ist leider nicht mehr modular. Aber man kann nicht alles haben.
Download:
Die Platinenlayouts und Schaltpläne stehen im PostScript (Ätzen) und im HPGL (Isolationsfräse) unter der Creative Commons Licence zur Verfügung. Die zugehörigen Quelltexte stehen unter der GNU-GPL V.2.0 zur Verfügung. Mittlerweile ist das ChipcardLab auch erwachsen geworden. Die neuste Version hat einen USB-Port und wird auch über diesen mit Strom versorgt, kein lästiges Kabelgewirr mehr. Zudem kommt beim ChipcardController jetzt ein Prozessor mit mehr Flash-Speicher zum Einsatz und das Layout ist SMD. Auch die Software hat viel dazu gelernt - probiert es aus...
Empfehlung:
Wer sich ernsthaft mit dem Thema Chipkarten befassen möchte kommt auf lange Sicht, mit den im Internet doch recht rar vorhandenen Informationen, nicht weit. Das Handbuch der Chipkarten von Rankl und Effing ist die Referenz auf dem Gebiet der Chipkarten. Vom Telefonkarten bis hin zu komplexen Smartcards mit eigenem Betriebsystem wird dort alles abgehandelt. Das Handbuch der Chipkarten ist die vollständigste Dokumentation die ich kenne und eigentlich ein Muss. Für die ersten Gehversuche sind die auf auf
http://gsho.thur.de/ bereitgestellten Informationen aber erstmal ausreichend.