-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
60fad10
commit 0e09a55
Showing
5 changed files
with
75 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
[package] | ||
edition = "2018" | ||
name = "resynth" | ||
version = "0.1.2" | ||
version = "0.1.3" | ||
description = "A packet synthesis language" | ||
authors = ["Gianni Tedesco <[email protected]>"] | ||
license = "GPL-3.0-only" | ||
|
@@ -44,9 +44,22 @@ lto = true | |
[dependencies] | ||
pkt = { path = "pkt", version = "0.1.1" } | ||
ezpkt = { path = "ezpkt", version = "0.1.1" } | ||
|
||
lazy-regex = "2.2.2" | ||
regex = "1.5.4" | ||
phf = { version = "0.10.1", features = ["macros"] } | ||
clap = "3.0.0" | ||
atty = "0.2.14" | ||
termcolor = "1.1.2" | ||
|
||
clap = {version = "3.0.0", optional = true} | ||
atty = {version = "0.2.14", optional = true} | ||
termcolor = {version = "1.1.2", optional = true} | ||
|
||
[[bin]] | ||
name = "resynth" | ||
path = "src/cli.rs" | ||
required-features = ["cli"] | ||
|
||
[features] | ||
default = [ | ||
"cli", | ||
] | ||
cli = ["clap", "atty", "termcolor"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
[package] | ||
edition = "2018" | ||
name = "ezpkt" | ||
version = "0.1.2" | ||
version = "0.1.3" | ||
description = "A packet construction library" | ||
authors = ["Gianni Tedesco <[email protected]>"] | ||
license = "GPL-3.0-only" | ||
|
@@ -25,4 +25,4 @@ include = [ | |
] | ||
|
||
[dependencies] | ||
pkt = { path = "../pkt", version = "0.1.2" } | ||
pkt = { path = "../pkt", version = "0.1.3" } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
[package] | ||
edition = "2018" | ||
name = "pkt" | ||
version = "0.1.2" | ||
version = "0.1.3" | ||
description = "A packet construction library" | ||
authors = ["Gianni Tedesco <[email protected]>"] | ||
license = "GPL-3.0-only" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
//! # Resynth: A Packet Synthesis Language | ||
//! | ||
//! Resynth is a packet synthesis language. It produces network traffic (in the form of pcap files) | ||
//! from textual descriptions of traffic. It enables version-controlled packets-as-code workflows | ||
//! which can be useful for various packet processing, or security research applications such as | ||
//! DPI engines, or network intrusion detection systems. | ||
//! | ||
//! ## Structure of the Codebase | ||
//! The codebase is split in to several major components | ||
//! - [pkt] A low-level packet generation library which mostly contains structs and consts | ||
//! to do with various network protocols. | ||
//! - [ezpkt] A more high-level packet generation library which provides abstractions around | ||
//! concepts such as flows | ||
//! - [crate] The language compiler and interpreter itself is the root of the crate. In future we | ||
//! will probably move in to its own module at some point in future. | ||
//! - [crate::stdlib] Contains the resynth standard library which is mostly glue to allow resynth | ||
//! programs to use the functionality in [pkt] and [ezpkt] | ||
//! | ||
//! ## Compiler Phases | ||
//! 1. [Lexer] uses a static regex to parse each line in to a stream of tokens | ||
//! 2. [Parser] is a hand-written LR-parser which takes a token at a time and whenever a complete | ||
//! [statement](Stmt) is encountered, the [statement](Stmt) is pushed in to a | ||
//! [results vector](Parser::get_results) which can later be [retreived](Parser::get_results) | ||
//! 3. [Program] maintains the execution state of any given program. It takes one statement at a | ||
//! time, and updates the program state based on that. If the program has a [pkt::PcapWriter] | ||
//! attached to it, then any generated packets will be written in to the corresponding pcap file | ||
//! as they are generated. | ||
#[macro_use] | ||
mod macros; | ||
mod err; | ||
mod lex; | ||
mod parse; | ||
mod program; | ||
mod val; | ||
mod libapi; | ||
mod str; | ||
mod object; | ||
mod args; | ||
mod sym; | ||
mod traits; | ||
mod loc; | ||
|
||
pub mod stdlib; | ||
|
||
#[cfg(test)] | ||
mod test; | ||
|
||
pub use err::Error; | ||
pub use loc::Loc; | ||
pub use lex::{Lexer, EOF, Token}; | ||
pub use parse::{Parser, Stmt}; | ||
pub use program::Program; |