Files
tai/taicpp/tests/whatsapp_data/noise.json
T
retoorandClaude Opus 4.8 115e403e67 whatsapp: native C++ client + terminal-screenshot tool
Native WhatsApp Web multi-device client in C++ (src/whatsapp/, namespace
detz::wa), built on OpenSSL plus a vendored public-domain ed25519 ref10
(third_party/ed25519, zlib) for XEdDSA and the nayuki QR generator
(third_party/qrcodegen, MIT); no new runtime dependency.

- WaCrypto, WaBinary, WaProto, WaNoise, WaSignal, WaDevice, WaSocket,
  WaClient, WaStore, WaQr, WaWizard.
- Verified offline against golden vectors captured from the real Baileys
  client (tests/whatsapp_data, from jfelipesjc/wa-go, MIT): HKDF/PBKDF2 RFC
  vectors, XEdDSA roundtrips, codec battery 19/19, ClientPayload byte-exact,
  the Noise handshake, and a 4-exchange Signal session byte-exact. Unit test
  build/whatsapp_test (16/16), run_all step whatsapp.unit.
- Verified live against web.whatsapp.com: `detz --whatsapp-link` connects,
  completes the Noise handshake, receives pair-device, renders a scannable QR
  in the terminal, and persists the device to the vault (whatsapp/<profile>.db).
  Also --whatsapp-status / --whatsapp-unlink.
- Agent tools whatsapp_send and whatsapp_contacts (detz-only, in DetzTools).
- Pairing completion after the phone scans, and the message send path
  (usync + prekey fetch + Signal encrypt + send node), are ported faithfully
  from whatsmeow but unverified in-tree (no linked account in development).
  send_image and own-device fan-out are not wired yet. See docs/whatsapp.md.

Also in this snapshot: the terminal-screenshot tool (src/termshot/,
terminal_screenshot, docs/termshot.md, research/terminal-screenshot-rendering)
and a concurrent session's in-progress llm/muse failover changes carried along
in the shared files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-27 18:22:24 +01:00

15 lines
2.9 KiB
JSON

{
"noiseMode": "Noise_XX_25519_AESGCM_SHA256\u0000\u0000\u0000\u0000",
"noiseHeader": "57410603",
"ephemeralKeyPriv": "b8ef390533848c869ce3b4f9adfa8e96c4a7fed801358db38ad71dc030e0a55c",
"ephemeralKeyPub": "caf5622e3c1d1db8aff791b352dba84f4afce55e87eaa4d8b08fc7204dab377a",
"serverEphemeral": "6a9c63c9866ba67db354e88cfaac9950809959248796cea915f38036cefdbd56",
"serverStaticEnc": "d5cbb0d38ec4eeea5b51f4c48232e50a03702f1f4caf983fe70c4d34b3639c37831ca6ded9de78d074fd6c30fd13a309",
"serverPayloadEnc": "d19fc76bbfaed765b2bb3066e60c963a270fd2b103fb22ae04ab3ad4fae1a344ddd52c8371f16d33e61da3cfb5ad2d07a6592f8f39f76c7d96530c120bf456947ef443d8c3b679d8c7b0af9d7bcb09be1f4ec6866d738eac3ebdc5ee7f13fae9b5984e19753e98c847292d0d6e2f919f45c2be0c282de29903ae37fa05a43f8fd3daa021e1ca70411d7cdbf0439a5e0e09140c68ebd593e10c569d7d80bd2c6a69903d2c06aeb30d8f59de9876a80af1711bb0b81d94f01ec6af20457bd8153acede7de29396e851123970f298f0429ebd5e212e211c10c2898ea3da73aff6642d7d9d9d884509525d3d14307594648090a9817c5162accbf8131ff7fd190c4628",
"authStaticKeyPriv": "48dc3abe885821ca900cd2dbc04b89ddf4bb7f97a59db24b4897867abd694d64",
"authStaticKeyPub": "ddbfdecf73054216d4c385a22ad44558339cefe375dadbe89f4e9c5b6162bc1d",
"clientHelloFrameHex": "5741060300002412220a20caf5622e3c1d1db8aff791b352dba84f4afce55e87eaa4d8b08fc7204dab377a",
"serverHelloFrameHex": "00015b1ad8020a206a9c63c9866ba67db354e88cfaac9950809959248796cea915f38036cefdbd561230d5cbb0d38ec4eeea5b51f4c48232e50a03702f1f4caf983fe70c4d34b3639c37831ca6ded9de78d074fd6c30fd13a3091a8102d19fc76bbfaed765b2bb3066e60c963a270fd2b103fb22ae04ab3ad4fae1a344ddd52c8371f16d33e61da3cfb5ad2d07a6592f8f39f76c7d96530c120bf456947ef443d8c3b679d8c7b0af9d7bcb09be1f4ec6866d738eac3ebdc5ee7f13fae9b5984e19753e98c847292d0d6e2f919f45c2be0c282de29903ae37fa05a43f8fd3daa021e1ca70411d7cdbf0439a5e0e09140c68ebd593e10c569d7d80bd2c6a69903d2c06aeb30d8f59de9876a80af1711bb0b81d94f01ec6af20457bd8153acede7de29396e851123970f298f0429ebd5e212e211c10c2898ea3da73aff6642d7d9d9d884509525d3d14307594648090a9817c5162accbf8131ff7fd190c4628",
"clientFinishFrameHex": "00016d22ea020a302fb7b823866de378b62e29e8700882f179645058f79f37981dca794a08aef9e4532adb725e13ddbbde05152c06138cf712b5028ea319dd74e0bf961c0a02b5237ffc4b3ebe02e8b3538160efe65bd7f83c669333a38bad0ac06c0d769263d0dd8109e3b485d3aef3ef483e0094c35fd94d9e97b70884f60446c4ff7ef83ac57f92711a0ba304a639f49f2cf7a6de2e0fe9809c37b4aad0da9fd4ac6c7a3f6b5a6d24affd43ab3a7134178493464f753dbef81fade6b211741ba5a8ffd117771a9cd17e83a8b2004bd315659ac9a11c05cccb9704ded0ee22a7744d482704481c18a144006b1b752d3794a2f4cc27240142112734256dc2051106631865174b5272d9a8e564aeee18236a24b52a64582e1e5feb3cd2b6359b93631fea869304034bea811031a83535b94b1dc2eaecae357332c886db62864358897b7e26518ec00654fc088908a9d854e588b715bcfdaf0ffabe9d1c3c438e31325b5c31a603dcf7c8afbd52059799",
"transportKeysNote": "Transport keys derived inside TransportState closure; not directly accessible without deeper patching."
}