Schrankschließsystem im Grimme-Zentrum

From
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Voraussetzungen schaffen

notwendige Software

Wir haben ausschließlich Debian basierte Linux verwendet und können daher nur dafür Hinweise geben. Von einem Kommilitonen haben wir jedoch erfahren, dass es wohl auch mit einem Redmond-er Produkt funktioniert. Grundsätzlich braucht man folgende Bibliotheken, die als Quellen/Pakete bereitstehen.
libusb,
libnfc,
libpcsclite-dev, Debian-Repository
libccid, Debian-Repository
und viele andere Abhängigkeiten, die ggf. durch das jeweilige System noch nicht erfüllt sind, z.B. autoconf, automake, etc.

zweckmäßige Software

libnfc bringt schon ein paar Programme mit, besonders ist hier nfc-mfclassic hervorgehoben, welches in der Lage ist die Mifare-Karten zu lesen und zu schreiben

des weiteren lohnt sich ein Blick auf mfoc zu werfen, es kann auch Mifare-Karten lesen (die Abgrenzung zu nfc-mfclassic hat einen eigenen Punkt)

Installation

alle hier genannte Software liegt für UNIX-basierte Betriebssysteme in Quellen vor, das heißt zum Installieren braucht man nur die *.tar.gz (oder so) zu entpacken und in den Ordner in den man die Quellen entpackt hat zu wechseln. Jetzt reicht das hinlänglich bekannte Trio:

  • ./configure
  • make
  • [sudo] make install

erste Schritte:

Sektorenschlüssel finden

Die Mifare-Classic-Karten sind in Sektoren zu 4x16 Byte aufgeteilt. Die letzten 16 Byte eines Sektors bestehen aus

Key A (6 Byte)| Sektorzugriffsrechten (3 Byte) | auffüllend (1 Byte) | Key B (6 Byte)

Mfoc ist in der Lage die Schlüssel, nachdem es einen gefunden hat, zurückzurechen. Zu diesem Zweck hat es schon ein paar Standardschlüssel "hardgecodet" dabei, sodass man direkt loslegen kann.

Sobald es alle Schlüssel gefunden hat dumpt es den Inhalt der Karte in eine von euch übergebene Datei.

mfoc vs nfc-mfclassic

Mfoc braucht potentiell ziemlich lange um zu einem Ergebnis zugelangen und eignet sich daher zwar bestens um noch nicht bekannte Schlüssel auszulesen, jedoch nicht für Versuchsreihen bei denen viele Karten ausgelesen werden müssen. Jetzt könnte man in den Sourcen von mfoc das Array suchen in dem die Standardschlüssel liegen und diese mit den gefunden überschreiben, oder man nutzt ein Programm welches zum schnelleren Auslesen fähig ist.

Hier kommt nfc-mfclassic ins Spiel. Man kan nfc-mfclassic einfach den dump einer Mensakarte als keyfile über geben und nfc-mfclassic dumpt, ohne zeitraubendes probieren ob die Keys passen, den Inhalt der Karte ins dumpfile (sehr viel schneller)

Versuchsreihen

Bevor man ins Grimm-Zentrum fährt sollte man ein paar Minuten darauf verwenden sich einen Plan zu machen was man wie herausfinden möchte. Es bietet sich an möglichst nur einen Faktor zu ändern, diesen jedoch oft, um anhand der Änderungen in den dumps diese Faktoren identifizieren zu können. Als Beispiel sollte man in einer Versuchsreihe immer den Schrank beibehalten, so ist man gewiss da sich die Schranknummer nicht ändern wird, jedoch wird sich ein möglicher counter und die zeit ändern...

Noch ein Wort zur Benennung der dumps: es ist wichtig die Situation mit den dumps mappen zu können, so ist es unzweckmäßig die dumps durchnummeriert abzuspeichern und dabei keine Datenbank o.ä. zuführen in der die Schranknummer, die Zeit, der Tag, der Schließvorgang, ... steht.

Auswertung

Hier werden wir euch nun beschreiben welche Daten durch das Schrankschliesssystem auf eine Karte geschrieben werden. Um euren Forscherdrang nicht zu beschneiden, verzichten wir darauf die Daten, die wir hier angeben auch auf die jeweiligen Bytes zu mappen und geben euch so die Chance auch noch etwas herausfinden zu können. Nun dann als Aufzählung (Reihenfolge verfälscht):

die Schranknummer,
Teile der UID,
Zeitstempel der ersten Schranknutzung,
Zustand des letzten Schranks (offen/verschlossen),
Zeitstempel der letzten Schranknutzung,
2 Prüfsummen,
Anzahl der Verschliessvorgänge