ZME_KFOB_S / ZME_KFOB2

Begonnen von rudolfkoenig, 13 Mai 2015, 00:04:41

Vorheriges Thema - Nächstes Thema

kaihs

Zitat von: A.Harrenberg am 26 Mai 2015, 07:38:36

Ich habe mir gerade noch mal den "header" von WMBus.pm angesehen, dabei wundert mich das dort beschrieben ist wie man das Packet unter debian installiert, es wird aber nicht mit use eingebunden. Der "Aufruf" ist dann aber direkt über ein hash mit:
-cipher      => "Crypt::OpenSSL::AES",
Sollte das nicht besser mit use eingebunden werden?

Das habe ich dort mit Absicht so gemacht.
Wenn keine Entschlüsselung benötigt wird soll das Modul auch ohne installiertes AES Modul funktionieren.

Allerdings habe ich das Fehlerverhalten nicht getestet, wenn AES nicht installiert aber verwendet werden soll. Da gibt es mglw. Verbesserungsbedarf.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

A.Harrenberg

Hi,

AES ver-/entschlüsseln ist anscheinend recht einfach wenn Tante Google hilft...

use Crypt::CBC;  # libcrypt-cbc-perl
use Digest::CRC; # libdigest-crc-perl
use Crypt::OpenSSL::AES;

my $cipher = Crypt::CBC->new(
    {
        'key'         => 'length16length16',
        'cipher'      => 'Crypt::OpenSSL::AES',
        'iv'          => '1234567812345678',
        'literal_key' => 1,
        'header'      => 'none',
        keysize       => 128 / 8
    }
);

sub aes_encode() {
my $my_string = "hello";

my $my_coded = $cipher->encrypt_hex($my_string);
my $my_decoded = $cipher->decrypt_hex($my_coded);

#~ my $ma_decoded ) decode_base64(

Log3 "aes", 3, "aes_encode: $my_string -> $my_coded -> $my_decoded";
};


Es gilt allerdings herauszufinden wo welche Nonce als Init verwenden werden müssen, werde mal ein wenig im Code von OpenZWave suchen...
Und mal schauen ob da auch CBC verwendet wird.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

A.Harrenberg

Hi Kaihs,
Zitat von: kaihs am 26 Mai 2015, 20:27:22
Das habe ich dort mit Absicht so gemacht.
Wenn keine Entschlüsselung benötigt wird soll das Modul auch ohne installiertes AES Modul funktionieren.

Allerdings habe ich das Fehlerverhalten nicht getestet, wenn AES nicht installiert aber verwendet werden soll. Da gibt es mglw. Verbesserungsbedarf.
ok, wenn das absichtlich ist kann ich es nachvollziehen.
Fehlverhalten kann ich jetzt auch nicht (mehr) testen, jetzt ist ja alles installiert und ich habe keine Lust das wieder zu de-installieren ,-)

Das können wir dann probieren wenn das ganze mal funktioniert.

Danke für die Rückmeldung,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

A.Harrenberg

Hi,

also das mit dem Code für AES in OpenZWave ist für mich jedenfalls nicht auf den ersten Blick zu verstehen. Aber es wird anscheinend "ecb" und "ofb" anstelle von "cbc" bei der Verschlüsselung genutzt. (Wobei mindestens ecb eigentlich als unsicher gilt...)
Soweit ich das bisher erkennen konnte wir der Nonce erst mit "ecb" verschlüsselt, das Datenpaket dann mit "ofb"...

Den ganzen Ablauf konnte ich da jetzt bisher nicht wirklich nachvollziehen. Das System dort ist ja auch vollkommen anders aufgebaut. Und mit cpp habe ich auch noch nicht so wirklich gearbeitet.

Die wichtigsten Grundfunktionen sind aber in ZWSecurity.h / .cpp und in aes/aescpp.h / .cpp zu finden.

In Driver.h/ .cpp gibt es dann Funktionen wie:
SendEncryptedMessage
SendNonceRequest
SendNonceKey
GetNonceKey
DecryptBuffer
GetNetworkKey
...

Da ist dann noch ein wenig Forschung angesagt.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan


A.Harrenberg

Hi,

auch nur zur Info...

Meine Spielzeuge sind angekommen, dafür habe ich mir gerade meine Testinstallation von fhem irgendwie komplett geschrottet... ,-(
Und die neue Installation verhält sich SEHR merkwürdig... ,-(

Argl...

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

A.Harrenberg

Hi,

mein ZWave-Stick hat gerade bei de Einrichtung "rumgezickt". Ich habe immer ein "ERROR: ZWDongle_0 homeId is not set!" bekommen. Ein get homeID wurde mit einer Meldung quittiert das dies nicht unterstützt wird. Eigentlich wurden so ziemlich alle Befehle nicht erkannt, die Liste der "Caps" war auch leer. Erst nach einem set reopen hat er da jetzt mal alles eingelesen...

Das war bei dem anderem Stick jedenfalls nicht so.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

A.Harrenberg

Hi,

ich habe gerade mal die Sirene inkludiert, dabei ist mir aber was merkwürdiges mit den IDs aufgefallen.

Die Sirene ist jetzt als ZWave_SWITCH_BINARY_4 mit der id 4 eingebunden.

Das ist allerdings das erste und einzige Gerät, im Logfile meldet sich auf das "Learn" erst Node 2, dann kommt im Logfile ein ZW_ADD_NODE_TO_NETWORK ID:03, dann kommt "autocreate: define ZWave_SWITCH_BINARY_4 ZWave e015dfed 4", anschliessend noch mal "CMD:ZW_ADD_NODE_TO_NETWORK ID:05 ARG:0400".

Wenn ich jetzt ein get nodelist mache, sind auch Node 1,2,3,4 definiert...

nodeInfo_2    
SLAVE SWITCH_BINARY listening frequentListening:0 beaming:16 routing 40kBaud Vers:3 Security:0
   
nodeInfo_3
SLAVE SWITCH_BINARY listening frequentListening:0 beaming:16 routing 40kBaud Vers:3 Security:0
   
nodeInfo_4
ROUTING_SLAVE SWITCH_BINARY listening frequentListening:0 beaming:16 routing 40kBaud Vers:4 Security:0

Node 5 taucht hier dann aber nicht auf...
Im Log von Krikan tauchten ja auch merkwürdige IDs auf, denke mal ist der gleiche Effekt.

Ich habe mir den Code jetzt noch nicht dahingehend angeschaut, aber könnte es sein das die ID da aus der falschen Stelle im NIF Paket ausgelesen wird?
Oder ist das etwas so "normal"?

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan

Hallo Andreas,
hast Du eine secure-Inklusion probiert?
Das habe ich mit der DSD31 noch nicht. Bei einer normalen inklusion habe ich das von Dir beschriebene Verhalten nicht beobachten können.
Gruß, Christian

A.Harrenberg

Hi Krikan,
Zitat von: krikan am 29 Mai 2015, 08:02:13
Hallo Andreas,
hast Du eine secure-Inklusion probiert?
Das habe ich mit der DSD31 noch nicht. Bei einer normalen inklusion habe ich das von Dir beschriebene Verhalten nicht beobachten können.
Gruß, Christian
tja, was bezeichnen wir denn jetzt als secure-Inklusion? Also ich habe das mit dem aktuellen Stand gemacht, allerdings noch ohne einen networkkey einzutragen. D.h. es wurde weder das Sheme noch die Nonce ausgetauscht. Die ganze Geschichte mit den IDs geht aber sowieso früher los. Ich bin mir recht sicher das dies nichts mit den aktuellen Änderungen bzgl. Security zu tun hat.

Ich verstehe den Aufbau der Messages bei der Inklusion noch nicht so ganz, vor allem da es keine Doku gibt, außer andere Code-Quellen... Das passt aber nicht so ganz mit dem Aufbau von einem NIF zusammen der in der Doku enthalten ist. Allerdings passt die Rückmeldung auch nicht ganz zur Beschreibung... Argh, ich will eine vernünftige Doku...

Nach dem "Learn" kommt im Log schon so etwas zurück mit "Node: 02" gefunden, ich frage mich nun aber mal grundsätzlich wie das Gerät, das ja noch nicht im Netzwerk includiert ist, sich selbst eine Nodenummer geben kann und diese reported, um letztendlich dann mit node 4 eingebunden zu werden.

Wenn ich etwas Zeit finde werde ich da noch mal alles aus fhem entfernen und die neuen timer/random/setNIF auskommentieren und das noch mal inkludieren.

Kannst Du denn mal eine Nodelist aufrufen und dann für jede dort aufgeführte Node mal die NodeInfo abrufen? Ich vermute mal das in der Nodelist mehr Nodes drinstehen als real als Geräte da sind.

Gruß,
Andreas.

P.S.: Wie aufwändig ist es eigentlich OpenZWave zu installieren? Läuft das bei Dir unter Linux? Ich wollte das ja eigentlich auch noch "parallel" installieren, muss mir nur überlegen ob ich das gleichzeitig auf einer Maschine laufen lassen kann, bzw. was passiert wenn ich da zwischen fhem und OpenZWave hin-und herwechsel.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan

Dann hast Du nach meiner Definition keine secure-Inklusion gemacht und wie ich die "normale" Inklusion. Habe es aber noch mit der Fassung ohne timer/random/setNIF zuletzt inkludiert (glaube ich zumindest). Teste das bei Gelegenheit mit der aktuellen Fassung und poste nodeList usw. Welchen Controller nutzt Du?

Openzwave habe ich für die letzten Tests mit Windows auf einem separaten Rechner genutzt. Da ich zu faul war zu kompilieren, habe ich http://www.domoticz.com/ genutzt. Das ist schnell installiert. Im Prinzip kannst Du jedes Produkt nehmen, was https://github.com/OpenZWave/open-zwave/wiki/Projects-Using-OZW listet (nur nachschauen, wie aktuell die genutzte openzwave Version ist). Habe auch schon mit openzwave selbst und ozcp in der Vergangenheit experimentiert. Das  ist aufwendiger (für mich) zu installieren.

rudolfkoenig

#71
random/timer/setNIF ist nur fuer secure notwendig. Und secure ist nicht aktiv, wenn networkKey nicht gesetzt ist, das sollte im Log vermerkt sein. Und ich hatte sowohl ohne als auch mit secure bei KFOB immer nur ein node  auf einmal bekommen, und ich habe es bisher 24-mal inkludiert bzw. excludiert. Der Controller zaehlt aber schoen hoch, d.h. nodeList zeigt bei mir 1,2,25 an. Node 2 war vorher schon drin (eigentlich frech), und ich kriege es nicht weg.

Den nodeId vergibt der Dongle, er hat ja schliesslich einen Ueberblick.

Nachtrag: nach etwas Zaehlen muss ich es wohl 23-mal inkludiert haben :)

A.Harrenberg

Hi Rudi,
Zitat von: rudolfkoenig am 29 Mai 2015, 13:46:11
random/timer/setNIF ist nur fuer secure notwendig. Und secure ist nicht aktiv, wenn networkKey nicht gesetzt ist, das sollte im Log vermerkt sein.
ja, das war im Log, aber das ganze mit den IDs war ja aber auch vorher.

Zitat von: rudolfkoenig am 29 Mai 2015, 13:46:11
Und ich hatte sowohl ohne als auch mit secure bei KFOB immer nur ein node  auf einmal bekommen, und ich habe es bisher 24-mal inkludiert bzw. excludiert. Der Controller zaehlt aber schoen hoch, d.h. nodeList zeigt bei mir 1,2,25 an. Node 2 war vorher schon drin (eigentlich frech), und ich kriege es nicht weg.

Hmm, ich werde noch mal exkludieren und erneut inkludieren und schauen was passiert. Dann lösche ich mal wieder alles und fange noch mal von vorne an. Mal schauen.

Zitat von: rudolfkoenig am 29 Mai 2015, 13:46:11
Den nodeId vergibt der Dongle, er hat ja schliesslich einen Ueberblick.
Nachtrag: nach etwas Zaehlen muss ich es wohl 23-mal inkludiert haben :)
Ok, stimmt der Stick hat ja auch etwas eigene Intelligenz, d.h. er vergibt dann die ID und meldet die per USB/seriell an fhem...

Kann es sein das der Stick auch Geräte in dem anderen ZWave Netz findet und versucht die zu includieren, die das aber ablehnen da sie nicht in dem Mode sind und aber dennoch IDs vergibt?

Gruß,
Andreas.

P.S.: Krikan, die Controller sind beide ZWave.me UZB
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

rudolfkoenig

ZitatEin get homeID wurde mit einer Meldung quittiert das dies nicht unterstützt wird.

Kannst du das reproduzieren? Neuerdings werden nur die ZWDongle Befehle "unterstuetzt", die in caps drin sind.
Deswegen wird als erstes nach dem ZWDongle Open automatisch "get caps" ausgefuehrt. Bei mir scheint das zu tun.

Ich habe gerade ein sporadisches "ERROR: D homeId is not set!" waehrend "define zwdongle" eliminiert.

A.Harrenberg

Hallo Rudi,

ich kann noch einmal alles entfernen und versuchen den Stick noch mal neu anzulernen und sehen was passiert.

Das "Problem" mit den IDs beim Einbinden der Sirene besteht noch "halb". Irgendwas ist da nicht konsistent.

Ich habe ID2 und ID3 jeweils mit einem "SLAVE_BINARY_SWITCH" belegt den es nicht gibt. Löschen lässt sich das nicht. Beim zweiten Einbinden kommt immer noch ID2, ID3, die Siren wurde dann aber unter ID5 eingebunden ohne das noch eine weiter ID wie beim ersten Mal im Log auftauchte.

Beim dritten Einbinden wieder ID2, ID3 und dann ID6.

Ich schicke gleich mal ein LOG vom erneuten Einbinden des Sticks.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY