Skip to content

Add PigSync responder and encrypted PigChat - #60

Open
gooberhimself wants to merge 44 commits into
0ct0sec:mainfrom
gooberhimself:pigsync-server-pig-patches
Open

Add PigSync responder and encrypted PigChat#60
gooberhimself wants to merge 44 commits into
0ct0sec:mainfrom
gooberhimself:pigsync-server-pig-patches

Conversation

@gooberhimself

Copy link
Copy Markdown

Summary

Adds two communication modes for Cardputer devices:

  • SIRLOIN: a minimal responder for the existing PigSync client
  • PIGCHAT: encrypted peer-to-peer ESP-NOW messaging

PigSync responder

  • Responds to discovery
  • Performs HELLO/READY channel negotiation
  • Establishes encrypted ESP-NOW sessions
  • Handles count, bounty, time-sync, purge, abort, and disconnect commands
  • Currently reports zero captures; SD-backed capture transfer is not implemented yet

PigChat

  • Symmetric peer discovery on channel 1
  • Callsign support
  • Encrypted one-to-one sessions
  • Messages up to 96 characters
  • Delivery acknowledgements
  • Bounded receive queue and message history
  • Clean disconnect and radio teardown

Testing

Tested on two M5Stack Cardputer ADV devices.

  • PigSync discovery and encrypted connection work
  • PigSync performs the expected zero-capture goodbye
  • PigChat discovery, connection, message exchange, and delivery acknowledgements work
  • pio run -e m5cardputer succeeds

Base

Built from pig-patches commit 9f0b3ac.

0ct0sec and others added 14 commits February 20, 2026 16:07
network_recon: newNetworkCallback not atomic, ghost on core 1
gps: tz single-wrap breaks on extreme offsets, now it doesn't
config: personality traits and MLCollectionMode loaded unclamped from json
wigle/wpasec: fd leak when scan exits on pendingCount==16
xfer_server: absolute path escape /etc/passwd style, now blocked
spectrum: rsn pairwise/akm count * 4 wraps uint16, kills pmf detect
bacon: bssid null before memcmp, boom
warhog: bountySeenTotal % 0 kills pig after 4B networks. scanInProgress needs volatile
do_no_ham: dwellResolved needs volatile, eapol mic zero on short frame corrupts hash
xp: pendingSaveFlag outside achQueueMutex in both unlock paths
…x, bssid null

config: clamp mood lower bound (-100) to match the -100..100 spec
xp: setUnlockable now does the bitset inside the mutex (was racing with save/hasUnlockable)
network_recon: rsn pairwise/akm skip uses uint32 intermediate same as spectrum fix
bacon: null-check bssid on second WiFi.BSSID call (post-loop, could race scan buffer)
@gooberhimself
gooberhimself force-pushed the pigsync-server-pig-patches branch from 5ad40c1 to 0e3d2b4 Compare August 16, 2026 01:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants