ReinerSCT cyberJack RFID Basis-Leser und ComputerBILD loginCard

Gestern war es endlich soweit: 400.000 vom Staat subventionierte “Basis-Lesegeräte”, die hauptsächlich für die Benutzung mit dem neuen Personalausweis gedacht waren, kamen als Beilage zur aktuellen ComputerBild-DVD-Ausgabe in die Zeitschriftenregale.

//UPDATE: bei heise finden sich einige Interessante Details zu den finanziellen Hintergründen der Aktion.

Und damit nun auch die Antwort auf die Frage: Was steckt drin, um den hypothetischen Preis von € 34,90 zu rechtfertigen?

Hauptsächlich erwähnenswert wäre hier ein NXP PN512, der die eigentliche RF-Schnittstelle zur Karte bereitstellt; die Dinger kosten so um die 3-5$ pro Stück, was wohl den größten Anteil an den Herstellungskosten ausmachen dürfte.
Aber gleichzeitig auch der interessanteste Teil, was eventuelle abweichende Nutzungsmöglichkeiten des Geräts angeht… 🙂

Die Platine ist bemerkenswert kompakt gehalten; neben dem PN512 finden sich noch zwei weitere ICs:
//UPDATE: als USB-Interface dient ein Cypress CY7C64316, weiterhin findet sich ein Spannungswandler von 5V nach 3.3V, dessen Aufdruck offenbar leicht variiert.
Bisher gefunden: “MVAC LEVB” und “MUAB LEVB”
Mehr zur Hardware hier:
http://wiki.steve-m.de/doku.php/epa_basis_reader

Mitgeliefert wurde außerdem jeweils eine “loginCard”, mit der man sich online bei ComputerBild oder anderen bekannten Seiten über “mein-cockpit.de” einloggen kann.

Die Karte basiert auf dem OWOK-Framework von ReinerSCT, das als Standard für die Kommunikation zwischen Browser und Karte gedacht ist. Also am Ende doch wieder nur ein proprietärer Standard, der wohl auch langfrisitg eine Insellösung bleiben wird!? (Was ist denn z.B. mit Windows CardSpace?)

Konkret heißt das also momentan: Ich soll zunächst einmal die Karte selbst über die Seite von ReinerSCT für die Nutzung der “OWOK”-Plattform registrieren, nachdem ich deren Closed-Source Browser-Plugin installiert habe, um anschließend mit der registrierten Karte noch einen Account bei allyve.de erstellen zu können, mit dem ich mich dann über die seite mein-cokpit.de einlogge, wo ich wiederum die Daten all meiner Accounts von diversen anderen Seiten eintragen soll, um mich dann schließlich immer von dort aus einzuloggen?
Ehm, ja. Hättet ihr wohl gern…

Auf der Heft-DVD befinden sich allerdings noch einige Tools, die man scheinbar auch ohne irgendeine Registrierung nutzen kann; dieses “winlogon” werde ich mir als erstes mal genauer ansehen.

Bei der Karte (mit der Beschriftung “OWOK light”) handelt es sich übrigens um eine MIFARE DESFire EV1 2k (MF3 IC D21 wer es genauer wissen möchte), damit hätte ich nun überhaupt nicht gerechnet o_O
Dachte zunächst in Richtung JCOP oder zumindest irgendeine andere RSA-Karte, aber die wären wohl einfach zu teuer gewesen(?); Hauptsache der gemeine ComputerBild-Leser ohne nPA hat schonmal ein bisschen was zum rumspielen, damit er den Leser nicht gleich in die Tonne wirft… 😉

Auf der Karte sind im Auslieferungszustand bereits zwei ApplicationIDs vorinstalliert:
00 83 80
01 83 80

Allerdings enthält noch keine davon irgendwelche Files, mal sehen was sich daran nach Nutzung der winlogin-Software ändert 🙂

Wer sich mit der Struktur von DESfire-Karten genauer befassen möchte, findet hier die Dokumentation der verfügbaren Kommandos:
http://read.pudn.com/downloads165/ebook/753406/M075031_desfire.pdf

Der Vollständigkeit halber hier noch mein log:

;GetVersion (Kartentyp und UID auslesen)
> 60
< AF 04 01 01 01 00 16 05 > AF
< AF 04 01 01 01 03 16 05 > AF
< 00 04 20 3C 82 FE 20 80 BA 14 97 5D 50 28 10 ;die 7 bytes lange eindeutige UID der Karte: 04203C82FE2080, gefolgt von einer Batch-ID und dem Produktionsdatum: KW 28, 2010 ;GetApplicationIDs > 6A
< 00 00 83 80 01 83 80 ;zwei AIDs, je 3 bytes lang ;SelectApplication 008380 > 5A 00 83 80
< 00 ;GetKeySettings > 45
< 00 0B 8E ;Key-Änderung benötigt Application Master Key (=dies ist die OWOK-Applikation!?) ;GetFileIDs > 6F
< 00 ;noch keine Dateien vorhanden ;SelectApplication 018380 > 5A 01 83 80
< 00 ;GetKeySettings > 45
< 00 EB 84 ;Key-Änderung benötigt lediglich den aktuellen Key (=Computerbild-eigene Applikation?!) ;GetFileIDs > 6F
< 00 ;ebenfalls keine Dateien vorhanden

47 thoughts on “ReinerSCT cyberJack RFID Basis-Leser und ComputerBILD loginCard”

  1. Mit welchem Tool hast du denn dein log erstellt? Ist das auch für Windows?

    Würde mich auch sehr interessieren, mal einen “Blick in die Karte” zu werfen.
    Danke für den interessanten Beitrag 🙂

    Bernhard

  2. eigentlich wollte ich das mit chipcardmaster machen, bekomme es aber nicht hin, die Skript-Funktion (mehrere ‘Sprachen’ unterstützt, sehr angenehm) zu nutzen, wenn es die Karte nicht am ATR erkennt…

    habe nun das Tool von ACS benutzt, das eigentlich für den ACR122 gedacht ist, und nach Registrierung auf deren Seite zu finden ist:
    http://www.acs.com.hk/dloads/tools/eng/TOL_ScriptingTool_ACR122.zip

    komme mit der Syntax nicht ganz klar (länge der Antwort, immer Meldungen wegklicken), aber im Grunde einfach den Befehl und (90 00) als erwarteten Status-Code dahinter, z.B.:

    60 (9000)
    AF (9000)
    AF (9000)

    //edit
    übrigens konnte ich bisher keinerlei Veränderung auf der Karte nach Benutzung der winlogin Software feststellen; am selben Rechner ein zweites Konto zu erstellen geht nicht, dann heißt es die Karte wird schon für ein anderes Konto benutzt… und an einem anderen Rechner werden keine vorhandenen Konten angezeigt, d.h. es wird scheinbar wirklich nur die Karte authentifiziert, und die Login-Daten bleiben lokal auf dem Rechner.

    übrigens kommt mir die Nummer die angezeigt wird schon irgendwoher bekannt vor: ^^

  3. Mit dem KF Test Tool von Kobil kann man den Reiner-SCT Kartenleser und die Desfire Karte auch interaktiv ansprechen.

    Hat schon jemand probiert, ob die Karte einen PICC Master Key gesetzt hat oder ob der noch 0 ist? Die Rechte sind jedenfalls so gesetzt, dass man den Key ändern kann (aber dafür muss man ihn kennen). Ausserdem darf man Applications anlegen und löschen. Beim Löschen wird der Speicher aber nicht wieder freigegeben. Das macht erst FormatPICC und dafür muss man ebenfalls den PICC Master Key der Karte kennen. Wäre also unschön, wenn man sich den Speicher belegt und dann mit der Karte nichts mehr anfangen kann, weil man den Master Key nicht kennt. Also: 0 oder nicht?

    Datenschutzmäßig ist dieser Kartentyp natürlich wieder mal eine halbgare Lösung, weil die UID statisch ist und ohne Authentifizierung gelesen werden kann. Sozusagen ein Meat-Space Cookie.

  4. ehrlich gesagt glaube ich nicht, dass der Master Key für die gesamte Karte noch bei 0 liegt (immerhin kommt die dann doch von ReinerSCT und nicht von Computerbild 😉 so wie aber eigentlich auch diese login-software*…)

    es lassen sich für die PICC (ohne Auswahl einer AID) z.b. auch keine Files auslesen:
    –> 6F
    < -- 9D 9d heißt soviel wie zugriff verweigert (oder kann man grundsätzlich einfach keine files außerhalb der applikationen anlegen(?)) trotzdem müsste man die authentifizierung mal testen, nur mit so skripten aus einzelnen Befehlen ist das etwas... ungünstig 😀 werde demnächst vllt. mal libnfc unter linux testen... http://www.libnfc.org/community/topic/161/desfire-authentication/

    momentan interessiert mich vielmehr, wie die login-software die karte authentifiziert; habe leider keine blanko-desfire rumfliegen, wo man mal testweise die beiden AIDs erzeugen könnte (selbst dann fehlen wahrscheinlich noch die richtigen keys – die hoffentlich überprüft werden)

    vielleicht bekommt man die aus der software irgendwie raus, mal gucken.. 🙂

    *ReinerSCT bewirbt ‘loginMate’ übrigens ausschließlich in Zusammenhang mit deren ‘mateKey’-Karten, wobei es sich offenbar um RSA-Karten handelt…
    Vielleicht heißen die DESfire-Dinger nicht umsonst ‘OWOK light’, immerhin heißt es auf der OWOK-seite, dass in Zukunft z.B. auch der nPA (also die Pseudonymfunktion!?) genutzt werden kann (also eine ‘richtige’ RSA-Karte).

  5. Wobei das ganze Teil wohl eh fürn Arsch ist, da sämtlihce Pineingaben über die PC-Tastatur laufen und “einfach(er)” abgefangen werden könn(t)en.

    Dennoch vielen Dank für diesen Beitrag, hab ihn gleich mal verteilt und behalte deinen Blog im Auge. 🙂

  6. kleiner Nachtrag:
    ich hatte mich zwischenzeitlich doch mal für OWOK registriert bzw. eine PIN für die Karte gesetzt. Keine Veränderung an den Dateien!
    Offenbar wird wirklich nur die Karte anhand ihrer UID und eines Keys (der nur der Karte selbst und den OWOK-Servern bekannt sein dürfte) authentifiziert.

    Näheres übrigens in diesem Thread im vb-paradise Forum: 🙂
    http://forum.vb-paradise.de/programmieren/hardware-schnittstellenprogrammierung/49706-kartenlesegeraet-login-card-auslesen/

    hatte nun mal den ‘Kartentresor’ installiert, eine PIN gesetzt und einen Text hinterlegt, und siehe da:

    > 5A 01 83 80
    < 00 > 45
    < 00 EB 84 > 6F
    < 00 01 02 11 12 08

    es sind files dazugekommen (und damit wissen wir nun, dass die Offline-Sachen der Karte in der zweiten Applikation liegen, und offenbar nur die
    erste für die Online-Authentisierung genutzt wird 🙂 )

  7. moin

    da mal die frage ob es schon weitere software gibt die mit dem gerät genutz werden kann?
    ob nun mit der mitgelieferten karte oder einer anderen ist mir nahezu egal (so ich weiß wo ich ne entsprechende karte her bekomme).
    Leider findet man ja bei reiner-SCT dazu kaum bis garkeine informationen.

    wäre toll wenn ihr auch jemanden helfen würdet der sich mit der tiefliegenden technik nicht ganz so auskennt! 🙂

  8. Hi,

    habe gerade diesen blog hier gelesen und merke, dass hier leute sind, die mir evtl. weiterhelfen könnten: Ich nutze den ASUS Security Protect Manager, welcher neben Fingerabdruck und Kennwort auch Smartcards als Authentifizierungsmethode zulassen sollte. Der Kartenleser der Bildaktion wird auch erkannt, wenn man die Karte einlegt erhält man jedoch eine Fehlermeldung, der Typ der Karte sei unbekannt oder stimme nicht mit den Richtlinien überein. Merkwürdig! Weiß jemand, wie man das zum Laufen bringen könnte, würde mich sehr freuen, da ich dieser ASUS – Manager z.b. auch einen automatisiertes Login an Websites und Anwendungen zulässt, und man seine Daten dann nicht auf irgendeinen Server senden muss, der das Login übernimmt.

    Thanx much!

  9. @sleepsbee:
    Tja, gute Frage… immerhin handelt es sich um einen Leser für ausschließlich kontaktlose Karten, dafür gibt es momentan wirklich noch nicht viele (offene) Anwendungen.
    Was auf jeden Fall gut funktioniert, ist die GeldKarte kontaktlos; das wären momentan also hauptsächlich die BayArena-Card (selbst getestet) und die Hurricane-Festivalcard 2010 (falls jemand dort war und die evtl. noch übrig hat).
    Man kann die über die fun-SmartLine (Java-Applet) z.B. online aufladen, damit bezahlen oder für e-Ticketing usw. nutzen (Online-Alternsnachweis z.B. bei x-check geht mit diesen kontoungebundenen Karten nicht).
    http://www.GeldKarte-Online.de
    Allerdings ist das nichts neues, sondern schon seit Jahren mit den kontaktbehafteten Karten möglich (mit der selben Problematik der Klasse-1-Leser: die Transaktion wird über eine virtuelle Tastatur bestätigt… nur gab es dabei bisher nie großen Aufruhr 😉 )

    @Steve M.:
    Danke für den Hinweis 🙂
    Das klingt ja mal sehr interessant, ich dachte anfangs auch schon so in Richtung UART-Controller anlöten etc., nachdem ich den PN512 in dem Gerät sah… (und hatte dann gleich noch ein paar mehr Hefte gekauft 😀 )

    Mich interessieren langfristig vor allem der Card-Emulation und NFCIP-1-Mode, aber die scheinen mit der Programmierung des CY7C64316 im Auslieferungszustand wohl erstmal nicht möglich zu sein(?!).
    Leider bin ich mit so Low-Level-Programmierung auch nicht sonderlich vertraut, aber grundsätzlich könnte man doch im Zweifelsfall auch einen eigenen CY7C64316 da reinlöten, dessen Speicher dann nicht geschützt ist.. (aber du sagst auch, es ist schwer einen Programmer dafür zu finden, hm..)

    Aber grundsätzlich ließe sich doch auch das UART-Interface verwenden?! Hätte hier z.B. noch einen Silabs CP2102 rumfliegen, aber der Umfang des PN512-Datasheets hielt mich bisher davon ab, auch nur irgendwas in die Richtung zu versuchen.. 😀 (testweise ein paar Befehle senden und so, bin in solchen Dingen aber nicht soo versiert)

    Versuche gerade, Python unter Windows zum Laufen zu bringen, es gibt da diese wunderbaren http://rfidiot.org, die man zumindest mal über das PC/SC-Interface testen könnte (und zukünftig evtl. auf diesen Leser erweitern?!).

    Insgesamt ginge es mir eigentlich darum, möglichst viel aus diesem Leser rauszuholen, da er nun einfach so verbreitet ist, und damit vielen als günstiges Entwicklungstool für NFC-Applikationen zur Verfügung stehen würde 🙂 (das iPhone 5 im ersten Quartal 2011 sowie die meisten Nokia-Handys ab 2011 werden NFC-Unterstützung mitbringen, wird also noch spannend glaube ich 🙂 )

    @Castor:
    was ist denn das für eine Karte, hat die auch ein kontaktbehaftetes Interface? (goldener ‘Chip’) d.h. funktioniert sie bei dir in einem kontaktbehafteten Leser?!
    Meine BayArena-Card liefert kontaktlos z.B. einen völlig anderen ATR (auch ATS genannt in dem Fall), und chipcardmaster weigert sich daraufhin, sie als GeldKarte zu erkennen. (Betrag auslesen usw. klappt aber mit den selben APDUs).

  10. @Sebastian: “einen eigenen CY7C64316 da reinlöten” wird vermutlich nicht nötig sein. Die “Flash Security”, wie Cypress sie nennt (bei Atmel “security/lockbits”) kennt verschiedene Modi, unter anderem auch “R: Field Upgrade (Read protected)” (s. http://www.cypress.com/?rID=28186). Das wird vermutlich der eingestellte Modus sein, denn der Reader ist auf jeden Fall per USB updatebar (wird auf der Reiner-Seite beworben), aber so lange noch kein Update draußen ist, ist das recht schwer zu reverse-engineeren (vor allem mit read-protected flash). Das Gerät hat 3 Endpoints, und wenn man sich mal den USB-traffic anschaut, wird EP1 gar nicht verwendet, der könnte also zum Updaten gedacht sein.

    Dennoch habe ich mir mal einen Programmer bestellt (MiniProg1), mal schauen was sich da machen lässt. Die nötigen pins zum Flashen sind auf jeden Fall schon gut rausgeführt (DATA, CLK, RESET).

  11. Hey
    Ich bin ziemlich interessiert an RFID und habe mir auch den Reader geholt und ein paar der Befehle hier ausgetestet.
    Woher nehmt ihr die Befehle. gibts da eine Befehlstabelle?
    Wie sind die aufgebaut. Würde da sehr gerne weiter rumexperimentieren.
    Danke im vorraus =D

    BEste Grüße

  12. “aber so lange noch kein Update draußen ist, ist das recht schwer zu reverse-engineeren (vor allem mit read-protected flash).”

    Genau, es wäre dann nur die Frage, ob es tatsächlich in nächster Zeit ein Update geben würde 🙂 (also konkret: wofür? scheint ja bisher alles ganz gut zu laufen, und sooviel Einfluss hat der Leser dann ja auch nicht auf evtl. Probleme mit den Anwendungen).

    Aber wenn es wirklich bedeuten würde, dass mit Erscheinen eines Updates das Gerät theoretisch kompromittiert würde, dürfte doch das BSI nicht die Zertifizierung nach TR-03119 darauf geben!?
    Habe da gerade nochmal reingeguckt, auf Seite 9 in der Tabelle, vorletzte Zeile; eine Prüfung des Update-Verfahrens ist offenbar nur für die Standard- und Komfortleser vorgeschrieben…
    Im Anhang findet sich zwar das Modul A.16 (dort steht dann auch was von Kryptographie usw.), dieses ist aber nur für die Standard- und Komfortleser obligatorisch.

    Okay, der cypress-Chip unterstützt wohl nichts in die Richtung, aber trotzdem lassen sich anscheinend die Blöcke des Flashs jeweils einzeln mit den verschiedenen protection bits versehen.
    http://www.cypress.com/?docID=22242 (Seite 2)

    Somit wäre zu erwarten, dass nicht der komplette Chip geflasht wird, sondern sich im ersten Teil des Flashs eine Art Loader befindet (vollständig lese- und schreibgeschützt), der dann z.B. eine Prüfsumme der eigentlichen geflashten Firmware verifiziert… =/

    Zumindest wäre das die sinnvollste Variante das zu implementieren, mal von der anderen Seite betrachtet 😀

    @Marcel: über meinem Log hatte ich einen Link zu einem Dokument mit den Spezifikationen erwähnt, ansonsten hatte mir anfänglich auch das hier ganz gut weitergeholfen:
    http://ridrix.wordpress.com/2009/09/19/mifare-desfire-communication-example/

  13. “Genau, es wäre dann nur die Frage, ob es tatsächlich in nächster Zeit ein Update geben würde 🙂 (also konkret: wofür?)”

    Nunja, immerhin für den SCM SCL011, der ‘andere Basisleser’, gibt es bereits ein Update:
    http://support.scmmicro.com/dfu_fw.php?lang=0&readerno=85
    Wenn ich mir die Datei im Hex-Editor anschaue sieht das auch nicht sonderlich nach Crypto aus.
    Ich hoffe natürlich darauf (als “gemeiner ComputerBild-Leser ohne nPA” :D), dass es beim Release der überarbeiteten Ausweisapp Hakeleien mit dem cyberJack Basisleser gibt 😉

    Und für den cyberJack RFID Komfort gibt es auch ein Update, allerdings ist das momentan offline wegen der Überarbeitung der Ausweis-App:
    http://www.reiner-sct.com/content/view/204

    Wird auf jeden Fall noch interessant 🙂

  14. @Sebastian

    Die Karte ist die, welche eben auch bei der bild-Aktion dabei gewesen ist. Ich dachte, diese könne man zusammen mit dem Kartenleser der bildaktion mit dem ASUS Security Protect Manager nutzen, aber die Karte wird als “Typ Unbekannt” erkannt, weil sie entweder ein falscher Kartentyp ist oder nicht mit den eingestellten Richtlinien übereinstimmt. Hm, komisch. Es gibt drei Richtlinieneinstellungen, jeweils mit Unterpunkten.
    1. Schlüssellänge: Standard, 128, 512, 1024, 2048, 4096 oder 8192
    2. Hash: SHA1, MD2 oder MD5
    3. Cipher: RSA Data Sec RC2, RSA Data Sec RC4 oder DES (Data Encryption Standard)

    Alle Kombinationen habe ich noch nicht probiert, da es ja einige sind, ich weiß aber auch nicht, obs wirklich an den Einstellungen dieser Richtlinie liegt oder ob dieser Kartentyp wirklich ein “unbekannter” für das ASUS Security Login ist…

    Hilfe wäre cool. Man kan sich den ASUS Security Protect Manager auch so runterladen, falls ihr es selbst mal ausprobieren wollt. Z.B. hier:
    http://dlcdnet.asus.com/pub/ASUS/nb/VX3/FingerPrints_VT_080319.zip
    (Diese Version ist für XP/Vista32)
    Die Kombination von Kartenleser, Karte und dem ASUS Programm würde auf einfache Weise das leisten, was Bild mit dem Webseitenlogins angekündigt hat. Wäre wirklich großartig. Danke, Cas

  15. HiHo,

    ich habe mal das “Tresor”-Programm genommen weil ich mir mein winlogon nich versauen wollte 😀

    Da die ganze zauberei in der oi32.dll passiert habe ich einfach mal die winscard.dll umgeschrieben und alle call mitgeschnitten.

    Sieht dann so aus:
    http://pastebin.com/CEDRhdhV

    Falls jemand damit was anfangen kann, sollte er mal bescheit geben 😀

  16. Diese Befehle die mit 0x90 beginnen sind in ISO-7816-konforme APDUs gewrapte DESFire-Kommandos, dazu findet sich in dem PDF ein bisschen was ab Seite 22.
    Ich hatte da gestern Abend schon ein bisschen rumgetestet, und kam zumindest bis zum Auswählen der DESFire-AID: (Script entsprechend der Syntax für das ACS-Tool; die xx in eckigen Klammern sind die erwartete Länge der Antwort)

    90 60 00 00 00 [xx xx xx xx xx xx xx] (91xx)
    90 AF 00 00 00 [xx xx xx xx xx xx xx] (91xx)
    90 AF 00 00 00 [xx xx xx xx xx xx xx xx xx xx xx xx xx xx] (9100)
    90 5A 00 00 03 00 83 80 00 (9100)

    Weiter kam ich allerdings nicht, diese komische Methode zum Auswählen der FileID (s. Seite 72ff) ergab bisher immer nur 6A 82 (ID nicht gefunden)…

    Hatte dann aber nochmal die oi32.ddl in nem Hex-Editor angeguckt, da waren zumindest an den Offsets 314794 und 318700 ein paar APDUs (=als String gespeichert!?) zu erkennen.
    AUf jeden Fall klappt offenbar das Initiieren einer Authentisierung:
    90 AA 00 00 01 0D 00 [xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx] (91AF)

    und siehe da, die Karte schickt jedes mal eine neue zufällige Antwort! (mit den nativen Kommandos gabs immer nur 0xAE) 🙂

    Allerdings steht zu 90AA… wirklich nichts in dem PDF – ich denke das liegt auch daran, dass wir es hier mit einer Weiterentwicklung des ursprünglichen DESFire (zunächst “DESFire8”, nun EV1 genannt) zu tun haben, d.h. deren Bezeichnung endet dann mit D41 (bzw. jeweils entsprechend der Speichergröße).

    Ich denke wir müssten überhaupt froh sein, dieses PDF zu haben (immerhin steht da sogar hübsch CONFIDENTIAL unten am Rand 😀 ), aber falls hier evtl. gerade jemand mitliest, der zufällig beruflich mit solchen Karten zu tun hat oder so, und da evtl. mal eine neuere Spezifikation leaken könnte… *hust*

    jedenfalls sieht dein log sehr interessant aus, werde mir das demnächst nochmal intensiver angucken und nochmal schreiben, wenn ich gerade eine vernünftige Internetverbindung habe 🙂
    Die Authentifizierung selbst nutzt ja Zufallszahlen usw., d.h. dafür ist es erstmal weniger hilfreich die Kommunikation ‘erst’ zwischen oi32.dll und Leser mitzuschneiden, aber ich denke wir sollten wirklich erstmal rausfinden, was die ganzen APDUs bedeuten könnten 🙂
    (und dann vllt. überlegen, falls das ‘Passwort’ des Kartentresors auch als Schlüssel gespeichert wird, wie man daraus am ehesten einen Key basteln würde 🙂 einfach ascii + mit Nullen auffüllen? wäre bestimmt zu einfach.. hihi)

    Aber hast du dsa ganze mal mehrmals hintereinander getestet? Und geguckt was sixh ändert; einige Befehle (am Anfang) müssteng gleich sein, aber irgendwann, wenn es um die Authentisierung geht, sollten verschlüsselte Zufallsdaten erscheinen (vllt. die längeren Zeilen?)

    Das mit anderen DESFire-Karten und nur UID auslesen klingt ja mal interessant; hatte es schon mit meiner Mensakarte (Mifare classic 1k, alle 16 Sektoren geschützt) versucht, aber mit der will der Leser erst gar nichts anfangen… Werde nächste Woche aber die Möglichekit haben, ein paar blanko-classics sowie ultralights (touchatag) zu testen; letztere haben ja im Gegensatz zur classic (4 bytes) genau wie die DESFire auch eine 7-byte UID 🙂

    ‘Java Applet’ in Zusammenhang mit OWOK – hm, das hieße die ‘echten’ (nicht light) OWOK-Karten sind tatsächlich JCOP-basiert, wie ich es ursprünglich schon bei dieser Karte vermutet hätte 🙂
    D.h. die sind dann auch tatsächlich RSA-fähig, und auf JCOP-Basis bleibt vielleicht auch noch ein bisschen Platz für eigene Applikationen (oder hatte das mit der OWOK-light schon mal jemand getestet? Es hieß ja auch es lassen sich zumindest neue AIDs anlegen).

    @Castor:
    Im Grunde ist es dem Hersteller überlassen, welche Karten er unterstützt – und v.a. wie er die Daten zur Identifikation darauf ablegt.
    Das einzige was diese ComputerBild-Karte kann, wäre DES (aber eigentlich auch nur 3DES), und von den Hash-Algorithmen ist keiner in Hardware implementiert… Das wird also nichts mit dieser Karte, evtl. mit der JCOP-basierten OWOK, das hinge dann aber sowohl von ReinerSCT als auch von Asus ab 🙂

  17. die idee mit den hex-editor gegen die oi32.dll zulaufen, fand ich super. Also oeffnetet ich mein ida und was sagt es mir:

    IDA Pro has determined that the input file was linked with debug information.
    WITH DEBUG INFORMATION

  18. ich sehe gerade, ich hatte das vorhin etwas durcheinandergebracht mit den gewrapten nativen Kommandos (Seite 22) und dem ISO-Kompatibilitäts-Modus (Seite 72); bei letzterem geht es darum, eine ISO-Dateisystemstruktur zu emulieren, also die DESFire-Daten entsprechend über ‘directorys’ usw. nach ISO-Standard verfügbar zu machen (dabei gelang es mir nicht, die FileID auszuwählen).

    was ich interessant fand in deinem log:

    >>[7] 90 AA 00 00 01 00 00
    < < F7 52 5B A5 D0 40 F8 33 BF 7E 09 EE 42 AD 55 77 91 AF >>[38] 90 AF 00 00 20 00 79 D3 18 16 99 56 ED 21 0A B6 3A DF 7F 04 FF 42 DF 6E E5 7F 58 01 FC 65 2D 37 7A 6F 96 F6 C9 00
    < < 91 AE ///Authentifizierung fehlgeschlagen! warum sollte die Anwendung versuchen, sich mit einem falschen Key zu authentifizieren?!? Ich würde sagen, hier wurde zunächst ein Standard-Key getestet, um zu prüfen ob der Nutzer überhaupt schon ein Passwort gesetzt hat. (oder du hast beim erstellen des logs wirklich nur das passwort beim ersten mal falsch eingetippt?! 😀 ) >>[7] 90 AA 00 00 01 00 00
    < < 20 8F 46 1E F6 A5 73 44 53 BE B3 4F 88 F3 D2 05 91 AF >>[38] 90 AF 00 00 20 11 B8 83 77 38 4A 4B 53 43 C6 CF 05 A3 97 54 B8 12 A3 C5 3C 94 60 1A 01 C3 17 88 37 3A 0B F9 6A 00
    << 80 37 CA 5F 57 C4 FB 84 6E BE 33 6A 98 E5 9B 1D 91 00 ///(9100) = Authentifizierung ok, die Karte vertraut der Anwenung nun (dass diese den Key kennt), die Anwendung darf aber nun noch die Antwort aus der letzten Zeile überprüfen, um sicherzugehen, dass die Karte ebenfalls den selben Key kennt. Wenn ich das jetzt richtig verstanden habe, hast du also das Windows-eigene Smartcard-API so modifiziert, dass es dir ein Log erstellt?! 😀 Dann würde mich mal das Log der winlogin-Applikation interessieren (Starfiii schrieb ja schon es wird nur die UID geprüft), die Anwendung installiert sich übrigens nur beim Login im Betriebssystem, wenn du den entsprechenden Haken setzt. Wie genau funktioniert das mit dem log, könntest du die modifizerte .dll evtl. sogar zur Verfügung stellen? (Mir kam gerade so der Gedanke.. könnte man evtl. eine Art Breakpoint setzten, sozusagen ab einem gewissen Kommando die Kommunikation zwischen Anwendung und Karte unterbinden, und stattdessen eigene Befehle einschleusen? Also konkret, erstmal die Computerbild-Anwendung die Karte authentifizieren lassen, und dann selbst ein paar Daten auslesen... 😀 😀 😀 aber nur so ein Gedanke gerade...^^)

  19. Meine Version der winscard.dll verwendet die Originale Version und erwartet diese im Verzeichnis C:\windows\system32\winscard.dll. Alle Funktionsaufrufe werden an die Originale Version geschickt und mitgeschnitten.
    Einfach meine Version der dll direkt in das Verzeichnis der Anwendung legen. Da Windows beim laden von dll’s zuerst in das Verzeichnis schaut in dem die exe ausgeführt, laedt die Anwendung die logging Variante.

    ComputerBild.exe
    –> Load oi32.dll
    —–> Load winscard.dll ( Logging Variante da im selben Path )
    ——–> Load C:\windows\system32\winscard.dll

    Quellen (Delphi/Free-Pascal) sind mit dabei so wie eine vorkompilierte Version fuer 32Bit.

    http://rapidshare.com/files/435828946/winscardlog.zip
    http://uploaded.to/file/66tc6t
    http://www.gigasize.com/get.php?d=wcj00bp2xld
    http://www.file-upload.net/download-3034765/winscardlog.zip.html

  20. Und um ein haar vergessen:
    Authentifizierung fehlgeschlagen, ja ist genau so wie du geschrieben hast. Sie haben ein default Pwd wenn das matcht, musst du ein password setzten.

  21. Mifare DESFire Karten haben kein JCOP bzw. Java Applet. Dafür braucht man schon einen SmartMX Chip so wie er im ePA ist

  22. immerhin wissen wir nun schonmal, dass die eigentlichen gespeicherten Daten (die 1000 Zeichen) in den FileIDs 11 und 12 liegen (je 512 bytes) :

    >>[13] 90 BD 00 00 07 11 00 00 00 00 02 00 00

    11 ist die FileID, angeforderte Länge 0x0200 = 512
    danach folgen genau 11 Antworten mit je 48 bytes Daten (=528, Rest mit Nullen aufgefüllt!?! auf S. 58 steht bloß was von “…reach an overall Data length of multiples of eight”, aber das ist 512 doch auch schon…)

    anschließend wird mit 12 der Rest angefordert:
    >>[13] 90 BD 00 00 07 12 00 00 00 00 02 00 00

    Alle Daten sind mit dem SessionKey verschlüsselt, der aus den beiden Zufallszahlen aus der Authentifizierung zusammengesetzt ist.

    Diese könnte man also aus dem Log erhalten, wenn man den verwendeten Key kennen würde – dieser besteht anscheinend nur aus dem Passwort (und evtl. zusätzlichen konstanten Daten), denn laut Log wird z.B. auch nie die UID der Karte ausgelesen.

    Wie könnte nun der 128bit-Schlüssel aus dem Passwort entstehen?! MD5, SHA-1,…
    Allerdings gibt es im DES auch noch dieses Paritätsbits, und bei DESFire EV1 scheint schon wieder vieles anders zu sein:
    http://www.acs.com.hk/drivers/eng/TDS_DESF_EV1.pdf
    (grad noch zufällig auf meiner Platte gefunden 😀 auf Seite 6 findet sich unten was, sonst wird aber auch nur auf die MF3ICD81 Functional Specification veriwesen, die bisher nirgends aufzutreiben ist.)

    Damit ginge die Frage nun wieder an diejenigen, die sich mit Disassemblen/Debuggen usw. besser auskennen: Lässt sich evtl. einigermaßen verfolgen, was genau die ersten Schritte sind, die mit dem in das Feld eingegebenen Passwort im Speicher geschehen? Zu erwarten wäre hier irgendeine (bekannte!?) Hash-Funktion, da die Länge des Passworts scheinbar nicht begrenzt ist. Möglicherweise wird an dieser Stelle auch irgendein Salt etc. mit reingeworfen, der aber konstant sein müsste. (Danach folgt dann erst die DES-Entschlüsselung der von der Karte gelesenen Daten, mit eben diesem Key)

    @Mike: ja, es ging hier um den Unterschied zwischen dieser logincard (‘OWOK light’, DESFire) und den ‘richtigen’ OWOK-Karten, welche dann wohl auf JCOP basieren.

  23. sorry, habe deinen kommentar eben erst gesehen, wordpress/akismet hatte den wahrscheinlich wegen der .dll-namen und links erstmal als spam eingeordnet…
    werde ich mir heute abend mal angucken, vielen dank 🙂

  24. Hi Codeguru,

    die Header-Files der oi32.dll sind relative unspektakulaer. Somal es die linux menschen unter aus auch nich weiter bringt :/.

    Der spannende Part ist zwischen:

    .text:6F4132B4 push eax
    .text:6F4132B5 lea eax, [esp+184h]
    .text:6F4132BC lea ecx, [esp+6Ch]
    .text:6F4132C0 call SendToCard
    .text:6F4132C5 test eax, eax

    ……

    .text:6F41355F lea eax, [esp+184h]
    .text:6F413566 lea ecx, [esp+11Ch]
    .text:6F41356D call SendToCard
    .text:6F413572 test eax, eax
    .text:6F413574 jnz short loc_6F41359F
    .text:6F413576 mov eax, [edi+4]
    .text:6F413579 lea esi, [esp+1Ch]

    Die Adressen sind grade das wichtige 😀

  25. soo, habe das mit dem Loggen mal getestet, und klappt auch wunderbar mit dem Kartentresor 🙂
    Probleme (dll-Import-Fehler) gab es hingegen mit winlogin und mit chipcardmaster; ich vermute mal das liegt daran, dass nur die wichtigsten winscard-Methoden für den Kartentresor implementiert (also weitergeleitet) sind!? (welche da konkret fehlen ist den Fehlermeldungen leider nicht zu entnehmen)

    Was aber (neben Kartentresor und dem ACS-Tool) ebenfalls gut funktioniert:
    Ich habe deine winscard.dll einfach mal in den Ordner C:\Windows\Downloaded Program Files\ geschmissen, dort wo u.a. auch das OWOK-IE-Plugin rumliegt… 😀
    Und siehe da, das log erscheint auf dem Desktop! (und war bei mir erst nach Schließen aller IE-Fenster lesbar)

    Hier nun also Auflegen der Karte + PIN-Eingabe unter mein-cockpit.de:

    http://pastebin.com/TRXysmy7

    habe leider keine JCOP rumliegen um das weitere Verhalten bei vorhander AID “27 60 00 12 1F 00 00 01” zu testen 😀

    Im von Codeguru verlinkten Thread findet sich noch ein interessantes Detail:
    http://www.purebasic.fr/german/viewtopic.php?p=283856#p283856

    Die oi32.dll scheint da also wirklich noch eine Abstraktionsebene für das Hinterlegen der Daten bereitzustellen, und es steht da was von einem AES-Key… (mit dem wahrscheinlich alle Daten oberhalb der DESFire-Ebene nochmal verschlüsselt sind)

    Aber macht ja eigentlich Sinn, wenn man als Anwendungsentwickler nicht auch noch zwischen OWOK und OWOKlight unterscheiden muss 🙂

    //edit: ok es scheint doch nicht ganz so kompliziert zu sein; die Unterscheidung der Karten bezieht sich wohl wirklich nur auf den Online-Login; und bei genauerem Hinsehen sind die in dem Thread erwähnten ‘Slots’ ja doch nur die dezimale Repräsentation der DESFire-FileIDs 🙂

  26. Ich hab mir auch so einen Kartenleser angeschafft und ein bisschen damit rumgespielt. Allerdings bisher hauptsächlich unter Mac OS X.

    Zu den fehlenden Befehlen könnte auch ohne offene Spezifikation die libfreefare weiterhelfen: http://code.google.com/p/nfc-tools/wiki/libfreefare
    Diese setzt allerdings auf der libnfc auf, die den im Kartenleser verbauten NXP PN512 bisher nicht unterstützt. Dafür implementiert sie aber offenbar schon ziemlich viel der Mifare-Protokolle.

    1. Mhhh da fehlen mir doch glatt die wort weiter oben gibt es einen eintrag inc. source die dir genau das zeigen

  27. ok, so wie es aussieht ist der Flash doch nicht so gut geschützt wie ich vermutet hätte 🙂
    http://www.youtube.com/watch?v=R6NdeUanK7s

    @Steve M.: hast du tatsächlich die komplette Firmware ausgelesen, oder fehlt da noch so eine Art Header?
    Also wenn man nun wirklich nach Belieben eigene Firmwares da reinbrutzeln kann, bestell ich mir wohl auch noch sonen Programmer… xD

    1. Alle Flashblöcke sind zwar lesegeschützt, und nicht schreibbar, ohne den kompletten Flash zu löschen (was die protection-bits mitlöschen würde), aber ein Block (128 Byte) des Bootloaders ist im Factory-Modus (nicht lesbar, nur schreibbar). Noch dazu hat man über die ISSP die Möglichkeit alle Register, inklusive des Programcounter zu verändern. Der Rest dürfte klar sein 😉

      Was sich genau in diesem Block befindet ist zur Zeit noch unklar, jedenfalls funktioniert der Reader auch problemlos ohne Daten in diesem Block (ob der USB-Updatemodus noch funktioniert wäre dann die nächste Frage)

      1. kurze Fußnote: die Protection-Bits beziehen sich natürlich nur auf das Lesen/Schreiben per ISSP, vom Programm selbst kann jederzeit beliebig auf den Flash zugegriffen werden.

  28. Servus,
    Schon jemand ne Idee für TrueCrypt?
    Nutze im Moment nur dieses “WinLogon”, finde ich ganz Praktisch 😉
    aber eine TC Unterstützung wäre Hammer.

    Ach ja, schon jmd. ein paar “Blanko”-Karten getestet?
    ~13€ pro Karte zzgl. Versand sehe ich nicht ein.

  29. @Peter:
    habe TrueCrypt selbst noch nicht benutzt, aber ich denke mal man könnte bei dieser Karte höchstens das Passwort in den “Karten-Tresor” speichern, und das dann für TrueCrypt benutzen (allerdings auch wieder mit Eingabe des Kartentresor-Passwortes); ansonsten nur die UID der Karte als Schlüssel benutzen, aber das wäre von der Sicherheit her wieder fraglich…
    Das Winlogon speichert ja selbst nichts auf der Karte, das Passwort zum Einloggen muss also auch irgendwo lokal auf dem Rechner liegen (evtl. aber wenigstens verschlüsselt mit der Karten-UID!?)
    Also man könnte da vllt. schon etwas basteln, die Leute im vb-paradise-Forum haben ja z.B. schon ein eigenes Kartentresor-Tool, das die OWOK-dlls benutzt; aber am Ende wäre es doch eher eine Improvisation… 🙂

  30. Servus Sebastian…
    Ob mit oder ohne zusätzlichen Passwort – wäre mir ehrlich gesagt, egal.
    Es wäre halt Doppelt-Sicher (Verbessere mich, wenn ich mich täusche),
    2 Systeme zu Nutzen. zum einen das Standard-TC-Pass UND die UID der Karte.

    Derzeit überlege ich eh, ob ich meinen Reader Zerlegen soll und IN den Laptop verbaue. Platz sollte vorhanden sein 😉

    So würde das “Doppelte-System” niemand sehen und zum Entschlüsseln müsste ich eben noch mein Portmonai zufällig auflegen *yes*

    Nunja, warten wir mal ab und harren der Dinge die da noch kommen,
    Das System ist ja Relativ ‘Neu’ – und wie ich sehe, sind die Jungs ja alle ganz fleißig bei der Arbeit.

    Grüßle

  31. Heute ist mir was komisches Aufgefallen mit dem Reader …
    Ich Rauche diese Zigarillos, lege die Schachtel aus gewohnheit auf dem Reader (Platzmangel aufm Tisch und so).
    Heute war es allerdings anderst als sonst. denn Winlogin loggte sich nicht mehr ein, obwohl die Karte gesteckt war. also nahm ich die Schachtel runter
    und schon ging es wieder.
    so probierte ich aus. ich hab die volle Schachtel ganz leer gemacht.
    Alu-Folie entfernt und mit Taschenlampe durchleuchtet – nix zu sehen.
    zum testen nochmal eine andere Schachtel hergenommen – siehe da,
    alte Schachtel = keine Störung.
    hier mal ein Video:
    http://www.youtube.com/watch?v=SVUmWnlcNec

    Kann mir das jemand erklären?
    (also NUR bei diesen 4 neuen Schachteln. bei anderen ist es nicht so!)

  32. Hallo hab mit Interesse hier alles gelesen aber was ich wohl suche wird hier nicht behandelt. Habe diesen Leser mit Karte von Reiner und hab das Passwort vergessen der karte . Kann man das irgendwie löschen zurück setzen?

    1. Hallo,
      ist jetzt schon wieder ein bisschen her das ganze, ich musste mich auch erstmal wieder kurz einlesen…
      Letztendlich war es aber tatsächlich nicht vorgesehen, dass man die PIN irgendwie zurücksetzten könnte o.ä., das wurde auch in den Foren von ReinerSCT schon kritisiert.
      Aus der PIN wird nach einem Algorithmus (der irgendwo in einer der .dll’s stecken müsste, wofür sich damals aber niemand zum disassemblen etc. fand) ein Schlüssel generiert (quasi ein Hash aus der PIN), der dann für die Authentisierung gegenüber der Karte verwendet wird (konkret die oberen Log-Zeilen aus meinem Kommentar vom 09.12.2010 01:24).

      Rein theoretisch sollte Brute-Forcen also möglich sein, nur hat noch niemand ein Tool dafür gebastelt; ich glaube die .dll von ReinerSCT bringt auch ihre eigene GUI für die PIN-Eingabe mit, d.h. mit Fehlermeldungen wegklicken und neu-versuchen kann man da schlecht einfach so ein Programm drumherumbasteln =/

Leave a Reply

Your email address will not be published.