Der Weru-ekey-Hack Part 2

Es hat eine Weile gedauert, aber nun ist es soweit: Ich bekomme den Namen desjenigen, der seinen Finger über den Scanner zieht auf den KNX Bus gesendet.

Mein persönlicher Dank geht an UweH aus dem KNX User Forum. Er war es der mit Oszi und viel Kreativität das meiste entschlüsselt hat.

Basierend auf seiner Implementierung für einen AVR Microcontroller, habe ich eine Java-Konsolenanwendung geschrieben, welche auf der einen Seite vom eKey den Finger liest, und auf der anderen Seite den Namen und/oder eine ID der zum Finger gehört auf den KNX Bus sendet:

ekey-decoder-log
Voraussetzungen für den Betrieb der Software:

  1. Ein Computer auf dem Java installiert ist (Intel-PC, Raspberry Pi, Virtualbox, …) und der über einen Netzwerkanschluss jedweder Art (LAN/WLAN/…) verfügt.
  2. Einen RS485 Adapter (USB->RS485 Adapter für unter 3EUR, günstig geschossen in „der Bucht“)
  3. Einen IP-Router der KNX mit dem Netzwerk verbindet

Was die Software kann:

  • Für sehr viele Finger einen eindeutigen Hashwert ausgeben
  • Den Hashwert in einer Konfigurationstabelle nachschlagen und einen Namen dazu ermitteln
  • Sowohl Hashwert als auch Name auf jeweils eine konfigurierte KNX Gruppenaddresse schicken.
  • Die Software kann direkt von einer seriellen Schnittstelle lesen, oder von einem Netzwerksocket (sofern man die serielle Schnittstelle mit Software oder Hardware auf Netzwerkebene adaptiert hat). Für Debug-Zwecke kann auch eine Dump-Datei eingespielt werden.

Und damit sind wir auch schon bei dem was die Software nicht kann:

Wenn man z.B. im eKey den Benutzer 1 mit Finger 3 programmiert hat, dann spuckt die Software nicht von alleine aus dass das Benutzer 1 mit Finger 3 war der die Tür geöffnet hat. Sie spuckt lediglich einen 1-byte langen Hexadezimalwert aus. Beispielsweise 0x68.

Hier muss man die Zuordnung selbst treffen. Also Benutzer und Finger programmieren, dann den Finger drüber ziehen und dann schauen welcher Hex-Wert von der Software angezeigt wird. Diesen Wert kann man dann in einer Konfigurationsdatei mit einem Namen versehen (muss man aber nicht). Fertig.

Der computeraffine Leser und eKey Nutzer erkennt gleich: Moment: Bei maximal möglichen 99 Benutzern mit jeweils 10 Fingern wären das 990 Möglichkeiten. Ein einzelnes Byte kann aber nur 256 mögliche Werte. Das passt nicht.

Richtig. Das passt nicht. Die Lösung funktioniert aktuell nur für „Kleininstallationen“ wie man sie üblicherweise in Ein- oder Mehrfamilienhäusern antrifft. Mehr wie 256 Finger gehen aktuell nicht. Wobei es aber durchaus sein kann dass es weniger als 256 sind die sauber erkannt werden. So genau ausprobiert hat das, aus Mangel an Fingern, noch niemand.

Ein letzter Haken noch zum Schluss: Es werden nur korrekt erkannte Finger ausgegeben. Fehlscans können nicht erkannt werden. Das wäre aber auch wohl nur für Aufzeichnungszwecke sinnvoll. Viel häufiger wird man sich für den korrekt erkannten Finger interessieren.

Nichts desto trotz: Die aktuelle Lösung sollte wohl >90% des „Bastlerbedarfs“ decken. Wer noch größere Anlagen installiert, für den sind die rund 250EUR für das fertige Gerät von eKey auch nicht zu teuer.

Noch läuft die Software in einer Teststellung und ist (noch) nicht produktiven Einsatz. Aber das wird sich in den nächsten Wochen wohl ändern. Bis dahin noch etwas Geduld. Wenn alles zufriedenstellend läuft, wird der Code veröffentlicht.

[UPDATE]

Der Code ist mittlerweile hier zu finden:

https://github.com/tuxedo0801/ekeydecoder

Ab und an gibt’s wohl noch einen kleinen „Hänger“, aber im großen und ganzen läuft das recht zuverlässig. Was ich allerdings nach wie vor noch nicht 100%ig weiß ist, ob jeder Finger erkannt wird. Dazu fehlt mir noch beim Öffnen der Tür die direkte Rückkopplung der Software. Aber ich geh bisher davon aus dass alles passt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert