تایپاسکواتهای سبک dnstwist را برای یک دامنه تولید کنید و بررسی کنید کدامیک در DNS حل میشوند.
بررسی نویسههای همشکل (homoglyph)
خود ابزار به زبان انگلیسی است؛ این صفحه آن را به زبان شما توضیح میدهد.
از بررسی نویسههای همشکل (homoglyph) استفاده کنید
کارکرد
یک دامنه، URL یا متن را بچسبانید تا هر برچسب (label) را به شکل Unicode و punycode، خط و نمونهٔ اصلی (prototype) UTS #39 هر نویسه را ببینید و بفهمید آیا نام چند خط را با هم ترکیب میکند یا مانند یک نام ASCII دیگر خوانده میشود.
این کاملاً در مرورگر شما اجرا میشود: هیچیک از اطلاعاتی که وارد میکنید بارگذاری نمیشود.
چگونه از بررسی نویسههای همشکل (homoglyph) استفاده کنیم
- نام را بچسبانید. یک دامنه، URL، آدرس ایمیل، چند خط یا یک پیام کامل را بچسبانید. شکلهای خنثیشده (defanged) مانند hxxps:// و [.] پذیرفته میشوند و برچسبهای xn-- کدگشایی میشوند.
- دامنهٔ واقعی را اضافه کنید (اختیاری). دامنهای را که انتظارش را داشتید در Compare with the real domain (مقایسه با دامنهٔ واقعی) بنویسید، برای نمونه دامنهٔ واقعی بانکتان.
- بررسی را اجرا کنید. بررسی همزمان با تایپ اجرا میشود، یا Enter یا Check (بررسی) را بزنید. Shift+Enter یک خط جدید اضافه میکند.
- نتیجه را بخوانید. کادر رنگی یکی از عبارتهای Lookalike risk (خطر شباهت)، Check this (این را بررسی کنید)، Looks clean (سالم به نظر میرسد) یا Notes (یادداشتها) را نشان میدهد، با یک خط برای هر یافته. پیامی با چند میزبان جدولی با یک نتیجه برای هر میزبان میدهد.
- حروف غیرعادی را پیدا کنید. نویسههای مشکوک در دامنهٔ برجستهشده علامت خوردهاند. جدول Characters هر کدام را با code point، خط و حرف ASCII که از آن تقلید میکند فهرست میکند.
- کپی کنید یا به ابزار دیگر بفرستید. شکل Unicode یا punycode را کپی کنید، یا با Send to… (ارسال به…) دامنه را در DNS over HTTPS Lookup یا Abuse Contact Lookup جستجو کنید.
مثال
دامنهٔ مشابه با حروف سیریلیک در punycode
xn--80ak6aa92e.exampleLookalike risk: Label "аррӏе" is written in Cyrillic but reads as the ASCII name "apple" (whole-script confusable).
Highlighted domain
аррӏе.example
Unicode form
аррӏе[.]example
Punycode (ACE) form
xn--80ak6aa92e[.]example
RESTRICTION LEVEL
Single Script
SCRIPTS
Cyrillic, Latin
READS AS
apple[.]example
Labels
UNICODE ACE SCRIPTS MIXED RESTRICTION LEVEL SKELETON
аррӏе xn--80ak6aa92e Cyrillic no Single Script apple
example example Latin no ASCII-Only ASCII only
Characters
CHAR CODE POINT SCRIPT UTS #39 PROTOTYPE ID STATUS FLAG
а U+0430 Cyrillic a (U+0061) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
ӏ U+04CF Cyrillic l (U+006C) Allowed looks like ASCII
е U+0435 Cyrillic e (U+0065) Allowed looks like ASCII
e U+0065 Latin itself Allowed ASCII
x U+0078 Latin itself Allowed ASCII
a U+0061 Latin itself Allowed ASCII
m U+006D Latin rn (U+0072 U+006E) Allowed ASCII
p U+0070 Latin itself Allowed ASCII
l U+006C Latin itself Allowed ASCII
e U+0065 Latin itself Allowed ASCII
Comparison with apple[.]example
Confusable: аррӏе[.]example and apple[.]example have the same UTS #39 skeleton, so they can look identical.
SKELETON OF THE INPUT
apple[.]exarnple
SKELETON OF APPLE[.]EXAMPLE
apple[.]exarnpleبه аррӏе.example کدگشایی میشود: هر پنج حرف سیریلیکاند و apple خوانده میشوند، پس برچسب بهعنوان whole-script confusable (همهٔ حروف از خطی دیگر و قابل اشتباه) علامت میخورد و هر نویسه مشخص میشود. Load example همچنین apple.example را در فیلد مقایسه قرار میدهد که اسکلت (skeleton) یکسانی دارد.
آنچه بررسی میکند
| سیگنال | معنای آن |
|---|---|
| ترکیب چند خط در یک برچسب | ترکیب لاتین با سیریلیک یا یونانی درون یک برچسب قرمز است. ترکیبهایی که UTS #39 میپذیرد، مانند لاتین با ژاپنی، فقط یادداشت میشوند، مگر اینکه نویسهای شبیه ASCII باشد. |
| شباهت با همهٔ حروف از خطی دیگر | همهٔ حروف از الفبای دیگریاند اما برچسب مانند یک کلمهٔ ASCII خوانده میشود، مانند аррӏе سیریلیک بهجای apple. این مورد قرمز است. |
| تفاوت فقط در نشانهٔ حرف (accent) | برچسبی مانند wället اگر از نشانهٔ روی حرف چشمپوشی کنید wallet خوانده میشود. این یک یافتهٔ زرد از نوع Check this است. |
| نمونهٔ اصلی UTS #39 | جدول Characters نشان میدهد هر نویسه از کدام حرف یا رقم ASCII تقلید میکند و آن را با looks like ASCII، non-ASCII یا ASCII علامت میزند. |
| سطح محدودیت | از ASCII-Only تا Unrestricted، طبق UTS #39. Minimally Restrictive و Unrestricted با رنگ قرمز نمایش داده میشوند، چون پرخطرترین ترکیبها را مجاز میدانند. |
| نویسههای نامرئی و نگاشت مرورگر | اگر مرورگر میزبان را بازنویسی کند، برای نمونه با حذف یک نویسهٔ بدون عرض (zero-width) یا تبدیل حروف تمامعرض (fullwidth) به حروف عادی، یک هشدار زرد و فیلد What the browser opens (آنچه مرورگر باز میکند) نمایش داده میشود. اگر مرورگر نتواند میزبان را نگاشت کند، نویسههای نامرئی درون آن قرمزند. |
| نقطههای غیرعادی | نقطههای ایدئوگرافیک یا تمامعرض (U+3002، U+FF0E، U+FF61) در مرورگرها مانند نقطه عمل میکنند اما ممکن است از فیلترهایی که متن ساده را مقایسه میکنند عبور کنند. |
| punycode خراب | برچسب xn-- که درست کدگشایی نشود قرمز است. |
| ترفندهای ASCII | نامهای ASCII ساده با 0 بهجای o، 1 بهجای l، rn بهجای m یا vv بهجای w یک یادداشت میگیرند. برای اطمینان از فیلد مقایسه استفاده کنید. |
| نتیجهٔ مقایسه | Same domain (دامنهٔ یکسان)، Confusable (same skeleton) (قابل اشتباه، اسکلت یکسان)، Confusable once case is ignored (قابل اشتباه با نادیده گرفتن بزرگی و کوچکی حروف)، Differs only by accents (تفاوت فقط در نشانههای حروف)، 1 or 2 edits away (likely typo-squat) (یک یا دو ویرایش فاصله، احتمالاً typosquatting) یا Not confusable (غیرقابل اشتباه). |
نمونههای بیشتر
حرف а سیریلیک در یک نام لاتین، در مقایسه با wallet.example
wаllet.exampleLookalike risk: برچسب «wаllet» خطها را ترکیب میکند (لاتین + سیریلیک، سطح محدودیت: Minimally Restrictive)؛ یک نویسه شبیه ASCII است و برچسب «wallet» خوانده میشود. شکل punycode آن xn--wllet-4ve[.]example است. مقایسه: Confusable، اسکلت هر دو wallet[.]exarnple است.
رقم 1 بهجای l، در مقایسه با wallet.example
wa1let.exampleLooks clean: میزبان فقط ASCII است: بدون نویسهٔ همشکل و بدون ترکیب خطها. یک یادداشت میگوید برچسب شامل «1» است (ممکن است l خوانده شود). مقایسه: Confusable، چون اسکلت هر دو نام wallet[.]exarnple است.
حرف دارای نشانه، در مقایسه با wallet.example
wället.exampleCheck this: برچسب «wället» اگر از نشانههای حروف چشمپوشی شود «wallet» خوانده میشود. شکل punycode آن xn--wllet-gra[.]example و سطح محدودیت Single Script است. مقایسه: Differs only by accents.
سوالات متداول
این ابزار چه چیزهایی را بررسی میکند؟
هر برچسب با یک کدگشای RFC 3492 از punycode کدگشایی میشود، برای هر نویسه خط Unicode و نمونهٔ اصلی UTS #39 آن از confusables.txt (Unicode 18.0) تعیین میشود، و برای هر برچسب بررسی ترکیب خطها و سطح محدودیت UTS #39 انجام میشود. برچسبهایی که همهٔ حروفشان به شکل ASCII خوانده میشوند، بهعنوان whole-script confusable علامت میخورند.
آیا ممکن است دامنهٔ مشابهی را نبیند یا یک دامنهٔ واقعی را علامت بزند؟
بله. UTS #39 نویسههایی را پوشش میدهد که شبیه هماند، نه غلطهای تایپی؛ پس حرف جابهجا یا جاافتاده فقط از طریق فاصلهٔ ویرایشی (edit distance) در فیلد مقایسه دیده میشود و ترفندهای ASCII مانند rn بهجای m بهصورت یادداشت فهرست میشوند. نامهای غیرلاتین مشروع، برای نمونه برخی دامنههای سیریلیک زیر .рф، ممکن است مانند کلمات لاتین خوانده شوند و علامت بخورند.
آیا چیزی از طریق شبکه ارسال میشود؟
خیر. کدگشایی، تشخیص خط و جدول نویسههای قابل اشتباه در همین صفحه اجرا میشوند؛ شکل punycode از تجزیهگر URL خود مرورگر شما میآید و هیچ جستجوی DNSای انجام نمیشود.
سطحهای محدودیت چه معنایی دارند؟
این سطحها از Unicode UTS #39 میآیند. ASCII-Only فقط از ASCII ساده استفاده میکند. Single Script از یک خط نوشتاری استفاده میکند. Highly Restrictive لاتین را همراه با چینی، ژاپنی یا کرهای مجاز میداند. Moderately Restrictive لاتین را همراه با یک خط رایج دیگر بهجز سیریلیک و یونانی مجاز میداند. Minimally Restrictive ترکیبهای دیگر را مجاز میداند و Unrestricted یعنی نویسهای بیرون از پروفایل شناسه (identifier profile) قرار دارد.
چرا ابزار میگوید مرورگر نام دیگری را باز میکند؟
مرورگرها نام میزبان را با نگاشت UTS #46 یکدست میکنند. این نگاشت از جمله حروف تمامعرض را به حروف عادی تبدیل میکند و نویسههای نامرئی مانند فاصلهٔ بدون عرض (zero-width space) و خط تیرهٔ نرم (soft hyphen) را حذف میکند. در این حالت لینک نام نگاشتشده را باز میکند، در حالی که متن به همان شکلی که نوشته شده هنوز میتواند از فیلترهایی که رشتههای خام را مقایسه میکنند عبور کند.
چند میزبان را میتوانم همزمان بررسی کنم؟
یک فهرست یا یک پیام را بچسبانید تا ابزار حداکثر ۵۰ نام میزبان را جدا کند و آدرسهای IP را کنار بگذارد. متن تا ۲۰٬۰۰۰ نویسه تحلیل میشود و هر کلمهٔ غیر ASCII بیرون از نامهای میزبان هم بررسی میشود.