Text obfuscator.
Project description
Text Obfuscator
Obfuscate your message with Text Obfuscator
Installation
pip install -U textobfuscator
Usage
import random
from textobfuscator.obfuscator import TextObfuscator
# 1. Replace char.
# First, now we define rules: replace chars groups.
CHARS_GROUPS_SOURCE_MAP = (
["😯", "🤣"],
["❌", "✅"],
)
# 2. Format(Optional)
# Second, let's make some rules to fill the vars that we inserted.
FORMAT_PREFIX_RULES = {
"fake_name": lambda: random.choice(("John", "Min", "William")),
"random_weather": lambda: random.choice(("cloudy", "rainy", "sunny", "windy"))
}
obfuscator = TextObfuscator(
replace_source_map=CHARS_GROUPS_SOURCE_MAP,
format_prefix_rules=FORMAT_PREFIX_RULES,
)
Now we have an instance of TextObfuscator
: obfuscator
, let's do some obfuscations.
from textobfuscator.processor import BreakWord, ObfuscationConfig, Replace
# For each obfuscation, we may specify different rules, such as controls for different words or the number of substitutions, so we make rule here first.
BREAK_WORDS_RULES = [
# We break the word `hello` twice, and put `*` into the middle, like `h*el*lo`
BreakWord(word="hello", places=2, fill="*"),
# We break the word `world` once, and put `-` into the middle, like `wor-ld`
BreakWord(word="world", places=1, fill="-"),
]
OBFUSCATOR_CONFIG = ObfuscationConfig(
# During the entire obfuscation process, we only replace 1 times.
replaces=Replace(count=1),
break_words=BREAK_WORDS_RULES,
)
# OK, let's do the obfuscation.
>>> original1 = "hello world!"
>>> obfuscated = obfuscator.obfuscate(original1, config=OBFUSCATOR_CONFIG)
>>> print(obfuscated)
>>> h*ell*o wor-ld!
>>> original2 = "❌ hi {fake_name}, today's weather is {random_weather} 😯"
>>> obfuscated = obfuscator.obfuscate(original2, config=OBFUSCATOR_CONFIG)
>>> print(obfuscated)
>>> ❌ hi John, today's weather is windy 🤣
# Once more.
>>> obfuscated = obfuscator.obfuscate(original2, config=OBFUSCATOR_CONFIG)
>>> print(obfuscated)
>>> ✅ hi Min, today's weather is sunny 😯
Obfuscation Detail
- Split content into segments by every args position.
- Break words.
- Break words on each segment.
- Merge all segments and put back all key args in places.
- Replace.
- Temporarily remove all key args.
- Replace matching chars according to the given mapping table and config.
- Put back all key args that removed on above in places.
- Format.
- Merge the
pre-defined
key args and given key args. Herepre-defined
args means we can create custom var generation rules. For example, we can pass config like below to let all vars stars wthdigit
to autofill in with a real digit, and all vars starts withletter
to autofill in with a real letter. And the var with the same name will also be filled with the same value.# config # { # "digit": lambda: random.choice(string.digits), # "letter": lambda: random.choice(string.ascii_letters), # } # before >>> "{digit1} {digit2} {letter2} {digit2}" # after >>> 8 6 z 6
- Format and return the content. Put all args we get to the content, and keep those unknown args in original place.
- Merge the
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
TextObfuscator-0.1.2.tar.gz
(10.9 kB
view details)
Built Distribution
File details
Details for the file TextObfuscator-0.1.2.tar.gz
.
File metadata
- Download URL: TextObfuscator-0.1.2.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.8.7 Darwin/21.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cf23383966ddc09ec5d78a87a54bbb6ac96203e91002dc025210b6ccebeacaa |
|
MD5 | 0c117879dae8df7cf87503d2358aac9a |
|
BLAKE2b-256 | dcc700859d255e45ce1b921127aa48692114fdfd9c80d95958ddb10ec835daf7 |
File details
Details for the file TextObfuscator-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: TextObfuscator-0.1.2-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.8.7 Darwin/21.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d35ce7172872a51354baa2f7c43d1785665e0d739de4673a2e7f5074fb0d445b |
|
MD5 | b2398e1e5d78bd7cc4d68e06d4d13dcb |
|
BLAKE2b-256 | 528a31bea307355d05098e70b576a0555d1a1710e891d0ac624a76e919ba9c79 |