stas-demydiuk / ewpe-smart-mqtt

MQTT bridge for EWPE Smart powered devices
MIT License
64 stars 26 forks source link

bad decrypt #20

Closed kinglux closed 3 years ago

kinglux commented 3 years ago

Hi Stanislav and all!

First of all - thanks for this great little tool. Allowed me to integrate the ac into my home automation (openhab) easily!

Sadly the tool stopped working for no obvious reason. Here's the console output (debug lvl):

> ewpe-smart-mqtt@1.0.4 start
> node index.js

2021-06-12T13:25:03.685Z [info]: Trying to connect to MQTT server mqtt://127.0.0.1 ...
2021-06-12T13:25:03.845Z [info]: Successfully connected to MQTT server
2021-06-12T13:25:03.884Z [info]: Socket server is listening on 0.0.0.0:41576
2021-06-12T13:25:03.885Z [info]: Scanning network 192.168.178.255 for available devices...
2021-06-12T13:25:03.993Z [debug]: handling response - decrypt msg={t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:LP24Ek0OaYogxs3iQLjL4HUg+iGf2/n36lQtj/OTxG+Ma9lM2RqI/KytvJ32IsGSZXrOr+MakVzzXHbghPeyijnWMzaLQaaw1aFXlE9k71L0cMm8bsr/y4FkxumpRg1tKs/34xhBuMSxXfNfvEgS5yEpZpsQlqiaQjru60IoDlJzMQoS41XpnORSG7+GfavhnKYbt0iIDsdp8/ftXlA9HmXPWH2Ry6YJO+q1jue/ChO80gq9HxK8Loa8WXVjgZcP4Vf5MjKxa60Xt5J1oI+lsxUuXTHkgunLg76WWGy+euo=} / key=a3K8Bx%2r8Y7#xDh
2021-06-12T13:25:04.002Z [debug]: handling response - decrypt success for msg={t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:LP24Ek0OaYogxs3iQLjL4HUg+iGf2/n36lQtj/OTxG+Ma9lM2RqI/KytvJ32IsGSZXrOr+MakVzzXHbghPeyijnWMzaLQaaw1aFXlE9k71L0cMm8bsr/y4FkxumpRg1tKs/34xhBuMSxXfNfvEgS5yEpZpsQlqiaQjru60IoDlJzMQoS41XpnORSG7+GfavhnKYbt0iIDsdp8/ftXlA9HmXPWH2Ry6YJO+q1jue/ChO80gq9HxK8Loa8WXVjgZcP4Vf5MjKxa60Xt5J1oI+lsxUuXTHkgunLg76WWGy+euo=} / key=a3K8Bx%2r8Y7#xDh
2021-06-12T13:25:04.003Z [info]: New device found: 1ec3237f (f4911ec3237f), binding...
2021-06-12T13:25:04.010Z [debug]: Sending request to 192.168.178.16:7000: {mac:f4911ec3237f,t:bind,uid:0}
2021-06-12T13:25:04.012Z [debug]: handling response - decrypt msg={t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:LP24Ek0OaYogxs3iQLjL4HUg+iGf2/n36lQtj/OTxG+Ma9lM2RqI/KytvJ32IsGSZXrOr+MakVzzXHbghPeyijnWMzaLQaaw1aFXlE9k71L0cMm8bsr/y4FkxumpRg1tKs/34xhBuMSxXfNfvEgS5yEpZpsQlqiaQjru60IoDlJzMQoS41XpnORSG7+GfavhnKYbt0iIDsdp8/ftXlA9HmXPWH2Ry6YJO+q1jue/ChO80gq9HxK8Loa8WXVjgZcP4Vf5MjKxa60Xt5J1oI+lsxUuXTHkgunLg76WWGy+euo=} / key=a3K8Bx%2r8Y7#xDh
2021-06-12T13:25:04.014Z [debug]: handling response - decrypt success for msg={t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:LP24Ek0OaYogxs3iQLjL4HUg+iGf2/n36lQtj/OTxG+Ma9lM2RqI/KytvJ32IsGSZXrOr+MakVzzXHbghPeyijnWMzaLQaaw1aFXlE9k71L0cMm8bsr/y4FkxumpRg1tKs/34xhBuMSxXfNfvEgS5yEpZpsQlqiaQjru60IoDlJzMQoS41XpnORSG7+GfavhnKYbt0iIDsdp8/ftXlA9HmXPWH2Ry6YJO+q1jue/ChO80gq9HxK8Loa8WXVjgZcP4Vf5MjKxa60Xt5J1oI+lsxUuXTHkgunLg76WWGy+euo=} / key=a3K8Bx%2r8Y7#xDh
2021-06-12T13:25:04.014Z [info]: New device found: 1ec3237f (f4911ec3237f), binding...
2021-06-12T13:25:04.016Z [debug]: Sending request to 192.168.178.16:7000: {mac:f4911ec3237f,t:bind,uid:0}
2021-06-12T13:25:04.017Z [debug]: Received message from f4911ec3237f (192.168.178.16:7000) {t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:LP24Ek0OaYogxs3iQLjL4HUg+iGf2/n36lQtj/OTxG+Ma9lM2RqI/KytvJ32IsGSZXrOr+MakVzzXHbghPeyijnWMzaLQaaw1aFXlE9k71L0cMm8bsr/y4FkxumpRg1tKs/34xhBuMSxXfNfvEgS5yEpZpsQlqiaQjru60IoDlJzMQoS41XpnORSG7+GfavhnKYbt0iIDsdp8/ftXlA9HmXPWH2Ry6YJO+q1jue/ChO80gq9HxK8Loa8WXVjgZcP4Vf5MjKxa60Xt5J1oI+lsxUuXTHkgunLg76WWGy+euo=}
2021-06-12T13:25:04.044Z [debug]: handling response - decrypt msg={t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:T2tGu9JTsZPLMhoPO/mBcpvquqEChgcA4q0sw9u28tAz69cDvnykALGq1M6jRfp4VNrLSHh05C9h9V783LuxkIzD1k6jjxiwE2rMrTg7Xnk=} / key=a3K8Bx%2r8Y7#xDh
2021-06-12T13:25:04.045Z [debug]: handling response - decrypt success for msg={t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:T2tGu9JTsZPLMhoPO/mBcpvquqEChgcA4q0sw9u28tAz69cDvnykALGq1M6jRfp4VNrLSHh05C9h9V783LuxkIzD1k6jjxiwE2rMrTg7Xnk=} / key=a3K8Bx%2r8Y7#xDh
2021-06-12T13:25:04.046Z [debug]: Received message from f4911ec3237f (192.168.178.16:7000) {t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:T2tGu9JTsZPLMhoPO/mBcpvquqEChgcA4q0sw9u28tAz69cDvnykALGq1M6jRfp4VNrLSHh05C9h9V783LuxkIzD1k6jjxiwE2rMrTg7Xnk=}
2021-06-12T13:25:04.048Z [debug]: Received message from f4911ec3237f (192.168.178.16:7000) {t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:T2tGu9JTsZPLMhoPO/mBcpvquqEChgcA4q0sw9u28tAz69cDvnykALGq1M6jRfp4VNrLSHh05C9h9V783LuxkIzD1k6jjxiwE2rMrTg7Xnk=}
2021-06-12T13:25:04.052Z [info]: New device bound: 1ec3237f (192.168.178.16:7000)
2021-06-12T13:25:04.053Z [info]: New device bound: 1ec3237f (192.168.178.16:7000)
2021-06-12T13:25:04.058Z [info]: MQTT message received: ewpe-smart/f4911ec3237f {cid:f4911ec3237f,bc:000000000000000000000000000000,brand:gree,catalog:gree,mac:f4911ec3237f,mid:10001,model:gree,name:1ec3237f,series:gree,vender:1,ver:V1.2.1,lock:0,address:192.168.178.16,port:7000,key:l0No3Qr6Tu9Wx2Za}
2021-06-12T13:25:04.059Z [info]: MQTT message received: ewpe-smart/f4911ec3237f {cid:f4911ec3237f,bc:000000000000000000000000000000,brand:gree,catalog:gree,mac:f4911ec3237f,mid:10001,model:gree,name:1ec3237f,series:gree,vender:1,ver:V1.2.1,lock:0,address:192.168.178.16,port:7000,key:l0No3Qr6Tu9Wx2Za}
2021-06-12T13:25:04.134Z [debug]: handling response - decrypt msg={t:pack,i:1,uid:0,cid:f4911ec3237f,tcid:,pack:T2tGu9JTsZPLMhoPO/mBcpvquqEChgcA4q0sw9u28tAz69cDvnykALGq1M6jRfp4VNrLSHh05C9h9V783LuxkIzD1k6jjxiwE2rMrTg7Xnk=} / key=l0No3Qr6Tu9Wx2Za
internal/crypto/cipher.js:164
  const ret = this._handle.final();
                           ^

Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
    at Decipheriv.final (internal/crypto/cipher.js:164:28)
    at decrypt (/home/pi/ewpe-smart-mqtt/app/encryptor.js:16:48)
    at Connection.handleResponse (/home/pi/ewpe-smart-mqtt/app/connection.js:112:26)
    at Socket.emit (events.js:198:13)
    at UDP.onMessage [as onmessage] (dgram.js:628:8)

( i added a two debug msgs within connection.js.handleResponse() just before and after decrypt(...) ) as you can see decrypt works for all initial messages with the default key (a3K8Bx%2r8Y7#xDh) but not for messages with the exchanged key (l0No3Qr6Tu9Wx2Za). so why could the exchanged key be wrong suddenly? maybe a sw update of the ac?

not very likely but maybe a problem with a newer mosquitto? i have "mosquitto/buster,now 2.0.9-0mosquitto1~buster1 armhf"

"reinstalling" ewpe-smart-mqtt (fresh git clone) made no difference.

"npm install" also indicates the use of some older libs (no surprise):

pi@raspberrypi:~/ewpe-smart-mqtt $ npm install
added 101 packages, and audited 102 packages in 16s
5 vulnerabilities (4 moderate, 1 high)
To address issues that do not require attention, run:
  npm audit fix
To address all issues (including breaking changes), run:
  npm audit fix --force
Run `npm audit` for details.

auto fixing this warnings with "npm audit fix --force" as suggested also made no difference.

kinglux commented 3 years ago

ok, it started working again after a few hours with absolutely no change at all! i guess just a hiccup of the ac (that cost me a few hours of my life looking into this...).

i'm still curious why this happened and if it will happen again.