@kangwifi-pro/waliwa 1.1.1 → 1.1.3

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.
package/dist/index.d.ts CHANGED
@@ -53,7 +53,7 @@ export { RecoveryManager, mapCodeToReason, getActionDescription, getReasonDescri
53
53
  export { ProfileManager, PrivacyManager, NewsletterManagerExtended, StatusExtended, ContactsManager, BulkOperations, MessageExtras, DisappearingManager, LiveLocationManager, AudioTranscriptionManager, StickerManager, TypingIndicatorTracker, LastSeenTracker, MessageStatusTracker, SelfMessageFilter, ChatStateManager, DeviceInfoTracker, GroupEventsTracker, parseGroupInviteInfo, createCommunityManagers, type ProfileInfo, type PrivacyValue, type PrivacyCategory, type PrivacySettings, type NewsletterMetadata, type NewsletterPost, type StatusView, type StatusInfo, type StatusPrivacyValue, type StatusPrivacy, type ContactInfo, type BulkSendItem, type BulkSendResult, type BulkSendOptions, type AlbumItem, type MessageInfo, type DisappearingTimer, type TIMER_TO_SECONDS, type LiveLocation, type TranscriptionResult, type TranscriptionProvider, type StickerMetadata, type StickerPack, type ChatState, type GroupInviteInfo, type CommunityManagers, type CommunityTrackers } from './community/index.js';
54
54
  export { TIMER_TO_SECONDS as DISAPPEARING_TIMERS, SECONDS_TO_TIMER as SECONDS_TO_TIMER, detectLanguageFromText } from './community/index.js';
55
55
  export * from './types/index.js';
56
- export declare const VERSION = "1.1.1";
56
+ export declare const VERSION = "1.1.3";
57
57
  export declare const LIBRARY_NAME = "waliwa";
58
58
  export declare const DEFAULT_CONFIG: {
59
59
  wsURL: string;
package/dist/index.js CHANGED
@@ -252,7 +252,7 @@ Object.defineProperty(exports, "detectLanguageFromText", { enumerable: true, get
252
252
  // ============== All Types ==============
253
253
  __exportStar(require("./types/index.js"), exports);
254
254
  // ============== Version ==============
255
- exports.VERSION = '1.1.1';
255
+ exports.VERSION = '1.1.3';
256
256
  exports.LIBRARY_NAME = 'waliwa';
257
257
  // ============== Default Config ==============
258
258
  exports.DEFAULT_CONFIG = {
@@ -51,15 +51,33 @@ export declare class WAWebSocket extends EventEmitter {
51
51
  /**
52
52
  * Start Noise Protocol XX handshake
53
53
  *
54
- * Noise XX pattern requires 3 messages:
55
- * 1. Client -> Server: ephemeral only (32 bytes)
56
- * 2. Server -> Client: ephemeral + encrypted static + encrypted payload
57
- * 3. Client -> Server: encrypted static + encrypted payload
54
+ * WA Frame Format (used in ALL messages including handshake):
55
+ * [0x57, 0x41] (2 bytes "WA" magic)
56
+ * [0x01] (1 byte binary flag)
57
+ * [version] (1 byte, e.g. 0x2d = 45)
58
+ * [length_hi, length_mid, length_lo] (3 bytes big-endian length)
59
+ * [payload]
58
60
  *
59
- * The WA protocol wraps message 1 with a WA header ("WA" + version),
60
- * but messages 2 and 3 are sent as raw Noise data.
61
+ * Noise XX Pattern (3 messages):
62
+ * 1. Client Server: WA header + ephemeral (32 bytes)
63
+ * 2. Server → Client: WA header + ephemeral(32) + enc_static(48) + enc_payload
64
+ * 3. Client → Server: WA header + enc_static(48) + enc_payload
61
65
  */
62
66
  private startHandshake;
67
+ /**
68
+ * Hex dump utility for debugging binary data
69
+ */
70
+ private hexDump;
71
+ /**
72
+ * Wrap payload dengan WA frame header
73
+ * Format: [0x57, 0x41, 0x01, version, len_hi, len_mid, len_lo] + payload
74
+ */
75
+ private wrapWAFrame;
76
+ /**
77
+ * Strip WA frame header (7 bytes) dari incoming message
78
+ * Returns just the payload
79
+ */
80
+ private unwrapWAFrame;
63
81
  /**
64
82
  * Wait for a single WebSocket message with timeout
65
83
  */
@@ -71,12 +89,12 @@ export declare class WAWebSocket extends EventEmitter {
71
89
  private generatePairingKey;
72
90
  /**
73
91
  * Handle incoming message - decrypt jika handshake done
74
- * After handshake, messages are raw encrypted Noise data (NO WA header)
92
+ * After handshake, messages still use WA frame format
75
93
  */
76
94
  private handleMessage;
77
95
  /**
78
96
  * Send encrypted frame ke server
79
- * After handshake, messages are sent as raw encrypted Noise data (NO WA header)
97
+ * Wraps encrypted data dengan WA frame header
80
98
  */
81
99
  send(plaintext: Uint8Array): void;
82
100
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ws-socket.d.ts","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAEL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,SAAS,GACT,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;IACvD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAmCD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAa;gBAEnB,IAAI,EAAE,kBAAkB;IAYpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D9B;;;;;;;;;;OAUG;YACW,cAAc;IA8B5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,kBAAkB;IAK1B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAerB;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IASjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,KAAK,CAAC,IAAI,GAAE,MAAa,EAAE,MAAM,GAAE,MAAiB,GAAG,IAAI;IAa3D;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;CAGzC;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ws-socket.d.ts","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAEL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,SAAS,GACT,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;IACvD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAmCD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAa;gBAEnB,IAAI,EAAE,kBAAkB;IAYpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D9B;;;;;;;;;;;;;;OAcG;YACW,cAAc;IAyD5B;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;;OAGG;IACH,OAAO,CAAC,WAAW;IAanB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,kBAAkB;IAK1B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IASjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,KAAK,CAAC,IAAI,GAAE,MAAa,EAAE,MAAM,GAAE,MAAiB,GAAG,IAAI;IAa3D;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;CAGzC;AAED,eAAe,WAAW,CAAC"}
@@ -134,37 +134,105 @@ class WAWebSocket extends events_1.EventEmitter {
134
134
  /**
135
135
  * Start Noise Protocol XX handshake
136
136
  *
137
- * Noise XX pattern requires 3 messages:
138
- * 1. Client -> Server: ephemeral only (32 bytes)
139
- * 2. Server -> Client: ephemeral + encrypted static + encrypted payload
140
- * 3. Client -> Server: encrypted static + encrypted payload
137
+ * WA Frame Format (used in ALL messages including handshake):
138
+ * [0x57, 0x41] (2 bytes "WA" magic)
139
+ * [0x01] (1 byte binary flag)
140
+ * [version] (1 byte, e.g. 0x2d = 45)
141
+ * [length_hi, length_mid, length_lo] (3 bytes big-endian length)
142
+ * [payload]
141
143
  *
142
- * The WA protocol wraps message 1 with a WA header ("WA" + version),
143
- * but messages 2 and 3 are sent as raw Noise data.
144
+ * Noise XX Pattern (3 messages):
145
+ * 1. Client Server: WA header + ephemeral (32 bytes)
146
+ * 2. Server → Client: WA header + ephemeral(32) + enc_static(48) + enc_payload
147
+ * 3. Client → Server: WA header + enc_static(48) + enc_payload
144
148
  */
145
149
  async startHandshake() {
146
150
  this.handshake = new noise_js_1.NoiseHandshake(this.noiseKey, true);
147
151
  // === Message 1: Send client ephemeral only ===
148
- // Format: [0x57, 0x41] (WA magic) + [version 2 bytes] + [32-byte ephemeral]
149
152
  const ephemeralPub = this.handshake.buildClientHello();
150
- const waMagic = new Uint8Array([0x57, 0x41, 0x05, 0x2d]); // "WA" + version 5.45
151
- const clientHello = (0, crypto_js_1.concatBytes)(waMagic, ephemeralPub);
152
- this.logger.debug(`Sending client hello (${clientHello.length} bytes)`);
153
+ const clientHello = this.wrapWAFrame(ephemeralPub);
154
+ this.logger.info(`Sending client hello: ${this.hexDump(clientHello)}`);
153
155
  this.ws.send(Buffer.from(clientHello));
154
156
  // === Message 2: Wait for server response ===
155
- const serverData = await this.waitForMessage(15000);
156
- // Process server response (raw Noise data, NO WA header to strip)
157
- this.handshake.readResponderHandshake(new Uint8Array(serverData));
158
- this.logger.debug('Server handshake response processed');
157
+ // Server might send multiple frames - skip short/ack messages until we get the actual handshake
158
+ let serverPayload = null;
159
+ for (let attempt = 0; attempt < 5; attempt++) {
160
+ const serverData = await this.waitForMessage(15000);
161
+ const bytes = new Uint8Array(serverData);
162
+ this.logger.info(`Received msg ${attempt + 1} (${serverData.length} bytes): ${this.hexDump(bytes)}`);
163
+ // Skip short messages (acks, pings, etc.)
164
+ if (serverData.length < 7) {
165
+ this.logger.info(`Short message (${serverData.length} bytes), treating as ack/ping, waiting for next...`);
166
+ continue;
167
+ }
168
+ // Try to unwrap WA frame
169
+ try {
170
+ serverPayload = this.unwrapWAFrame(bytes);
171
+ this.logger.info(`Unwrapped WA frame, payload ${serverPayload.length} bytes: ${this.hexDump(serverPayload)}`);
172
+ break;
173
+ }
174
+ catch (err) {
175
+ // Maybe it's raw Noise data without WA header
176
+ this.logger.info(`WA unwrap failed: ${err.message}, trying as raw data`);
177
+ serverPayload = bytes;
178
+ break;
179
+ }
180
+ }
181
+ if (!serverPayload || serverPayload.length < 32) {
182
+ throw new Error(`Invalid handshake response (payload ${serverPayload?.length ?? 0} bytes, need ≥ 80)`);
183
+ }
184
+ // Process server Noise data
185
+ this.handshake.readResponderHandshake(serverPayload);
186
+ this.logger.info('Server handshake response processed');
159
187
  // === Message 3: Send encrypted static + payload ===
160
188
  const clientPayload = this.buildClientPayload();
161
189
  const clientResponse = this.handshake.writeClientResponse(clientPayload);
162
- this.logger.debug(`Sending client response (${clientResponse.length} bytes)`);
163
- this.ws.send(Buffer.from(clientResponse));
190
+ const wrappedResponse = this.wrapWAFrame(clientResponse);
191
+ this.logger.info(`Sending client response (${wrappedResponse.length} bytes): ${this.hexDump(wrappedResponse)}`);
192
+ this.ws.send(Buffer.from(wrappedResponse));
164
193
  // === Finalize: derive traffic keys ===
165
194
  const { sendKey, recvKey } = this.handshake.finalize();
166
195
  this.trafficCipher = new noise_js_1.TrafficCipher(sendKey, recvKey);
167
- this.logger.debug('Noise handshake completed, traffic keys derived');
196
+ this.logger.info('Noise handshake completed, traffic keys derived');
197
+ }
198
+ /**
199
+ * Hex dump utility for debugging binary data
200
+ */
201
+ hexDump(data, maxBytes = 64) {
202
+ const slice = data.subarray(0, Math.min(data.length, maxBytes));
203
+ const hex = Array.from(slice).map(b => b.toString(16).padStart(2, '0')).join(' ');
204
+ const suffix = data.length > maxBytes ? ` ... (${data.length} bytes total)` : '';
205
+ return `[${hex}]${suffix}`;
206
+ }
207
+ /**
208
+ * Wrap payload dengan WA frame header
209
+ * Format: [0x57, 0x41, 0x01, version, len_hi, len_mid, len_lo] + payload
210
+ */
211
+ wrapWAFrame(payload) {
212
+ const len = payload.length;
213
+ const header = new Uint8Array(7);
214
+ header[0] = 0x57; // 'W'
215
+ header[1] = 0x41; // 'A'
216
+ header[2] = 0x01; // binary flag
217
+ header[3] = 0x2d; // version 45
218
+ header[4] = (len >> 16) & 0xff;
219
+ header[5] = (len >> 8) & 0xff;
220
+ header[6] = len & 0xff;
221
+ return (0, crypto_js_1.concatBytes)(header, payload);
222
+ }
223
+ /**
224
+ * Strip WA frame header (7 bytes) dari incoming message
225
+ * Returns just the payload
226
+ */
227
+ unwrapWAFrame(data) {
228
+ if (data.length < 7) {
229
+ throw new Error(`Invalid WA frame: too short (${data.length} bytes)`);
230
+ }
231
+ // Verify WA magic
232
+ if (data[0] !== 0x57 || data[1] !== 0x41) {
233
+ throw new Error(`Invalid WA frame magic: ${data[0]}, ${data[1]}`);
234
+ }
235
+ return data.subarray(7);
168
236
  }
169
237
  /**
170
238
  * Wait for a single WebSocket message with timeout
@@ -210,7 +278,7 @@ class WAWebSocket extends events_1.EventEmitter {
210
278
  }
211
279
  /**
212
280
  * Handle incoming message - decrypt jika handshake done
213
- * After handshake, messages are raw encrypted Noise data (NO WA header)
281
+ * After handshake, messages still use WA frame format
214
282
  */
215
283
  handleMessage(data) {
216
284
  if (!this.isHandshakeDone) {
@@ -218,8 +286,9 @@ class WAWebSocket extends events_1.EventEmitter {
218
286
  return;
219
287
  }
220
288
  try {
221
- // Raw encrypted data - no WA header to strip
222
- const plaintext = this.trafficCipher.decrypt(new Uint8Array(data));
289
+ // Strip WA header (7 bytes) then decrypt
290
+ const payload = this.unwrapWAFrame(new Uint8Array(data));
291
+ const plaintext = this.trafficCipher.decrypt(payload);
223
292
  this.emit('message', plaintext);
224
293
  }
225
294
  catch (err) {
@@ -229,15 +298,15 @@ class WAWebSocket extends events_1.EventEmitter {
229
298
  }
230
299
  /**
231
300
  * Send encrypted frame ke server
232
- * After handshake, messages are sent as raw encrypted Noise data (NO WA header)
301
+ * Wraps encrypted data dengan WA frame header
233
302
  */
234
303
  send(plaintext) {
235
304
  if (!this.isHandshakeDone || !this.trafficCipher) {
236
305
  throw new Error('Cannot send before handshake complete');
237
306
  }
238
307
  const ciphertext = this.trafficCipher.encrypt(plaintext);
239
- // Send raw encrypted data - no WA frame header needed
240
- this.ws.send(Buffer.from(ciphertext));
308
+ const frame = this.wrapWAFrame(ciphertext);
309
+ this.ws.send(Buffer.from(frame));
241
310
  }
242
311
  /**
243
312
  * Start keep-alive ping
@@ -1 +1 @@
1
- {"version":3,"file":"ws-socket.js","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws-socket.js","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kangwifi-pro/waliwa",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Lightweight, RAM-efficient WhatsApp library with hybrid protocol (WhatsApp Web MD + Mobile API), Multi-Branch SKDM Recovery system, Community features, and 9+ Baileys issue fixes. More complete than Baileys, lighter than ZapoJS.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -324,7 +324,7 @@ export {
324
324
  export * from './types/index.js';
325
325
 
326
326
  // ============== Version ==============
327
- export const VERSION = '1.1.1';
327
+ export const VERSION = '1.1.3';
328
328
  export const LIBRARY_NAME = 'waliwa';
329
329
 
330
330
  // ============== Default Config ==============
@@ -171,42 +171,115 @@ export class WAWebSocket extends EventEmitter {
171
171
  /**
172
172
  * Start Noise Protocol XX handshake
173
173
  *
174
- * Noise XX pattern requires 3 messages:
175
- * 1. Client -> Server: ephemeral only (32 bytes)
176
- * 2. Server -> Client: ephemeral + encrypted static + encrypted payload
177
- * 3. Client -> Server: encrypted static + encrypted payload
174
+ * WA Frame Format (used in ALL messages including handshake):
175
+ * [0x57, 0x41] (2 bytes "WA" magic)
176
+ * [0x01] (1 byte binary flag)
177
+ * [version] (1 byte, e.g. 0x2d = 45)
178
+ * [length_hi, length_mid, length_lo] (3 bytes big-endian length)
179
+ * [payload]
178
180
  *
179
- * The WA protocol wraps message 1 with a WA header ("WA" + version),
180
- * but messages 2 and 3 are sent as raw Noise data.
181
+ * Noise XX Pattern (3 messages):
182
+ * 1. Client Server: WA header + ephemeral (32 bytes)
183
+ * 2. Server → Client: WA header + ephemeral(32) + enc_static(48) + enc_payload
184
+ * 3. Client → Server: WA header + enc_static(48) + enc_payload
181
185
  */
182
186
  private async startHandshake(): Promise<void> {
183
187
  this.handshake = new NoiseHandshake(this.noiseKey, true);
184
188
 
185
189
  // === Message 1: Send client ephemeral only ===
186
- // Format: [0x57, 0x41] (WA magic) + [version 2 bytes] + [32-byte ephemeral]
187
190
  const ephemeralPub = this.handshake.buildClientHello();
188
- const waMagic = new Uint8Array([0x57, 0x41, 0x05, 0x2d]); // "WA" + version 5.45
189
- const clientHello = concatBytes(waMagic, ephemeralPub);
190
- this.logger.debug(`Sending client hello (${clientHello.length} bytes)`);
191
+ const clientHello = this.wrapWAFrame(ephemeralPub);
192
+ this.logger.info(`Sending client hello: ${this.hexDump(clientHello)}`);
191
193
  this.ws!.send(Buffer.from(clientHello));
192
194
 
193
195
  // === Message 2: Wait for server response ===
194
- const serverData = await this.waitForMessage(15000);
196
+ // Server might send multiple frames - skip short/ack messages until we get the actual handshake
197
+ let serverPayload: Uint8Array | null = null;
198
+ for (let attempt = 0; attempt < 5; attempt++) {
199
+ const serverData = await this.waitForMessage(15000);
200
+ const bytes = new Uint8Array(serverData);
201
+ this.logger.info(`Received msg ${attempt + 1} (${serverData.length} bytes): ${this.hexDump(bytes)}`);
202
+
203
+ // Skip short messages (acks, pings, etc.)
204
+ if (serverData.length < 7) {
205
+ this.logger.info(`Short message (${serverData.length} bytes), treating as ack/ping, waiting for next...`);
206
+ continue;
207
+ }
208
+
209
+ // Try to unwrap WA frame
210
+ try {
211
+ serverPayload = this.unwrapWAFrame(bytes);
212
+ this.logger.info(`Unwrapped WA frame, payload ${serverPayload.length} bytes: ${this.hexDump(serverPayload)}`);
213
+ break;
214
+ } catch (err: any) {
215
+ // Maybe it's raw Noise data without WA header
216
+ this.logger.info(`WA unwrap failed: ${err.message}, trying as raw data`);
217
+ serverPayload = bytes;
218
+ break;
219
+ }
220
+ }
221
+
222
+ if (!serverPayload || serverPayload.length < 32) {
223
+ throw new Error(`Invalid handshake response (payload ${serverPayload?.length ?? 0} bytes, need ≥ 80)`);
224
+ }
195
225
 
196
- // Process server response (raw Noise data, NO WA header to strip)
197
- this.handshake.readResponderHandshake(new Uint8Array(serverData));
198
- this.logger.debug('Server handshake response processed');
226
+ // Process server Noise data
227
+ this.handshake.readResponderHandshake(serverPayload);
228
+ this.logger.info('Server handshake response processed');
199
229
 
200
230
  // === Message 3: Send encrypted static + payload ===
201
231
  const clientPayload = this.buildClientPayload();
202
232
  const clientResponse = this.handshake.writeClientResponse(clientPayload);
203
- this.logger.debug(`Sending client response (${clientResponse.length} bytes)`);
204
- this.ws!.send(Buffer.from(clientResponse));
233
+ const wrappedResponse = this.wrapWAFrame(clientResponse);
234
+ this.logger.info(`Sending client response (${wrappedResponse.length} bytes): ${this.hexDump(wrappedResponse)}`);
235
+ this.ws!.send(Buffer.from(wrappedResponse));
205
236
 
206
237
  // === Finalize: derive traffic keys ===
207
238
  const { sendKey, recvKey } = this.handshake.finalize();
208
239
  this.trafficCipher = new TrafficCipher(sendKey, recvKey);
209
- this.logger.debug('Noise handshake completed, traffic keys derived');
240
+ this.logger.info('Noise handshake completed, traffic keys derived');
241
+ }
242
+
243
+ /**
244
+ * Hex dump utility for debugging binary data
245
+ */
246
+ private hexDump(data: Uint8Array, maxBytes: number = 64): string {
247
+ const slice = data.subarray(0, Math.min(data.length, maxBytes));
248
+ const hex = Array.from(slice).map(b => b.toString(16).padStart(2, '0')).join(' ');
249
+ const suffix = data.length > maxBytes ? ` ... (${data.length} bytes total)` : '';
250
+ return `[${hex}]${suffix}`;
251
+ }
252
+
253
+ /**
254
+ * Wrap payload dengan WA frame header
255
+ * Format: [0x57, 0x41, 0x01, version, len_hi, len_mid, len_lo] + payload
256
+ */
257
+ private wrapWAFrame(payload: Uint8Array): Uint8Array {
258
+ const len = payload.length;
259
+ const header = new Uint8Array(7);
260
+ header[0] = 0x57; // 'W'
261
+ header[1] = 0x41; // 'A'
262
+ header[2] = 0x01; // binary flag
263
+ header[3] = 0x2d; // version 45
264
+ header[4] = (len >> 16) & 0xff;
265
+ header[5] = (len >> 8) & 0xff;
266
+ header[6] = len & 0xff;
267
+ return concatBytes(header, payload);
268
+ }
269
+
270
+ /**
271
+ * Strip WA frame header (7 bytes) dari incoming message
272
+ * Returns just the payload
273
+ */
274
+ private unwrapWAFrame(data: Uint8Array): Uint8Array {
275
+ if (data.length < 7) {
276
+ throw new Error(`Invalid WA frame: too short (${data.length} bytes)`);
277
+ }
278
+ // Verify WA magic
279
+ if (data[0] !== 0x57 || data[1] !== 0x41) {
280
+ throw new Error(`Invalid WA frame magic: ${data[0]}, ${data[1]}`);
281
+ }
282
+ return data.subarray(7);
210
283
  }
211
284
 
212
285
  /**
@@ -259,7 +332,7 @@ export class WAWebSocket extends EventEmitter {
259
332
 
260
333
  /**
261
334
  * Handle incoming message - decrypt jika handshake done
262
- * After handshake, messages are raw encrypted Noise data (NO WA header)
335
+ * After handshake, messages still use WA frame format
263
336
  */
264
337
  private handleMessage(data: Buffer): void {
265
338
  if (!this.isHandshakeDone) {
@@ -267,8 +340,9 @@ export class WAWebSocket extends EventEmitter {
267
340
  return;
268
341
  }
269
342
  try {
270
- // Raw encrypted data - no WA header to strip
271
- const plaintext = this.trafficCipher!.decrypt(new Uint8Array(data));
343
+ // Strip WA header (7 bytes) then decrypt
344
+ const payload = this.unwrapWAFrame(new Uint8Array(data));
345
+ const plaintext = this.trafficCipher!.decrypt(payload);
272
346
  this.emit('message', plaintext);
273
347
  } catch (err: any) {
274
348
  this.logger.error(`Message decrypt failed: ${err.message}`);
@@ -278,15 +352,15 @@ export class WAWebSocket extends EventEmitter {
278
352
 
279
353
  /**
280
354
  * Send encrypted frame ke server
281
- * After handshake, messages are sent as raw encrypted Noise data (NO WA header)
355
+ * Wraps encrypted data dengan WA frame header
282
356
  */
283
357
  send(plaintext: Uint8Array): void {
284
358
  if (!this.isHandshakeDone || !this.trafficCipher) {
285
359
  throw new Error('Cannot send before handshake complete');
286
360
  }
287
361
  const ciphertext = this.trafficCipher.encrypt(plaintext);
288
- // Send raw encrypted data - no WA frame header needed
289
- this.ws!.send(Buffer.from(ciphertext));
362
+ const frame = this.wrapWAFrame(ciphertext);
363
+ this.ws!.send(Buffer.from(frame));
290
364
  }
291
365
 
292
366
  /**