From 47540e961ed1530b3fa2b46847258fdaceacce5b Mon Sep 17 00:00:00 2001 From: w3nder Date: Tue, 22 Apr 2025 15:58:25 -0300 Subject: [PATCH] fix: readAdJid domainType jid = 0 and 128 lid = 1 and 129 --- src/WABinary/decode.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/WABinary/decode.ts b/src/WABinary/decode.ts index 23bb480..e138ade 100644 --- a/src/WABinary/decode.ts +++ b/src/WABinary/decode.ts @@ -3,6 +3,7 @@ import { inflate } from 'zlib' import * as constants from './constants' import { jidEncode } from './jid-utils' import type { BinaryNode, BinaryNodeCodingOptions } from './types' +import logger from '../Utils/logger' const inflatePromise = promisify(inflate) @@ -147,11 +148,26 @@ export const decodeDecompressedBinaryNode = ( } const readAdJid = () => { - const agent = readByte() + const rawDomainType = readByte() + const domainType = typeof rawDomainType === 'number' + ? rawDomainType + : Number(rawDomainType) + + const device = readByte() const user = readString(readByte()) - return jidEncode(user, agent === 0 ? 's.whatsapp.net' : 'lid', device) + if((domainType & 1) !== 0 || (domainType & 0x80) === 0) { + if(![0, 1].includes(domainType)) { + logger.warn('Possibly invalid domainType:', domainType, user, device) + } + } + + return jidEncode( + user, + domainType === 0 || domainType === 128 ? 's.whatsapp.net' : 'lid', + device + ) } const readString = (tag: number): string => {