Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/CasualX/obfstr
Compiletime string literal obfuscation for Rust.
https://github.com/CasualX/obfstr
Last synced: 7 days ago
JSON representation
Compiletime string literal obfuscation for Rust.
- Host: GitHub
- URL: https://github.com/CasualX/obfstr
- Owner: CasualX
- License: mit
- Created: 2019-02-04T23:28:58.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-06T16:31:03.000Z (about 1 month ago)
- Last Synced: 2024-10-31T11:27:26.892Z (10 days ago)
- Language: Rust
- Homepage:
- Size: 95.7 KB
- Stars: 463
- Watchers: 7
- Forks: 27
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license.txt
Awesome Lists containing this project
- awesome-rust-security - obfstr - string obfuscation for Rust (Offensive Security and Red Teaming / Packing, Obfuscation, Encryption, Anti-analysis)
README
String Obfuscation
==================[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![crates.io](https://img.shields.io/crates/v/obfstr.svg)](https://crates.io/crates/obfstr)
[![docs.rs](https://docs.rs/obfstr/badge.svg)](https://docs.rs/obfstr)
[![Build status](https://github.com/CasualX/obfstr/workflows/CI/badge.svg)](https://github.com/CasualX/obfstr/actions)Compiletime string constant obfuscation for Rust.
The string constant itself is embedded in obfuscated form and deobfuscated locally.
This reference to a temporary value must be used in the same statement it was generated.
See the documentation for more advanced use cases.Looking for obfuscating formatting strings? See `fmtools` ([github](https://github.com/CasualX/fmtools), [crates.io](https://crates.io/crates/fmtools), [docs.rs](https://docs.rs/fmtools/0.1.2/fmtools/)) with the optional dependency `obfstr` enabled to automatically apply string obfuscation to formatting strings.
Examples
--------The `obfstr!` macro returns the deobfuscated string as a temporary value:
```rust
use obfstr::obfstr as s;
assert_eq!(s!("Hello 🌍"), "Hello 🌍");
```The `wide!` macro provides compiletime utf16 string constants:
```rust
let expected = &['W' as u16, 'i' as u16, 'd' as u16, 'e' as u16, 0];
assert_eq!(obfstr::wide!("Wide\0"), expected);
```The `random!` macro provides compiletime random values:
```rust
const RND: i32 = obfstr::random!(u8) as i32;
assert!(RND >= 0 && RND <= 255);
```Compiletime random values are based on `file!()`, `line!()`, `column!()` and a fixed seed to ensure reproducibility.
This fixed seed is stored as text in the environment variable `OBFSTR_SEED` and can be changed as desired.License
-------Licensed under [MIT License](https://opensource.org/licenses/MIT), see [license.txt](license.txt).
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.