No description
  • Scheme 99.8%
  • Shell 0.1%
Find a file
2026-07-30 15:39:34 -06:00
.builds ci: set umask 022 in package/verify tasks too (jerbuild creates group-writable cache dirs during pkg operations) 2026-07-22 13:11:00 -06:00
.jerboa Resolve security audit findings 2026-07-11 17:29:30 -06:00
dissectors fix(security): reject negative offsets/lengths in read helpers; fail closed on bad pcap magic 2026-07-21 18:17:24 -06:00
docs test(security): negative regressions for recursion, filter nesting, negative bounds 2026-07-21 18:17:36 -06:00
examples Advance Jerboa epan parity 2026-05-19 15:40:45 -06:00
generated/epan Track generated epan dissector forms 2026-05-19 16:14:33 -06:00
lib build: convert raw-Chez .sls library source to src/ .ss with generated .sls wrappers 2026-07-24 12:04:20 -06:00
native Security hardening and release readiness 2026-06-23 10:52:03 -06:00
qt Resolve security audit findings 2026-07-11 17:29:30 -06:00
scripts Resolve security audit findings 2026-07-11 17:29:30 -06:00
src/std build: convert raw-Chez .sls library source to src/ .ss with generated .sls wrappers 2026-07-24 12:04:20 -06:00
support build: convert raw-Chez .sls library source to src/ .ss with generated .sls wrappers 2026-07-24 12:04:20 -06:00
tools test(security): negative regressions for recursion, filter nesting, negative bounds 2026-07-21 18:17:36 -06:00
.gitignore jpkg: complete binary package setup 2026-07-30 15:25:41 -06:00
.gitsafe.json Add Wireshark sync watch 2026-05-19 16:53:41 -06:00
.jerbuild Resolve security audit findings 2026-07-11 17:29:30 -06:00
AGENTS.md updates 2026-07-30 13:23:20 -06:00
build-wafter-macos.sh build: resolve SCHEME from $(JERBOA_HOME)/.chez/bin/scheme 2026-05-15 12:02:46 -06:00
build-wafter-macos.ss Security hardening and release readiness 2026-06-23 10:52:03 -06:00
build-wafter-musl.sh build: resolve SCHEME from $(JERBOA_HOME)/.chez/bin/scheme 2026-05-15 12:02:46 -06:00
build-wafter-musl.ss Security hardening and release readiness 2026-06-23 10:52:03 -06:00
build.ss Resolve security audit findings 2026-07-11 17:29:30 -06:00
check.ss perf(reassembly): binary-search sorted fragment insert with O(1) overlap check 2026-07-22 15:58:33 -06:00
conversion-dashboard.md add jerbuild 2026-05-27 18:50:23 -06:00
conversion-status.json add jerbuild 2026-05-27 18:50:23 -06:00
demo-dissect.ss Advance Jerboa epan parity 2026-05-19 15:40:45 -06:00
demo-pipeline.ss Advance Jerboa epan parity 2026-05-19 15:40:45 -06:00
demo-standalone.ss Advance Jerboa epan parity 2026-05-19 15:40:45 -06:00
dependency-lock.tsv jpkg: complete binary package setup 2026-07-30 15:25:41 -06:00
DIRECTORY_STRUCTURE.md Advance Jerboa epan parity 2026-05-19 15:40:45 -06:00
Dockerfile Resolve security audit findings 2026-07-11 17:29:30 -06:00
jerboa.pkg Add Phase 3 foundation: Dissection Engine (lib/dissector/engine.ss) 2026-04-12 16:32:20 -06:00
JERBOA_CONVENTION.md Advance Jerboa epan parity 2026-05-19 15:40:45 -06:00
JERBOA_ONLY.md Emphasize: Jerboa-only project (.ss files, never .sls) 2026-04-12 16:20:03 -06:00
jpkg.lock jpkg: complete binary package setup 2026-07-30 15:25:41 -06:00
jpkg.policy.sexp jpkg: complete binary package setup 2026-07-30 15:25:41 -06:00
jpkg.sexp jpkg: complete binary package setup 2026-07-30 15:25:41 -06:00
LICENSE Switch to MIT license 2026-07-21 13:42:21 -06:00
Makefile build: convert raw-Chez .sls library source to src/ .ss with generated .sls wrappers 2026-07-24 12:04:20 -06:00
PLAN.md Phase 7: Rename to wafter-musl, implement full static binary build pipeline 2026-04-12 17:59:30 -06:00
README.md Resolve security audit findings 2026-07-11 17:29:30 -06:00
SECURITY.md Resolve security audit findings 2026-07-11 17:29:30 -06:00
STATUS.md Advance Jerboa epan parity 2026-05-19 15:40:45 -06:00
test-create-pcap.ss Fix all 12 dissectors: remove null byte corruption, fix paren balance, use correct Jerboa idioms 2026-04-12 18:15:40 -06:00
test-packets.pcap Fix all 12 dissectors: remove null byte corruption, fix paren balance, use correct Jerboa idioms 2026-04-12 18:15:40 -06:00
test-phase2.ss Phase 5.6: Protocol Registry & Discovery Rules 2026-04-12 17:11:08 -06:00
wafter-qt.ss Resolve security audit findings 2026-07-11 17:29:30 -06:00
wireshark-sync-baseline.txt Resolve security audit findings 2026-07-11 17:29:30 -06:00
wireshark-sync.json Add Wireshark sync watch 2026-05-19 16:53:41 -06:00
wireshark-sync.md Add Wireshark sync watch 2026-05-19 16:53:41 -06:00

jerboa-wafter

Safe packet dissection and Wireshark-style analysis in Jerboa Scheme

jerboa-wafter is a Jerboa implementation of the useful parts of Wireshark's epan model: capture readers, safe tvb-style field parsing, dissector tables, heuristics, display filters, export formats, stream analysis, and generated field inventories. Protocol decoding is Jerboa data and Jerboa code, not C dissectors.

Quick Start

cd ~/mine/jerboa-wafter
make help
make build
make check
make test
make verify
make release-evidence

./wafter -r test-packets.pcap -T json -c 5

Important

Dissectors should be Jerboa. Native code is limited to packaging, optional live capture FFI, the Qt UI shim, and Jerboa's guaranteed-linear regex backend. Do not add C protocol dissectors.

Production Wafter contains neither a network eval REPL nor runtime dissector source evaluation. New dissectors are reviewed, compiled release inputs. Display-filter matches expressions use the locked native linear-time engine; unsupported backtracking-only syntax fails closed.

Capture materialization is bounded cumulatively across file/compressed bytes, expanded bytes and ratio, packets, payload, pcapng blocks, interfaces, options, name records, secret metadata, and parsing time. Budget exhaustion is an explicit error rather than a silent partial result.

Structure

  • docs/ARCHITECTURE.md - current epan-equivalent runtime design.
  • docs/threat-model.md - hostile-input parser threat model.
  • docs/security-hardening.md - parser, FFI, generated-source, and REPL policy.
  • docs/release-evidence.md - production release gate and remaining blockers.
  • docs/PORTING.md - Wireshark-to-Jerboa porting workflow.
  • docs/API.md - stable module API reference for contributors.
  • conversion-dashboard.md - generated readiness and coverage report.
  • lib/epan/ - active epan-equivalent runtime.
  • tools/wafter.ss - Wireshark/tshark-style CLI and TUI behavior.
  • generated/epan/ - tracked generated field inventories for all top-level Wireshark packet-*.c files.
  • dissectors/ - older/generated Jerboa dissector corpus and compatibility material.

Philosophy

  1. Safe by default: All buffer access is bounds-checked. No unsafe code, ever.
  2. Declarative: Define protocols as Scheme s-expressions, not imperative C.
  3. Composable: Protocols nest naturally; dissectors chain automatically.
  4. Honest about TLS: No plaintext inspection of encrypted traffic; extract metadata instead.
  5. High performance: Leverage Chez Scheme's native compilation.

Current Status

The project has working pcap/pcapng reading, a Jerboa epan runtime, generated forms for the Wireshark dissector tree, semantic core protocols, many shallow classifiers, parity/corpus smoke tests, deterministic fuzz smoke, static build scripts, and TUI/export commands. See STATUS.md and conversion-dashboard.md for the current coverage picture.

make verify currently covers the exact Jerboa runtime lock, cumulative-budget and regex/eval adversarial regressions, static security checks, import checks, module build checks, corpus/parity/golden/fuzz smoke tests, and both native Rust lock audits. make release-evidence records those results, SBOM metadata, repeated-build reproducibility status, and explicit parser soak status under dist/release-evidence/.

Contributing

Start with docs/PORTING.md. New semantic protocol work should include capture coverage, parity expectations where possible, and make conversion-status.

References

  • Wireshark source: ~/mine/wireshark/
  • libepan protocol definitions: ~/mine/wireshark/epan/dissectors/
  • Original Fournier work: See git history in ~/mine/wireshark