From 466504002e243b725d8404aa5449ab86ada167de Mon Sep 17 00:00:00 2001 From: Jack Wampler Date: Sat, 21 Sep 2024 10:43:35 -0600 Subject: [PATCH] Obfs4 alpha release (#66) obfs4 alpha release almost MVP - still missing some timing / delay features --- README.md | 3 ++- crates/lyrebird/Cargo.toml | 2 +- crates/obfs4/Cargo.toml | 11 +++-------- crates/obfs4/README.md | 2 +- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 71de48f..6ac04cb 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,9 @@ lyrebird binary, and Pluggable Transports in Rust (PTRS) library. | Crate | Description | Crates.io | Docs | MSRV | -------------------------------------------|----------------|-----------|------|------| | [`ptrs`](./crates/ptrs) | A library supporting implementation and integration of Pluggable Transport protocols. | [![](https://img.shields.io/crates/v/ptrs.svg)](https://crates.io/crates/ptrs) | [![](https://img.shields.io/docsrs/ptrs)](https://docs.rs/ptrs) | 1.70 | -| [`lyrebird`](./crates/lyrebird) | Implementation of the `Lyrebird` Tor bridge and a forward proxy compatible with `ptrs`. | [![](https://img.shields.io/crates/v/lyrebird.svg)](https://crates.io/crates/lyrebird) | [![](https://docs.rs/lyrebird/badge.svg)](https://docs.rs/lyrebird) | 1.75 | +| [`lyrebird`](./crates/lyrebird) | Implementation of the `Lyrebird` Tor bridge and a forward proxy compatible with `ptrs`. | [![](https://img.shields.io/crates/v/___lyrebird.svg)](https://crates.io/crates/___lyrebird) | [![](https://docs.rs/___lyrebird/badge.svg)](https://docs.rs/___lyrebird) | 1.75 | | [`obfs4`](./crates/obfs4) | An implementation of obfs4 pluggable transport library in pure rust. | [![](https://img.shields.io/crates/v/obfs4.svg)](https://crates.io/crates/obfs4) | [![](https://docs.rs/obfs4/badge.svg)](https://docs.rs/obfs4) | 1.75 | +| [`o5`](./crates/o5) | An implementation of o5 pluggable transport library in pure rust. | [![](https://img.shields.io/crates/v/o5.svg)](https://crates.io/crates/o5) | [![](https://docs.rs/o5/badge.svg)](https://docs.rs/o5) | 1.75 | ## MSRV diff --git a/crates/lyrebird/Cargo.toml b/crates/lyrebird/Cargo.toml index eec093b..5e956fe 100644 --- a/crates/lyrebird/Cargo.toml +++ b/crates/lyrebird/Cargo.toml @@ -29,7 +29,7 @@ bench = false [dependencies] ## internal crates ptrs = { path="../ptrs", version="0.1.0" } -obfs4 = { path="../obfs4", version="0.1.0" } +obfs4 = { path="../obfs4", version="0.1.0-alpha.1" } # shared deps diff --git a/crates/obfs4/Cargo.toml b/crates/obfs4/Cargo.toml index ef59b93..62884e8 100644 --- a/crates/obfs4/Cargo.toml +++ b/crates/obfs4/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "obfs4" -version = "0.1.0" +version = "0.1.0-alpha.1" edition = "2021" authors = ["Jack Wampler "] -rust-version = "1.70" +rust-version = "1.75" license = "MIT OR Apache-2.0" description = "Pure rust implementation of the obfs4 pluggable transport" -keywords = ["tor", "censorship", "pluggable", "transports"] +keywords = ["tor", "networking", "censorship", "circumvention", "pluggable", "transports"] categories = ["network-programming", "cryptography"] repository = "https://github.com/jmwample/ptrs" @@ -22,7 +22,6 @@ crate-type = ["cdylib", "rlib"] ## Local ptrs = { path="../ptrs", version="0.1.0" } - ## PRNG getrandom = "0.2.11" rand = { version="0.8.5", features=["getrandom"]} @@ -86,10 +85,6 @@ tor-basic-utils = "0.22.0" # benches # criterion = "0.5" -# # o5 pqc test -# pqc_kyber = {version="0.7.1", features=["kyber1024", "std"]} -# ml-kem = "0.1.0" - [lints.rust] # unexpected_cfgs are used to disable incomplete / WIP features and tests. This is # not an error for this library. This turns off that specific lint for the "disable" feature. diff --git a/crates/obfs4/README.md b/crates/obfs4/README.md index c4675d6..1f09a0a 100644 --- a/crates/obfs4/README.md +++ b/crates/obfs4/README.md @@ -74,9 +74,9 @@ use ptrs::{ServerBuilder, ServerTransport}; ### Loose Ends: - [X] server / client compatibility test go-to-rust and rust-to-go. +- [X] double check the bit randomization and clearing for high two bits in the `dalek` representative - [ ] length distribution things - [ ] iat mode handling -- [ ] double check the bit randomization and clearing for high two bits in the `dalek` representative ## Performance