Expand description
Decoy traffic communication modes for flow obfuscation.
The runtime trait DecoyProvider (made object-safe via async-trait) drives the three
callbacks: start, feed_input, and feed_output. The construction trait
DecoyCommunicationMode extends it with new() and is the target of decoy_factory.
A DecoyFactory is a type-erased Arc<dyn Fn(…) -> Box<dyn DecoyProvider>> so that
different flows or users can hold different concrete provider types at runtime.
Use decoy_factory::<T, AE, DP>() to wrap a concrete type, or
random_decoy_factory() for the default behavior (random selection per invocation).
Structs§
- Derived
Value - Read-only,
Send + Sync, live projection of a [SharedValue]’s published value. - Heavy
Decoy Provider - Heavy mode implements sending large decoy packets at a low cadence (background-heartbeat shape).
- Noisy
Decoy Provider - Noisy mode implements sending smaller decoy packets in bursts often.
- Packet
Flags - Packet type flags for the tailer FG field. Normally only one flag should be set, but a health check packet can be embedded into a data packet (shadowride).
- Simple
Decoy Provider - Simple mode does not spawn any coroutines and does not send any packets.
- Smooth
Decoy Provider - Smooth mode implements sending few average decoy packets during quiet periods.
- Sparse
Decoy Provider - Sparse mode implements sending average decoy packets sparsely distributed in time.
- Tailer
- Tailer view (16 + TYPHOON_ID_LENGTH bytes total).
Zero-copy view into a
DynamicByteBuffercontaining tailer metadata. All field access reads directly from the underlying buffer.
Traits§
- Decoy
Communication Mode - Construction contract for decoy providers. Extends
DecoyProviderso that anyDecoyCommunicationModecan be stored asBox<dyn DecoyProvider>. - Decoy
Flow Sender - Object-safe interface used by decoy providers to dispatch generated packets.
Implemented explicitly by each flow manager —
ClientFlowManagerforwards to itsFlowManager::send_packet,ServerFlowManagerforwards to its inherentsend_packet. - Decoy
Provider - Object-safe runtime interface for decoy traffic. Used as
Arc<dyn DecoyProvider>in flow managers — no external lock wraps it, so implementations must manage their own mutable state via interior mutability (e.g.Arc<RwLock<_>>, as every built-in provider does). All async methods are boxed automatically byasync_trait. - Identity
Type
Functions§
- decoy_
factory - Lift a concrete
DecoyCommunicationModetype into aDecoyFactory. - random_
decoy_ factory - Factory that randomly selects one of the five built-in decoy providers per invocation,
weighted by the
DECOY_PROVIDER_WEIGHT_*settings.
Type Aliases§
- Decoy
Factory - A factory that constructs a
Box<dyn DecoyProvider>for a given identity source and flow manager.