Skip to main content

DirtyText

Searches for [ab]using of Unicode glyphs.

Installation

DirtyText package can be installed through pip :snake: :

$ pip install dirtytext

or downloaded from GitHub.

Quick tour:

Common options:

  • Read from file: -f <filename>
  • Save modified text: -s <file>
  • Text filter: --filter
  • Pipeline mode: -p

:mag_right: Looks for ZERO-WIDTH characters:

$> echo "This text‌‌‌‌‍‌‬‌‌‌‌‌‍‬‍‍ ‌‌‌‌‍‬‌contains‌‌‌‌‍‬‌‌‌‌‌‍‬‌‌‌‌‌‬‌‌‌‌‌‌‍‍‍‌‌‌‌‍‬ ‌‌‌‌‍‌‬‌‌‌‌‍‬‌zero-width‌‌‌‌‍‬‍‌ chars" | dirtytext --zero -v

will produce the following output:

Contains zero-width characters: True
JSON:    
[{"idx": 0, "char": "\ufeff", "cval": "FEFF", "infos": null}, 
{"idx": 10, "char": "\u200c", "cval": "200C", "infos": null}, 
{"idx": 11, "char": "\u200c", "cval": "200C", "infos": null}, ...]

:mag_right: Looks for CONFUSABLES characters:

$> echo "hello" | dirtytext --confusables greek -v

will produce the following output:

Contains confusables characters: True
JSON:
[{"idx": 2, "char": "l", "cval": "006C", "infos": [{"target": "0399", "description": "GREEK CAPITAL LETTER IOTA"}]}, 
{"idx": 3, "char": "l", "cval": "006C", "infos": [{"target": "0399", "description": "GREEK CAPITAL LETTER IOTA"}]}, 
{"idx": 4, "char": "o", "cval": "006F", "infos": [{"target": "03BF", "description": "GREEK SMALL LETTER OMICRON"}, 
{"target": "03C3", "description": "GREEK SMALL LETTER SIGMA"}]}]

:mag_right: Looks and filter anomalies in LATIN text:

example.txt:

It ⅽan be argueⅾ that the ⅽomputer ⅰs humanⅰty’s attempt to repⅼⅰⅽate the human brain.
This ⅰs perhaps an unattainable goal. 
However, unattainable goals often lead to outstanding accomplishment.
$> dirtytext -f example.txt --lsubs --filter -s out.txt
out.txt:

It can be argued that the computer is humanity’s attempt to replicate the human brain.
This is perhaps an unattainable goal. 
However, unattainable goals often lead to outstanding accomplishment.

UnicodeDB

The unicode data that composes dirtytext database are extracted from unicode consortium, in particular there are two database files into dirtytext/data directory:

  • categories.json: built from data extracted from here
  • confusables.json: built from data extracted from here

If dirtytext/data doesn't exist, DT downloads and build database before performing the required operations, after which you can force the database update by adding the --update option

License

Released under GPL-3.0

Metadata

Release files for dirtytext 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dirtytext 1.0.0
File Size Uploaded
dirtytext-1.0.0.tar.gz 111.4 kB Details

Release files / dirtytext-1.0.0.tar.gz

Download URL dirtytext-1.0.0.tar.gz
Size 111.4 kB
Tags Source
SHA-256 checksum
How to use checksums
559b2f0d04890070230639352d0eb40c64eb8bbf125a408bda6fc521ce91e3a6
BLAKE2b-256 checksum
How to use checksums
e0e6776b07af3b3d0c61765f0d8a8a9c139e984310c061d7687ac13ea5710cf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page