homebridge-midea-platform 1.2.0-beta.8 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.md +5 -2
  2. package/README.md +2 -2
  3. package/dist/accessory/AccessoryFactory.d.ts +14 -15
  4. package/dist/accessory/AccessoryFactory.js +34 -40
  5. package/dist/accessory/AccessoryFactory.js.map +1 -1
  6. package/dist/accessory/AirConditionerAccessory.d.ts +98 -99
  7. package/dist/accessory/AirConditionerAccessory.js +666 -662
  8. package/dist/accessory/AirConditionerAccessory.js.map +1 -1
  9. package/dist/accessory/BaseAccessory.d.ts +11 -12
  10. package/dist/accessory/BaseAccessory.js +21 -21
  11. package/dist/accessory/BaseAccessory.js.map +1 -1
  12. package/dist/accessory/DehumidifierAccessory.d.ts +45 -46
  13. package/dist/accessory/DehumidifierAccessory.js +343 -344
  14. package/dist/accessory/DehumidifierAccessory.js.map +1 -1
  15. package/dist/accessory/DishwasherAccessory.d.ts +30 -31
  16. package/dist/accessory/DishwasherAccessory.js +59 -63
  17. package/dist/accessory/DishwasherAccessory.js.map +1 -1
  18. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -45
  19. package/dist/accessory/ElectricWaterHeaterAccessory.js +172 -176
  20. package/dist/accessory/ElectricWaterHeaterAccessory.js.map +1 -1
  21. package/dist/accessory/FanAccessory.d.ts +39 -40
  22. package/dist/accessory/FanAccessory.js +120 -123
  23. package/dist/accessory/FanAccessory.js.map +1 -1
  24. package/dist/accessory/FrontLoadWasherAccessory.d.ts +30 -31
  25. package/dist/accessory/FrontLoadWasherAccessory.js +63 -66
  26. package/dist/accessory/FrontLoadWasherAccessory.js.map +1 -1
  27. package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -52
  28. package/dist/accessory/GasWaterHeaterAccessory.js +217 -216
  29. package/dist/accessory/GasWaterHeaterAccessory.js.map +1 -1
  30. package/dist/accessory/{HeatPumpWifiControllerAccessory.d.ts → HeatPumpWiFiControllerAccessory.d.ts} +34 -35
  31. package/dist/accessory/{HeatPumpWifiControllerAccessory.js → HeatPumpWiFiControllerAccessory.js} +55 -36
  32. package/dist/accessory/HeatPumpWiFiControllerAccessory.js.map +1 -0
  33. package/dist/core/MideaCloud.d.ts +34 -36
  34. package/dist/core/MideaCloud.js +349 -350
  35. package/dist/core/MideaCloud.js.map +1 -1
  36. package/dist/core/MideaConstants.d.ts +51 -52
  37. package/dist/core/MideaConstants.js +56 -59
  38. package/dist/core/MideaConstants.js.map +1 -1
  39. package/dist/core/MideaDevice.d.ts +75 -78
  40. package/dist/core/MideaDevice.js +430 -420
  41. package/dist/core/MideaDevice.js.map +1 -1
  42. package/dist/core/MideaDiscover.d.ts +34 -36
  43. package/dist/core/MideaDiscover.js +208 -212
  44. package/dist/core/MideaDiscover.js.map +1 -1
  45. package/dist/core/MideaMessage.d.ts +75 -76
  46. package/dist/core/MideaMessage.js +185 -184
  47. package/dist/core/MideaMessage.js.map +1 -1
  48. package/dist/core/MideaPacketBuilder.d.ts +9 -11
  49. package/dist/core/MideaPacketBuilder.js +60 -60
  50. package/dist/core/MideaPacketBuilder.js.map +1 -1
  51. package/dist/core/MideaSecurity.d.ts +62 -64
  52. package/dist/core/MideaSecurity.js +241 -251
  53. package/dist/core/MideaSecurity.js.map +1 -1
  54. package/dist/core/MideaUtils.d.ts +31 -33
  55. package/dist/core/MideaUtils.js +178 -181
  56. package/dist/core/MideaUtils.js.map +1 -1
  57. package/dist/devices/DeviceFactory.d.ts +14 -15
  58. package/dist/devices/DeviceFactory.js +34 -40
  59. package/dist/devices/DeviceFactory.js.map +1 -1
  60. package/dist/devices/a1/MideaA1Device.d.ts +75 -77
  61. package/dist/devices/a1/MideaA1Device.js +142 -145
  62. package/dist/devices/a1/MideaA1Device.js.map +1 -1
  63. package/dist/devices/a1/MideaA1Message.d.ts +39 -41
  64. package/dist/devices/a1/MideaA1Message.js +219 -198
  65. package/dist/devices/a1/MideaA1Message.js.map +1 -1
  66. package/dist/devices/ac/MideaACDevice.d.ts +105 -107
  67. package/dist/devices/ac/MideaACDevice.js +417 -400
  68. package/dist/devices/ac/MideaACDevice.js.map +1 -1
  69. package/dist/devices/ac/MideaACMessage.d.ts +97 -96
  70. package/dist/devices/ac/MideaACMessage.js +724 -621
  71. package/dist/devices/ac/MideaACMessage.js.map +1 -1
  72. package/dist/devices/c3/MideaC3Device.d.ts +73 -75
  73. package/dist/devices/c3/MideaC3Device.js +249 -255
  74. package/dist/devices/c3/MideaC3Device.js.map +1 -1
  75. package/dist/devices/c3/MideaC3Message.d.ts +81 -80
  76. package/dist/devices/c3/MideaC3Message.js +190 -152
  77. package/dist/devices/c3/MideaC3Message.js.map +1 -1
  78. package/dist/devices/db/MideaDBDevice.d.ts +28 -30
  79. package/dist/devices/db/MideaDBDevice.js +94 -100
  80. package/dist/devices/db/MideaDBDevice.js.map +1 -1
  81. package/dist/devices/db/MideaDBMessage.d.ts +31 -33
  82. package/dist/devices/db/MideaDBMessage.js +101 -101
  83. package/dist/devices/db/MideaDBMessage.js.map +1 -1
  84. package/dist/devices/e1/MideaE1Device.d.ts +55 -57
  85. package/dist/devices/e1/MideaE1Device.js +122 -128
  86. package/dist/devices/e1/MideaE1Device.js.map +1 -1
  87. package/dist/devices/e1/MideaE1Message.d.ts +27 -29
  88. package/dist/devices/e1/MideaE1Message.js +128 -107
  89. package/dist/devices/e1/MideaE1Message.js.map +1 -1
  90. package/dist/devices/e2/MideaE2Device.d.ts +43 -45
  91. package/dist/devices/e2/MideaE2Device.js +124 -129
  92. package/dist/devices/e2/MideaE2Device.js.map +1 -1
  93. package/dist/devices/e2/MideaE2Message.d.ts +34 -34
  94. package/dist/devices/e2/MideaE2Message.js +143 -132
  95. package/dist/devices/e2/MideaE2Message.js.map +1 -1
  96. package/dist/devices/e3/MideaE3Device.d.ts +42 -44
  97. package/dist/devices/e3/MideaE3Device.js +132 -137
  98. package/dist/devices/e3/MideaE3Device.js.map +1 -1
  99. package/dist/devices/e3/MideaE3Message.d.ts +51 -52
  100. package/dist/devices/e3/MideaE3Message.js +144 -136
  101. package/dist/devices/e3/MideaE3Message.js.map +1 -1
  102. package/dist/devices/fa/MideaFADevice.d.ts +35 -37
  103. package/dist/devices/fa/MideaFADevice.js +102 -106
  104. package/dist/devices/fa/MideaFADevice.js.map +1 -1
  105. package/dist/devices/fa/MideaFAMessage.d.ts +38 -39
  106. package/dist/devices/fa/MideaFAMessage.js +108 -98
  107. package/dist/devices/fa/MideaFAMessage.js.map +1 -1
  108. package/dist/index.d.ts +6 -7
  109. package/dist/index.js +8 -6
  110. package/dist/index.js.map +1 -1
  111. package/dist/platform.d.ts +61 -61
  112. package/dist/platform.js +232 -212
  113. package/dist/platform.js.map +1 -1
  114. package/dist/platformUtils.d.ts +116 -117
  115. package/dist/platformUtils.js +107 -110
  116. package/dist/platformUtils.js.map +1 -1
  117. package/dist/settings.d.ts +8 -9
  118. package/dist/settings.js +8 -11
  119. package/dist/settings.js.map +1 -1
  120. package/docs/download_lua.md +9 -0
  121. package/eslint.config.js +43 -0
  122. package/homebridge-ui/public/js/bootstrap.min.js +1179 -1
  123. package/homebridge-ui/server.js +157 -84
  124. package/package.json +21 -31
  125. package/.eslintignore +0 -3
  126. package/.husky/pre-commit +0 -5
  127. package/.prettierrc +0 -19
  128. package/dist/accessory/AccessoryFactory.d.ts.map +0 -1
  129. package/dist/accessory/AirConditionerAccessory.d.ts.map +0 -1
  130. package/dist/accessory/BaseAccessory.d.ts.map +0 -1
  131. package/dist/accessory/DehumidifierAccessory.d.ts.map +0 -1
  132. package/dist/accessory/DishwasherAccessory.d.ts.map +0 -1
  133. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts.map +0 -1
  134. package/dist/accessory/FanAccessory.d.ts.map +0 -1
  135. package/dist/accessory/FrontLoadWasherAccessory.d.ts.map +0 -1
  136. package/dist/accessory/GasWaterHeaterAccessory.d.ts.map +0 -1
  137. package/dist/accessory/HeatPumpWifiControllerAccessory.d.ts.map +0 -1
  138. package/dist/accessory/HeatPumpWifiControllerAccessory.js.map +0 -1
  139. package/dist/core/MideaCloud.d.ts.map +0 -1
  140. package/dist/core/MideaConstants.d.ts.map +0 -1
  141. package/dist/core/MideaDevice.d.ts.map +0 -1
  142. package/dist/core/MideaDiscover.d.ts.map +0 -1
  143. package/dist/core/MideaMessage.d.ts.map +0 -1
  144. package/dist/core/MideaPacketBuilder.d.ts.map +0 -1
  145. package/dist/core/MideaSecurity.d.ts.map +0 -1
  146. package/dist/core/MideaUtils.d.ts.map +0 -1
  147. package/dist/devices/DeviceFactory.d.ts.map +0 -1
  148. package/dist/devices/a1/MideaA1Device.d.ts.map +0 -1
  149. package/dist/devices/a1/MideaA1Message.d.ts.map +0 -1
  150. package/dist/devices/ac/MideaACDevice.d.ts.map +0 -1
  151. package/dist/devices/ac/MideaACMessage.d.ts.map +0 -1
  152. package/dist/devices/c3/MideaC3Device.d.ts.map +0 -1
  153. package/dist/devices/c3/MideaC3Message.d.ts.map +0 -1
  154. package/dist/devices/db/MideaDBDevice.d.ts.map +0 -1
  155. package/dist/devices/db/MideaDBMessage.d.ts.map +0 -1
  156. package/dist/devices/e1/MideaE1Device.d.ts.map +0 -1
  157. package/dist/devices/e1/MideaE1Message.d.ts.map +0 -1
  158. package/dist/devices/e2/MideaE2Device.d.ts.map +0 -1
  159. package/dist/devices/e2/MideaE2Message.d.ts.map +0 -1
  160. package/dist/devices/e3/MideaE3Device.d.ts.map +0 -1
  161. package/dist/devices/e3/MideaE3Message.d.ts.map +0 -1
  162. package/dist/devices/fa/MideaFADevice.d.ts.map +0 -1
  163. package/dist/devices/fa/MideaFAMessage.d.ts.map +0 -1
  164. package/dist/index.d.ts.map +0 -1
  165. package/dist/platform.d.ts.map +0 -1
  166. package/dist/platformUtils.d.ts.map +0 -1
  167. package/dist/settings.d.ts.map +0 -1
@@ -1,252 +1,242 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LocalSecurity = exports.ArtisonClimaSecurity = exports.NetHomePlusSecurity = exports.SimpleSecurity = exports.MeijuCloudSecurity = exports.MSmartHomeCloudSecurity = exports.ProxiedSecurity = exports.CloudSecurity = void 0;
4
- const crypto_1 = require("crypto");
5
- const MideaConstants_1 = require("./MideaConstants");
6
- const MideaUtils_1 = require("./MideaUtils");
7
- const querystring_1 = require("querystring");
8
- function unescape_plus(str) {
9
- return (0, querystring_1.unescape)(str.replace(/\+/g, ' '));
10
- }
11
- class CloudSecurity {
12
- constructor(login_key, iot_key, hmac_key) {
13
- this.LOGIN_KEY = login_key;
14
- if (hmac_key) {
15
- this.HMAC_KEY = Buffer.from(hmac_key.toString(16), 'hex').toString();
16
- }
17
- if (iot_key) {
18
- this.IOT_KEY = Buffer.from(iot_key.toString(16), 'hex').toString();
19
- }
20
- }
21
- // Generate a HMAC signature for the provided data and random data.
22
- sign(data, random) {
23
- const message = `${this.IOT_KEY}${data}${random}`;
24
- return (0, crypto_1.createHmac)('sha256', this.HMAC_KEY).update(message).digest('hex');
25
- }
26
- // Encrypt the password for cloud API password.
27
- encrpytPassword(loginId, password) {
28
- const m1 = (0, crypto_1.createHash)('sha256').update(password);
29
- const login_hash = `${loginId}${m1.digest('hex')}${this.LOGIN_KEY}`;
30
- const m2 = (0, crypto_1.createHash)('sha256').update(login_hash);
31
- return m2.digest('hex');
32
- }
33
- static getUDPID(device_id_buf) {
34
- const data = (0, crypto_1.createHash)('sha256').update(device_id_buf).digest();
35
- const output = Buffer.alloc(16);
36
- for (let i = 0; i < 16; i++) {
37
- output[i] = data[i] ^ data[i + 16];
38
- }
39
- return output.toString('hex');
40
- }
41
- }
42
- exports.CloudSecurity = CloudSecurity;
43
- class ProxiedSecurity extends CloudSecurity {
44
- getAppKeyAndIv() {
45
- const hash = (0, crypto_1.createHash)('sha256').update(Buffer.from(this.APP_KEY, 'utf8')).digest('hex');
46
- return {
47
- appKey: Buffer.from(hash.substring(0, 16)),
48
- iv: Buffer.from(hash.substring(16, 32)),
49
- };
50
- }
51
- encryptAESAppKey(data) {
52
- const { appKey, iv } = this.getAppKeyAndIv();
53
- const cipher = (0, crypto_1.createCipheriv)('aes-128-cbc', appKey, iv);
54
- return Buffer.concat([cipher.update(data), cipher.final()]);
55
- }
56
- decryptAESAppKey(data) {
57
- const { appKey, iv } = this.getAppKeyAndIv();
58
- const decipher = (0, crypto_1.createDecipheriv)('aes-128-cbc', appKey, iv);
59
- return Buffer.concat([decipher.update(data), decipher.final()]);
60
- }
61
- }
62
- exports.ProxiedSecurity = ProxiedSecurity;
63
- class MSmartHomeCloudSecurity extends ProxiedSecurity {
64
- constructor() {
65
- super(MSmartHomeCloudSecurity._LOGIN_KEY, BigInt('7882822598523843940'), BigInt('117390035944627627450677220413733956185864939010425'));
66
- this.APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
67
- }
68
- encrpytIAMPassword(loginId, password) {
69
- const m1 = (0, crypto_1.createHash)('md5').update(password);
70
- const m2 = (0, crypto_1.createHash)('md5').update(m1.digest('hex'));
71
- const login_hash = `${loginId}${m2.digest('hex')}${this.LOGIN_KEY}`;
72
- const sha = (0, crypto_1.createHash)('sha256').update(login_hash);
73
- return sha.digest('hex');
74
- }
75
- }
76
- exports.MSmartHomeCloudSecurity = MSmartHomeCloudSecurity;
77
- MSmartHomeCloudSecurity._LOGIN_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
78
- class MeijuCloudSecurity extends ProxiedSecurity {
79
- constructor() {
80
- super(MeijuCloudSecurity._LOGIN_KEY, BigInt('9795516279659324117647275084689641883661667'), BigInt('117390035944627627450677220413733956185864939010425'));
81
- this.APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
82
- }
83
- encrpytIAMPassword(_loginId, password) {
84
- const m1 = (0, crypto_1.createHash)('md5').update(password);
85
- const m2 = (0, crypto_1.createHash)('md5').update(m1.digest('hex'));
86
- return m2.digest('hex');
87
- }
88
- }
89
- exports.MeijuCloudSecurity = MeijuCloudSecurity;
90
- MeijuCloudSecurity._LOGIN_KEY = 'ad0ee21d48a64bf49f4fb583ab76e799';
91
- class SimpleSecurity extends CloudSecurity {
92
- constructor(login_key) {
93
- super(login_key);
94
- }
95
- encrpytIAMPassword() {
96
- return '';
97
- }
98
- sign(url, query) {
99
- const parsedUrl = new URL(url);
100
- const path = parsedUrl.pathname;
101
- return (0, crypto_1.createHash)('sha256')
102
- .update(Buffer.from(`${path}${unescape_plus(query)}${this.LOGIN_KEY}`, 'ascii'))
103
- .digest('hex');
104
- }
105
- }
106
- exports.SimpleSecurity = SimpleSecurity;
107
- class NetHomePlusSecurity extends SimpleSecurity {
108
- constructor() {
109
- super(NetHomePlusSecurity._LOGIN_KEY);
110
- }
111
- }
112
- exports.NetHomePlusSecurity = NetHomePlusSecurity;
113
- NetHomePlusSecurity._LOGIN_KEY = '3742e9e5842d4ad59c2db887e12449f9';
114
- class ArtisonClimaSecurity extends SimpleSecurity {
115
- constructor() {
116
- super(ArtisonClimaSecurity._LOGIN_KEY);
117
- }
118
- }
119
- exports.ArtisonClimaSecurity = ArtisonClimaSecurity;
120
- ArtisonClimaSecurity._LOGIN_KEY = '434a209a5ce141c3b726de067835d7f0';
121
- class LocalSecurity {
122
- constructor() {
123
- this.aes_key = Buffer.from(BigInt('141661095494369103254425781617665632877').toString(16), 'hex');
124
- this.salt = Buffer.from(BigInt('233912452794221312800602098970898185176935770387238278451789080441632479840061417076563').toString(16), 'hex');
125
- this.iv = Buffer.alloc(16);
126
- this.request_count = 0;
127
- this.response_count = 0;
128
- this.tcp_key = Buffer.alloc(0);
129
- }
130
- aes_cbc_encrpyt(raw, key) {
131
- const cipher = (0, crypto_1.createCipheriv)('aes-256-cbc', key, this.iv);
132
- cipher.setAutoPadding(false);
133
- return Buffer.concat([cipher.update(raw), cipher.final()]);
134
- }
135
- aes_cbc_decrypt(raw, key) {
136
- const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', key, this.iv);
137
- decipher.setAutoPadding(false);
138
- return Buffer.concat([decipher.update(raw), decipher.final()]);
139
- }
140
- aes_encrypt(data) {
141
- const cipher = (0, crypto_1.createCipheriv)('aes-128-ecb', this.aes_key, null);
142
- return Buffer.concat([cipher.update(data), cipher.final()]);
143
- }
144
- aes_decrypt(data) {
145
- const decipher = (0, crypto_1.createDecipheriv)('aes-128-ecb', this.aes_key, null);
146
- return Buffer.concat([decipher.update(data), decipher.final()]);
147
- }
148
- encode32_data(raw) {
149
- return (0, crypto_1.createHash)('md5')
150
- .update(Buffer.concat([raw, this.salt]))
151
- .digest();
152
- }
153
- tcp_key_from_resp(response, key) {
154
- if (response.toString() === 'ERROR') {
155
- throw Error('Authentication response is ERROR, cannot get TCP key.');
156
- }
157
- if (response.length !== 64) {
158
- throw Error('Authentication response has unexpected data length, cannot get TCP key..');
159
- }
160
- const payload = response.subarray(0, 32);
161
- const sign = response.subarray(32, response.length);
162
- const plain = this.aes_cbc_decrypt(payload, key);
163
- if ((0, crypto_1.createHash)('sha256').update(plain).digest().compare(sign) !== 0) {
164
- throw Error('Authentication sign does not match, cannot get TCP key.');
165
- }
166
- this.tcp_key = (0, MideaUtils_1.strxor)(plain, key);
167
- this.request_count = 0;
168
- this.response_count = 0;
169
- return this.tcp_key;
170
- }
171
- encode_8370(data, message_type) {
172
- if (message_type !== MideaConstants_1.TCPMessageType.HANDSHAKE_REQUEST &&
173
- message_type !== MideaConstants_1.TCPMessageType.HANDSHAKE_RESPONSE &&
174
- this.tcp_key.length === 0) {
175
- throw new Error('TCP key is not set.');
176
- }
177
- let header = Buffer.from([0x83, 0x70]);
178
- let size = data.length;
179
- let padding = 0;
180
- if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
181
- if ((size + 2) % 16 !== 0) {
182
- padding = 16 - ((size + 2) & 0xf);
183
- size += padding + 32;
184
- data = Buffer.concat([data, (0, crypto_1.randomBytes)(padding)]);
185
- }
186
- }
187
- header = Buffer.concat([header, (0, MideaUtils_1.numberToUint8Array)(size, 2, MideaConstants_1.Endianness.Big)]);
188
- header = Buffer.concat([header, Buffer.from([0x20, (padding << 4) | message_type])]);
189
- data = Buffer.concat([(0, MideaUtils_1.numberToUint8Array)(this.request_count, 2, MideaConstants_1.Endianness.Big), data]);
190
- this.request_count += 1;
191
- if (this.request_count >= 0xffff) {
192
- this.request_count = 0;
193
- }
194
- if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
195
- const sign = (0, crypto_1.createHash)('sha256')
196
- .update(Buffer.concat([header, data]))
197
- .digest();
198
- data = Buffer.concat([this.aes_cbc_encrpyt(data, this.tcp_key), sign]);
199
- }
200
- return Buffer.concat([header, data]);
201
- }
202
- decode_8370(data) {
203
- if (data.length < 6) {
204
- return [[], data];
205
- }
206
- if (this.tcp_key.length === 0) {
207
- throw new Error('TCP key is not set.');
208
- }
209
- const header = data.subarray(0, 6);
210
- if (header[0] !== 0x83 || header[1] !== 0x70) {
211
- throw new Error('Not an 8370 message.');
212
- }
213
- const size = header.subarray(2, 4).readUInt16BE() + 8;
214
- let leftover = Buffer.alloc(0);
215
- if (data.length < size) {
216
- return [[], data];
217
- }
218
- else if (data.length > size) {
219
- leftover = data.subarray(size, data.length);
220
- data = data.subarray(0, size);
221
- }
222
- if (header[4] !== 0x20) {
223
- throw new Error('Missing byte 4');
224
- }
225
- const padding = header[5] >> 4;
226
- const message_type_received = header[5] & 0xf;
227
- data = data.subarray(6, data.length);
228
- if ([MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE, MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST].includes(message_type_received)) {
229
- const sign = data.subarray(data.length - 32, data.length);
230
- data = data.subarray(0, data.length - 32);
231
- data = this.aes_cbc_decrypt(data, this.tcp_key);
232
- if ((0, crypto_1.createHash)('sha256')
233
- .update(Buffer.concat([header, data]))
234
- .digest()
235
- .compare(sign) !== 0) {
236
- throw new Error('Sign does not match');
237
- }
238
- if (padding) {
239
- data = data.subarray(0, data.length - padding);
240
- }
241
- }
242
- this.response_count = data.subarray(0, 2).readUInt16BE();
243
- data = data.subarray(2, data.length);
244
- if (leftover.length > 0) {
245
- const [packets, incomplete] = this.decode_8370(leftover);
246
- return [[data, ...packets], incomplete];
247
- }
248
- return [[data], leftover];
249
- }
250
- }
251
- exports.LocalSecurity = LocalSecurity;
1
+ import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes } from 'crypto';
2
+ import { Endianness, TCPMessageType } from './MideaConstants.js';
3
+ import { numberToUint8Array, strxor } from './MideaUtils.js';
4
+ import { unescape } from 'querystring';
5
+ function unescape_plus(str) {
6
+ return unescape(str.replace(/\+/g, ' '));
7
+ }
8
+ export class CloudSecurity {
9
+ LOGIN_KEY;
10
+ IOT_KEY;
11
+ HMAC_KEY;
12
+ constructor(login_key, iot_key, hmac_key) {
13
+ this.LOGIN_KEY = login_key;
14
+ if (hmac_key) {
15
+ this.HMAC_KEY = Buffer.from(hmac_key.toString(16), 'hex').toString();
16
+ }
17
+ if (iot_key) {
18
+ this.IOT_KEY = Buffer.from(iot_key.toString(16), 'hex').toString();
19
+ }
20
+ }
21
+ // Generate a HMAC signature for the provided data and random data.
22
+ sign(data, random) {
23
+ const message = `${this.IOT_KEY}${data}${random}`;
24
+ return createHmac('sha256', this.HMAC_KEY).update(message).digest('hex');
25
+ }
26
+ // Encrypt the password for cloud API password.
27
+ encrpytPassword(loginId, password) {
28
+ const m1 = createHash('sha256').update(password);
29
+ const login_hash = `${loginId}${m1.digest('hex')}${this.LOGIN_KEY}`;
30
+ const m2 = createHash('sha256').update(login_hash);
31
+ return m2.digest('hex');
32
+ }
33
+ static getUDPID(device_id_buf) {
34
+ const data = createHash('sha256').update(device_id_buf).digest();
35
+ const output = Buffer.alloc(16);
36
+ for (let i = 0; i < 16; i++) {
37
+ output[i] = data[i] ^ data[i + 16];
38
+ }
39
+ return output.toString('hex');
40
+ }
41
+ }
42
+ export class ProxiedSecurity extends CloudSecurity {
43
+ getAppKeyAndIv() {
44
+ const hash = createHash('sha256').update(Buffer.from(this.APP_KEY, 'utf8')).digest('hex');
45
+ return {
46
+ appKey: Buffer.from(hash.substring(0, 16)),
47
+ iv: Buffer.from(hash.substring(16, 32)),
48
+ };
49
+ }
50
+ encryptAESAppKey(data) {
51
+ const { appKey, iv } = this.getAppKeyAndIv();
52
+ const cipher = createCipheriv('aes-128-cbc', appKey, iv);
53
+ return Buffer.concat([cipher.update(data), cipher.final()]);
54
+ }
55
+ decryptAESAppKey(data) {
56
+ const { appKey, iv } = this.getAppKeyAndIv();
57
+ const decipher = createDecipheriv('aes-128-cbc', appKey, iv);
58
+ return Buffer.concat([decipher.update(data), decipher.final()]);
59
+ }
60
+ }
61
+ export class MSmartHomeCloudSecurity extends ProxiedSecurity {
62
+ static _LOGIN_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
63
+ APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
64
+ constructor() {
65
+ super(MSmartHomeCloudSecurity._LOGIN_KEY, BigInt('7882822598523843940'), BigInt('117390035944627627450677220413733956185864939010425'));
66
+ }
67
+ encrpytIAMPassword(loginId, password) {
68
+ const m1 = createHash('md5').update(password);
69
+ const m2 = createHash('md5').update(m1.digest('hex'));
70
+ const login_hash = `${loginId}${m2.digest('hex')}${this.LOGIN_KEY}`;
71
+ const sha = createHash('sha256').update(login_hash);
72
+ return sha.digest('hex');
73
+ }
74
+ }
75
+ export class MeijuCloudSecurity extends ProxiedSecurity {
76
+ static _LOGIN_KEY = 'ad0ee21d48a64bf49f4fb583ab76e799';
77
+ APP_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
78
+ constructor() {
79
+ super(MeijuCloudSecurity._LOGIN_KEY, BigInt('9795516279659324117647275084689641883661667'), BigInt('117390035944627627450677220413733956185864939010425'));
80
+ }
81
+ encrpytIAMPassword(_loginId, password) {
82
+ const m1 = createHash('md5').update(password);
83
+ const m2 = createHash('md5').update(m1.digest('hex'));
84
+ return m2.digest('hex');
85
+ }
86
+ }
87
+ export class SimpleSecurity extends CloudSecurity {
88
+ constructor(login_key) {
89
+ super(login_key);
90
+ }
91
+ encrpytIAMPassword() {
92
+ return '';
93
+ }
94
+ sign(url, query) {
95
+ const parsedUrl = new URL(url);
96
+ const path = parsedUrl.pathname;
97
+ return createHash('sha256')
98
+ .update(Buffer.from(`${path}${unescape_plus(query)}${this.LOGIN_KEY}`, 'ascii'))
99
+ .digest('hex');
100
+ }
101
+ }
102
+ export class NetHomePlusSecurity extends SimpleSecurity {
103
+ static _LOGIN_KEY = '3742e9e5842d4ad59c2db887e12449f9';
104
+ constructor() {
105
+ super(NetHomePlusSecurity._LOGIN_KEY);
106
+ }
107
+ }
108
+ export class ArtisonClimaSecurity extends SimpleSecurity {
109
+ static _LOGIN_KEY = '434a209a5ce141c3b726de067835d7f0';
110
+ constructor() {
111
+ super(ArtisonClimaSecurity._LOGIN_KEY);
112
+ }
113
+ }
114
+ export class LocalSecurity {
115
+ aes_key = Buffer.from(BigInt('141661095494369103254425781617665632877').toString(16), 'hex');
116
+ salt = Buffer.from(BigInt('233912452794221312800602098970898185176935770387238278451789080441632479840061417076563').toString(16), 'hex');
117
+ iv = Buffer.alloc(16);
118
+ request_count = 0;
119
+ response_count = 0;
120
+ tcp_key = Buffer.alloc(0);
121
+ aes_cbc_encrpyt(raw, key) {
122
+ const cipher = createCipheriv('aes-256-cbc', key, this.iv);
123
+ cipher.setAutoPadding(false);
124
+ return Buffer.concat([cipher.update(raw), cipher.final()]);
125
+ }
126
+ aes_cbc_decrypt(raw, key) {
127
+ const decipher = createDecipheriv('aes-256-cbc', key, this.iv);
128
+ decipher.setAutoPadding(false);
129
+ return Buffer.concat([decipher.update(raw), decipher.final()]);
130
+ }
131
+ aes_encrypt(data) {
132
+ const cipher = createCipheriv('aes-128-ecb', this.aes_key, null);
133
+ return Buffer.concat([cipher.update(data), cipher.final()]);
134
+ }
135
+ aes_decrypt(data) {
136
+ const decipher = createDecipheriv('aes-128-ecb', this.aes_key, null);
137
+ return Buffer.concat([decipher.update(data), decipher.final()]);
138
+ }
139
+ encode32_data(raw) {
140
+ return createHash('md5')
141
+ .update(Buffer.concat([raw, this.salt]))
142
+ .digest();
143
+ }
144
+ tcp_key_from_resp(response, key) {
145
+ if (response.toString() === 'ERROR') {
146
+ throw Error('Authentication response is ERROR, cannot get TCP key.');
147
+ }
148
+ if (response.length !== 64) {
149
+ throw Error('Authentication response has unexpected data length, cannot get TCP key..');
150
+ }
151
+ const payload = response.subarray(0, 32);
152
+ const sign = response.subarray(32, response.length);
153
+ const plain = this.aes_cbc_decrypt(payload, key);
154
+ if (createHash('sha256').update(plain).digest().compare(sign) !== 0) {
155
+ throw Error('Authentication sign does not match, cannot get TCP key.');
156
+ }
157
+ this.tcp_key = strxor(plain, key);
158
+ this.request_count = 0;
159
+ this.response_count = 0;
160
+ return this.tcp_key;
161
+ }
162
+ encode_8370(data, message_type) {
163
+ if (message_type !== TCPMessageType.HANDSHAKE_REQUEST &&
164
+ message_type !== TCPMessageType.HANDSHAKE_RESPONSE &&
165
+ this.tcp_key.length === 0) {
166
+ throw new Error('TCP key is not set.');
167
+ }
168
+ let header = Buffer.from([0x83, 0x70]);
169
+ let size = data.length;
170
+ let padding = 0;
171
+ if (message_type === TCPMessageType.ENCRYPTED_REQUEST || message_type === TCPMessageType.ENCRYPTED_RESPONSE) {
172
+ if ((size + 2) % 16 !== 0) {
173
+ padding = 16 - ((size + 2) & 0xf);
174
+ size += padding + 32;
175
+ data = Buffer.concat([data, randomBytes(padding)]);
176
+ }
177
+ }
178
+ header = Buffer.concat([header, numberToUint8Array(size, 2, Endianness.Big)]);
179
+ header = Buffer.concat([header, Buffer.from([0x20, (padding << 4) | message_type])]);
180
+ data = Buffer.concat([numberToUint8Array(this.request_count, 2, Endianness.Big), data]);
181
+ this.request_count += 1;
182
+ if (this.request_count >= 0xffff) {
183
+ this.request_count = 0;
184
+ }
185
+ if (message_type === TCPMessageType.ENCRYPTED_REQUEST || message_type === TCPMessageType.ENCRYPTED_RESPONSE) {
186
+ const sign = createHash('sha256')
187
+ .update(Buffer.concat([header, data]))
188
+ .digest();
189
+ data = Buffer.concat([this.aes_cbc_encrpyt(data, this.tcp_key), sign]);
190
+ }
191
+ return Buffer.concat([header, data]);
192
+ }
193
+ decode_8370(data) {
194
+ if (data.length < 6) {
195
+ return [[], data];
196
+ }
197
+ if (this.tcp_key.length === 0) {
198
+ throw new Error('TCP key is not set.');
199
+ }
200
+ const header = data.subarray(0, 6);
201
+ if (header[0] !== 0x83 || header[1] !== 0x70) {
202
+ throw new Error('Not an 8370 message.');
203
+ }
204
+ const size = header.subarray(2, 4).readUInt16BE() + 8;
205
+ let leftover = Buffer.alloc(0);
206
+ if (data.length < size) {
207
+ return [[], data];
208
+ }
209
+ else if (data.length > size) {
210
+ leftover = data.subarray(size, data.length);
211
+ data = data.subarray(0, size);
212
+ }
213
+ if (header[4] !== 0x20) {
214
+ throw new Error('Missing byte 4');
215
+ }
216
+ const padding = header[5] >> 4;
217
+ const message_type_received = header[5] & 0xf;
218
+ data = data.subarray(6, data.length);
219
+ if ([TCPMessageType.ENCRYPTED_RESPONSE, TCPMessageType.ENCRYPTED_REQUEST].includes(message_type_received)) {
220
+ const sign = data.subarray(data.length - 32, data.length);
221
+ data = data.subarray(0, data.length - 32);
222
+ data = this.aes_cbc_decrypt(data, this.tcp_key);
223
+ if (createHash('sha256')
224
+ .update(Buffer.concat([header, data]))
225
+ .digest()
226
+ .compare(sign) !== 0) {
227
+ throw new Error('Sign does not match');
228
+ }
229
+ if (padding) {
230
+ data = data.subarray(0, data.length - padding);
231
+ }
232
+ }
233
+ this.response_count = data.subarray(0, 2).readUInt16BE();
234
+ data = data.subarray(2, data.length);
235
+ if (leftover.length > 0) {
236
+ const [packets, incomplete] = this.decode_8370(leftover);
237
+ return [[data, ...packets], incomplete];
238
+ }
239
+ return [[data], leftover];
240
+ }
241
+ }
252
242
  //# sourceMappingURL=MideaSecurity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MideaSecurity.js","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MideaSecurity.js","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,31 @@
1
- /// <reference types="node" />
2
- /***********************************************************************
3
- * Homebridge-midea-platform miscellaneous support functions.
4
- *
5
- * Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
6
- * Portions Copyright (c) 2023 David Kerr, https://github.com/dkerr64
7
- *
8
- * Includes very basic implementation of a promise-wrapped Socket class.
9
- *
10
- */
11
- import { Logger } from 'homebridge';
12
- import { Endianness } from './MideaConstants';
13
- export declare function numberToUint8Array(num: number, byte_length: number, endianness: Endianness): Uint8Array;
14
- export declare function strxor(a: Buffer, b: Buffer): Buffer;
15
- export declare function calculate(data: Buffer): number;
16
- /*********************************************************************
17
- * PromiseSocket
18
- * A very basic implementation of promise-wrapped Socket
19
- *
20
- */
21
- export declare class PromiseSocket {
22
- private readonly logger;
23
- private readonly logerror;
24
- private innerSok;
25
- destroyed: boolean;
26
- constructor(logger: Logger, logerror: boolean);
27
- connect(port: number, host: string): Promise<void>;
28
- setTimeout(t: number): void;
29
- destroy(): void;
30
- write(data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
31
- read(): Promise<Buffer>;
32
- }
33
- //# sourceMappingURL=MideaUtils.d.ts.map
1
+ /***********************************************************************
2
+ * Homebridge-midea-platform miscellaneous support functions.
3
+ *
4
+ * Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
5
+ * Portions Copyright (c) 2023 David Kerr, https://github.com/dkerr64
6
+ *
7
+ * Includes very basic implementation of a promise-wrapped Socket class.
8
+ *
9
+ */
10
+ import { Logger } from 'homebridge';
11
+ import { Endianness } from './MideaConstants.js';
12
+ export declare function numberToUint8Array(num: number, byte_length: number, endianness: Endianness): Uint8Array;
13
+ export declare function strxor(a: Buffer, b: Buffer): Buffer;
14
+ export declare function calculate(data: Buffer): number;
15
+ /*********************************************************************
16
+ * PromiseSocket
17
+ * A very basic implementation of promise-wrapped Socket
18
+ *
19
+ */
20
+ export declare class PromiseSocket {
21
+ private readonly logger;
22
+ private readonly logerror;
23
+ private innerSok;
24
+ destroyed: boolean;
25
+ constructor(logger: Logger, logerror: boolean);
26
+ connect(port: number, host: string): Promise<void>;
27
+ setTimeout(t: number): void;
28
+ destroy(): void;
29
+ write(data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
30
+ read(): Promise<Buffer>;
31
+ }