MCPcopy Index your code
hub / github.com/CasualX/obfstr

github.com/CasualX/obfstr @v0.4.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.5 ↗ · + Follow
69 symbols 97 edges 10 files 6 documented · 9% updated 8d ago★ 608
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

String Obfuscation

MIT License crates.io docs.rs Build status

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, crates.io, docs.rs) 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:

use obfstr::obfstr as s;
assert_eq!(s!("Hello 🌍"), "Hello 🌍");

The wide! macro provides compiletime utf16 string constants:

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:

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, see 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.

Core symbols most depended-on inside this repo

t
called by 64
src/lib.rs
splitmix
called by 8
src/lib.rs
mix32
called by 3
src/cfo.rs
non_zero
called by 3
src/xref.rs
print
called by 3
examples/obfuscation.rs
max
called by 2
src/pos.rs
hash
called by 2
src/lib.rs
next_round
called by 2
src/words.rs

Shape

Function 62
Method 5
Class 1
Enum 1

Languages

Rust100%

Modules by API surface

src/bytes.rs11 symbols
src/xref.rs9 symbols
src/words.rs8 symbols
src/lib.rs8 symbols
src/wide.rs7 symbols
examples/stringify.rs7 symbols
src/pos.rs6 symbols
src/cfo.rs5 symbols
examples/obfuscation.rs5 symbols
src/murmur3.rs3 symbols

For agents

$ claude mcp add obfstr \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact