Normalize IDNA domains in homograph attacks to equivalent ASCII domain names.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitattributes
LICENSE
README.md
example.js
normalize.js
package.json

README.md

idna-normalize

Developed by blurpesec of MyCrypto for use on classification of homograph attacks tracked by https://etherscamdb.info.

To run:
const IDNANormalizer = require('idna-normalize')

const domainnormalize = new IDNANormalizer()

const normalizeddomain = domainnormalize.normalize('mycrỵpto.com')
console.log(normalizeddomain)
/* 
	Output is a string of the same length as the input string. 
	Only pass in idna strings. 
	If the IDNA character does not resemble an ASCII character,  it is left in the string.
*/
Handled characters:
_: [_], 
-: [-], 
.: [.], 
/: [/], 
,: [,], 
:: [:], 
;: [;], 
a: [a, á, à, â, ǎ, ă, ã, ả, ȧ, ạ, ä, å, ḁ, ā, ą, ᶏ, ⱥ, ȁ, ấ, ầ, ẫ, ẩ, ậ, ắ, ằ, ẵ, ẳ, ặ, ǻ, ǡ, ǟ, ȁ, ȃ, ɑ], 
b: [b, ḃ, ḅ, ḇ, ƀ, ɓ, ƃ, ᵬ, ᶀ, ʙ, B, b], 
c: [c, Ć, ć, Ĉ, ĉ, Č, č, Ċ, ċ, ̄c̄, Ç, ç, Ḉ, ḉ, Ȼ, ȼ, Ƈ, ƈ, ɕ, ᴄ, C, c], 
d: [d, ď, ḋ, ḑ, ḍ, ḓ, ḏ, đ, Ð, ð, ̦d̦, ɖ, ɗ, ᵭ, ᶁ, ᶑ, ȡ, ᴅ, d], 
e: [e, é, è, ê, ḙ, ě, ĕ, ẽ, ḛ, ẻ, ė, ë, ē, ȩ, ę, ᶒ, ȅ, ế, ề, ễ, ể, ḝ, ḗ, ḕ, ȇ, ẹ, ệ, ⱸ, ᴇ, e], 
f: [f, Ḟ, ḟ, Ƒ, ƒ, ᵮ, ᶂ, ꜰ, F, f], 
g: [g, ǵ, ğ, ĝ, ǧ, ġ, ģ, ḡ, ǥ, ᶃ, g], 
h: [h, ĥ, ȟ, ḧ, ḣ, ḩ, ḥ, ḫ, ̱ẖ, ħ, ⱨ, ɦ, h], 
i: [i, Í, í, Ì, ì, Ĭ, ĭ, Î, î, Ǐ, ǐ, Ï, ï, Ḯ, ḯ, Ĩ, ĩ, Į, į, Ī, ī, Ỉ, ỉ, Ȉ, ȉ, Ȋ, ȋ, Ị, ị, Ḭ, ḭ, Ɨ, ɨ, ᵻ, ᶖ, İ, ı, ɪ, I, i], 
j: [j, Ĵ, ĵ, ɉ, ̌ǰ, ȷ, ʝ, ɟ, ʄ, ᴊ, J, j, I], 
k: [k, Ḱ, ḱ, Ǩ, ǩ, Ķ, ķ, Ḳ, ḳ, Ḵ, ḵ, Ƙ, ƙ, Ⱪ, ⱪ, ᶄ, ᶄ, Ꝁ, ꝁ, ᴋ, K, k], 
l: [l, Ĺ, ĺ, Ľ, ľ, Ļ, ļ, ḷ, Ḷ, ḷ, Ḹ, ḹ, Ḽ, ḽ, Ḻ, ḻ, Ł, ł, Ŀ, ŀ, Ƚ, ƚ, Ⱡ, ⱡ, Ɫ, ɫ, ɬ, ᶅ, ɭ, ȴ, ʟ, L, l], 
m: [m, Ḿ, ḿ, ṁ, Ṃ, ṃ, ᵯ, ᶆ, Ɱ, ɱ, ᴍ, M, m], 
n: [n, Ń, ń, Ǹ, ǹ, Ň, ň, Ñ, ñ, Ṅ, ṅ, Ņ, ņ, Ṇ, ṇ, Ṋ, ṋ, Ṉ, ṉ, ̈n̈, Ɲ, ɲ, Ƞ, ƞ, ᵰ, ᶇ, ɳ, ȵ, ɴ, N, n, Ŋ, ŋ], 
o: [o, Ó, ó, Ò, ò, Ŏ, ŏ, Ô, ô, Ố, ố, Ồ, ồ, Ỗ, ỗ, Ổ, ổ, Ǒ, ǒ, Ö, ö, Ȫ, ȫ, Ő, ő, Õ, õ, Ṍ, ṍ, Ṏ, ṏ, Ȭ, ȭ, Ȯ, ȯ, Ȱ, ȱ, Ø, ø, Ǿ, ǿ, Ǫ, ǫ, Ǭ, ǭ, Ō, ō, Ṓ, ṓ, Ṑ, ṑ, Ỏ, ỏ, Ȍ, ȍ, Ȏ, ȏ, Ơ, ơ, Ớ, ớ, Ờ, ờ, Ỡ, ỡ, Ở, ở, Ợ, ợ, Ọ, ọ, Ộ, ộ, Ɵ, ɵ, ⱺ, ᴏ, O, o], 
p: [p, Ṕ, ṕ, Ṗ, ṗ, Ᵽ, ᵽ, Ƥ, ƥ, ̃p, ̃ᵱ, ᶈ, ᴘ, P, p, ȹ], 
q: [q, Ɋ, ɋ, ʠ, Q, q, ȹ], 
r: [r, Ŕ, ŕ, Ř, ř, Ṙ, ṙ, Ŗ, ŗ, Ȑ, ȑ, Ȓ, ȓ, Ṛ, ṛ, Ṝ, ṝ, Ṟ, ṟ, Ɍ, ɍ, Ɽ, ɽ, ᵲ, ᶉ, ɼ, ɾ, ᵳ, ʀ, R, r], 
s: [s, ẞ, ß, Ś, ś, Ṥ, ṥ, Ŝ, ŝ, Š, š, Ṧ, ṧ, Ṡ, ṡ, ẛ, Ş, ş, Ṣ, ṣ, Ṩ, ṩ, Ș, ș, ̩s̩, ᵴ, ᶊ, ʂ, ȿ, ꜱ, S, s], 
t: [t, Ť, ť, Ṫ, ṫ, Ţ, ţ, Ṭ, ṭ, Ț, ț, Ṱ, ṱ, Ṯ, ṯ, Ŧ, ŧ, Ⱦ, ⱦ, Ƭ, ƭ, Ʈ, ʈ, ̈ẗ, ᵵ, ƫ, ȶ, t], 
u: [u, Ú, ú, Ù, ù, Ŭ, ŭ, Û, û, Ǔ, ǔ, Ů, ů, Ü, ü, Ǘ, ǘ, Ǜ, ǜ, Ǚ, ǚ, Ǖ, ǖ, Ű, ű, Ũ, ũ, Ṹ, ṹ, Ų, ų, Ū, ū, Ṻ, ṻ, Ủ, ủ, Ȕ, ȕ, Ȗ, ȗ, Ư, ư, Ứ, ứ, Ừ, ừ, Ữ, ữ, Ử, ử, Ự, ự, Ụ, ụ, Ṳ, ṳ, Ṷ, ṷ, Ṵ, ṵ, Ʉ, ʉ, ᵾ, ᶙ, ᴜ, U, u, ᵫ], 
v: [v, Ṽ, ṽ, Ṿ, ṿ, Ʋ, ʋ, ᶌ, ᶌ, ⱱ, ⱴ, ᴠ, V, v], 
w: [w, Ẃ, ẃ, Ẁ, ẁ, Ŵ, ŵ, Ẅ, ẅ, Ẇ, ẇ, Ẉ, ẉ, ẘ, ẘ, Ⱳ, ⱳ, ᴡ, W, w], 
x: [x, Ẍ, ẍ, Ẋ, ẋ, ᶍ, X, x], 
y: [y, Ý, ý, Ỳ, ỳ, Ŷ, ŷ, ẙ, Ÿ, ÿ, Ỹ, ỹ, Ẏ, ẏ, Ȳ, ȳ, Ỷ, ỷ, Ỵ, ỵ, Ɏ, ɏ, Ƴ, ƴ, ʏ, Y, y], 
z: [z, Ź, ź, Ẑ, ẑ, Ž, ž, Ż, ż, Ẓ, ẓ, Ẕ, ẕ, Ƶ, ƶ, Ȥ, ȥ, Ⱬ, ⱬ, ᵶ, ᶎ, ʐ, ʑ, ɀ, ᴢ, Z, z]