fosr

Crates.iofosr
lib.rsfosr
version0.1.1
created_at2025-01-08 09:11:04.764829+00
updated_at2025-07-24 13:00:05.386072+00
descriptionFos-R (Forger Of Security Records) is a synthetic network traffic generator.
homepagehttps://pfgimenez.fr/fosr/
repositoryhttps://gitlab.inria.fr/pirat-public/Fos-R
max_upload_size
id1508341
size13,480,047
Pierre-François Gimenez (PFGimenez)

documentation

README

pipeline status Latest Release

Fos-R is a network traffic generator based on AI models. It does not require GPU and can generate in the order of Gbps of network traffic with a laptop.

Setup

Install Rust, preferably with rustup.rs.

Then, you can install Fos-R with:

$ cargo install fosr

Then, you can check the install with:

$ fosr

If you want Fos-R to use the network, you must execute it as root/administrator.

Generation modes

Two generation modes are available.

Create-pcap

In this mode, Fos-R output a pcap file generated with the AI models.

Usage: fosr create-pcap [OPTIONS] <--duration <DURATION>|--packets-count <PACKETS_COUNT>>

Options:
  -o, --outfile <OUTFILE>              Output pcap file for synthetic network packets [default: output.pcap]
      --minimum-threads                Use as few threads as possible
  -n, --packets-count <PACKETS_COUNT>  Minimum number of packets to generate. Generation is not deterministic.
  -d, --duration <DURATION>            Minimum pcap traffic duration described in human-friendly time, such as "15days 30min 5s". Generation is deterministic when used with --order-pcap.
  -t, --start-time <START_TIME>        Beginning time of the pcap in RFC3339 style ("2025-05-01 10:28:07") or a Unix timestamp. By default, use current time
      --order-pcap                     Reorder temporally the generated pcap. Must fit the entire dataset in RAM.
  -s, --seed <SEED>                    Seed for random number generation
  -u, --cpu-usage                      Show CPU usage per thread
  -p, --profile <PROFILE>              Path to the profile with the models and the configuration
  -h, --help                           Print help

Network injection

In this mode, Fos-R generates and play network traffic between different computers in the same network. Fos-R needs to be executed on each computer and provided a configuration file.

Usage: fosr inject [OPTIONS]

Options:
  -o, --outfile <OUTFILE>
          Output pcap file of generated packets
  -t, --taint
          Taint the packets to easily identify them
  -s, --seed <SEED>
          Seed for random number generation
  -u, --cpu-usage
          Show CPU usage per thread
  -f, --flow-per-second <FLOW_PER_SECOND>
          Overall number of flows to generate per second [default: 10]
  -p, --profile <PROFILE>
          Path to the profile with the models and the configuration
  -h, --help
          Print help

Roadmap

v0.2 - Q2 2025 - "Usability"

  • Documentation and API
  • User interface
  • Performance and binary size

v0.3 - Q3 2025 - "Portability"

  • Windows version
  • WASM version (pcap creation only)

v0.4 - Q4 2025 - "Quality"

  • Generation quality
  • High quality default models

v0.5 - Q1 2026 - "Transferability"

  • Concept drift mode
  • Transfer learning

Technical description

The generation is organized in four stages.

Stage 0: timestamp generation

This steps selects the starting point of the next flow to generate.

Stage 1: netflow generation

This step in based on the FlowChronicle tool. Using as input the set of learned patterns,it generates new netflow records by first sampling patterns and then sampling non-fixed values inside these patterns.

Stage 2: intermediate representation generation

This step is based on the TADAM tool. Using the flows generated by stage 1, it creates a list of PacketsIR, where T is a transport protocol. Each PacketsIR corresponds to a flow between two IP addresses. This structure contains the original flow (generated by stage 1) with the metadata of the flow. There is also a vector packets_info that contains some information about the packet header: packet direction (forward or backward), payload size and type, timestamp, and TCP flags when the transport protocol is TCP.

Stage 3: packet generation

Stage 3 creates a list of complete packets by completing the information given by the output of stage 2.

Stage 4 (optional): send and receive packets on the network

Stage 4 relies on raw sockets to send and receive the packets generated by stage 3.

Commit count: 0

cargo fmt