"""Find WhatsApp Desktop pairing QR payload candidates using read-only process RAM. No screenshots, browser, debug connection or injected code. Finding a payload does not establish that its server reference is active; no session is created. """ import argparse, base64, ctypes, datetime as dt, hashlib, json, re, struct, sys from pathlib import Path from .ram import Memory, discover REA_EVIDENCE = 'ev_6c3a7930e51a95d162c3634ecdc0b73652cb640663681a7cb9962a5b45a9c1da' PATTERN = re.compile(r'(?:https://wa\.me/settings/linked_devices#)?[A-Za-z0-9+/=_:-]{8,512},[A-Za-z0-9+/]{43}=,[A-Za-z0-9+/]{43}=,[A-Za-z0-9+/]{43}=,8(?:,https://faq\.whatsapp\.com/r/ld)?') def valid_payload(value): fields = value.removeprefix('https://wa.me/settings/linked_devices#').split(',') if len(fields) not in (5, 6) or fields[4] != '8': return False if len(fields) == 6 and fields[5] != 'https://faq.whatsapp.com/r/ld': return False try: return all(len(base64.b64decode(f, validate=True)) == 32 for f in fields[1:4]) except ValueError: return False def scan(mem, budget_mb): scanned, seen = 0, set() budget = budget_mb * 1024 * 1024 for region in mem.regions(): for offset in range(0, region['size'], 1024 * 1024): if scanned >= budget: return address = region['base'] + offset size = min(1024 * 1024, region['size'] - offset, budget - scanned) data = mem.read(address, min(size + 2048, region['size'] - offset)) scanned += size variants = [(data.decode('latin-1'), 1, 0)] if b',\x008\x00' in data: for alignment in (0, 1): tail = len(data) - (len(data) - alignment) % 2 variants.append((data[alignment:tail].decode('utf-16-le', errors='surrogatepass'), 2, alignment)) for text, width, alignment in variants: for match in PATTERN.finditer(text): payload = match.group() if not valid_payload(payload): continue start = address + alignment + match.start() * width header = mem.read(start - 12, 12) if len(header) != 12: continue map_tag, _, length = struct.unpack('