Skip to main content

unicode_variations

Function unicode_variations 

Source
pub fn unicode_variations(input: &str) -> String
Expand description

Replaces characters with random Unicode variations.

Substitutes common letters with accented or modified Unicode variants. For example, ‘a’ might become ‘à’, ‘á’, ‘â’, ‘ã’, or ‘ä’. This creates visually similar text that can bypass simple string matching while testing Unicode normalization and internationalization handling.

§Use Cases

  • Red Team: Bypass keyword filters with Unicode lookalikes
  • Blue Team: Test Unicode normalization in security controls
  • i18n Testing: Verify internationalized text handling
  • Content Filters: Test accent-insensitive matching

§Examples

use redstr::unicode_variations;

let result = unicode_variations("admin");
// Example output: "ädmïn" or "àdmîn" or "ádmįn" (varies each run)
assert_eq!(result.chars().count(), 5);

// Bypass keyword filters
let word = unicode_variations("password");
// Example: "pässwörd" or "pàsswôrd"

// Test Unicode normalization
let email = unicode_variations("user@example.com");
// Example: "ûsér@ëxämplè.çöm"