Skip to main content

Detect confusable usage of unicode homoglyphs, prevent homograph attacks.

Project description

confusable_homoglyphs [doc]

https://img.shields.io/travis/vhf/confusable_homoglyphs.svg https://img.shields.io/pypi/v/confusable_homoglyphs.svg Documentation Status

a homoglyph is one of two or more graphemes, characters, or glyphs with shapes that appear identical or very similar wikipedia:Homoglyph

Unicode homoglyphs can be a nuisance on the web. Your most popular client, AlaskaJazz, might be upset to be impersonated by a trickster who deliberately chose the username ΑlaskaJazz.

  • AlaskaJazz is single script: only Latin characters.

  • ΑlaskaJazz is mixed-script: the first character is a greek letter.

You might also want to avoid people being tricked into entering their password on www.microsоft.com or www.faϲebook.com instead of www.microsoft.com or www.facebook.com. Here is a utility to play with these confusable homoglyphs.

Not all mixed-script strings have to be ruled out though, you could only exclude mixed-script strings containing characters that might be confused with a character from some unicode blocks of your choosing.

  • Allo and ρττ are fine: single script.

  • AlloΓ is fine when our preferred script alias is ‘latin’: mixed script, but Γ is not confusable.

  • Alloρ is dangerous: mixed script and ρ could be confused with p.

This library is compatible Python 2 and Python 3.

API documentation

Is the data up to date?

Yep.

The unicode blocks aliases and names for each character are extracted from this file provided by the unicode consortium.

The matrix of which character can be confused with which other characters is built using this file provided by the unicode consortium.

This data is stored in two JSON files: categories.json and confusables.json. If you delete them, they will both be recreated by downloading and parsing the two abovementioned files and stored as JSON files again.

History

1.0.0

Initial release.

2.0.0

  • allowed_categories renamed to allowed_aliases

2.0.1

3.0.0

Courtesy of Ryan P Kilby, via https://github.com/vhf/confusable_homoglyphs/pull/6 :

  • Changed file paths to be relative to the confusable_homoglyphs package directory instead of the user’s current working directory.

  • Data files are now distributed with the packaging.

  • Fixes tests so that they use the installed distribution instead of the local files. (Originally, the data files were erroneously showing up during testing, despite not being included in the distribution).

  • Moves the data file generation into a simple CLI. This way, users have a method for controlling when the data files are updated.

  • Since the data files are now included in the distribution, the CLI is made optional. Its dependencies can be installed with the cli bundle, eg. pip install confusable_homoglyphs[cli].

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

confusable_homoglyphs-3.2.0.tar.gz (161.9 kB view details)

Uploaded Source

Built Distribution

confusable_homoglyphs-3.2.0-py2.py3-none-any.whl (141.2 kB view details)

Uploaded Python 2Python 3

File details

Details for the file confusable_homoglyphs-3.2.0.tar.gz.

File metadata

  • Download URL: confusable_homoglyphs-3.2.0.tar.gz
  • Upload date:
  • Size: 161.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for confusable_homoglyphs-3.2.0.tar.gz
Algorithm Hash digest
SHA256 3b4a0d9fa510669498820c91a0bfc0c327568cecec90648cf3819d4a6fc6a751
MD5 e8f03a9076c079f2d304db3a9848b709
BLAKE2b-256 62550aac1a100d755987e62c12367724b33419ed15921c6a915dc257c886ceff

See more details on using hashes here.

File details

Details for the file confusable_homoglyphs-3.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for confusable_homoglyphs-3.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e3ce611028d882b74a5faa69e3cbb5bd4dcd9f69936da6e73d33eda42c917944
MD5 eff03a1e88ff8583f7c7ef896922481d
BLAKE2b-256 a438aadd1c42ae353943cd1523cdd38ffb267ba95861b4e8bb1a559d975ae612

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page