Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
confusable-vision — 世界初のフォントごとのconfusablesデータセット:どのUnicode文字が似て見えるかを、人々が読むサイズで322フォントのアウトラインから測定。CC BY、Mozillaのアドオン名チェックで使用。 | Kitploit
ツール/GitHubGitHub/paultendo/confusable-vision
OSINT (オープンソースインテリジェンス)偵察ウェブセキュリティ脅威インテリジェンスサプライチェーンセキュリティ論文と研究学習と教育厳選リソース
GitHubpaultendo/confusable-vision

confusable-vision

世界初のフォントごとのconfusablesデータセット:どのUnicode文字が似て見えるかを、人々が読むサイズで322フォントのアウトラインから測定。CC BY、Mozillaのアドオン名チェックで使用。

リポジトリを見る
112921日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

confusable-vision

世界初のフォント別confusablesデータセット。 どのUnicode文字がどれと似て見えるかを、ピクセルではなくフォントのアウトラインから測定したもの。現在のリリース2026.09.26では、322フォントが描くすべての文字と数字を、実行テキスト中での各グリフのサイズとベースライン位置で比較している。ASCIIの文字と数字の類似文字は、その後、実際の配置で検証される。一般的なフォントで他の文字の間に、人が読むサイズで設定し、誰もが似ていると認めるペア(例えば0とOなど)と比較する。

addons.mozilla.orgはconfusable-visionの文字を使用してアドオン名の類似文字をチェックしており、Mozillaのソースでクレジットされている。使用実績を参照。

ラテン大文字OとOl Chiki文字(U+1C5B)を通る同じ光線:各光線がインクに入り出る位置と、インクを通る経路が一致する。

使用実績

  • **addons.mozilla.orgの背後にあるコードであるMozilla addons-server**は、アドオン名をチェックする際に類似文字をASCIIに折りたたむために使用するテーブルに、confusable-visionの出力から文字を追加している:src/olympia/amo/confusables.py、プルリクエスト#24468、#24541、#24612、#24665(2026年2月から3月)。
  • disarm(raeq/disarm)は、敵対的Unicodeを分類器、インデックス、識別子に到達する前に正規化するもので、confusable-visionから測定されたペアをconfusablesテーブルに追加している:data/confusables_supplement.tsv、data/confusables_vision.tsv。
  • SilverSpeak(ACMCMC/silverspeak)は、テキストに対するホモグリフ攻撃を実行・無効化するためのPythonライブラリで、そのホモグリフグラフの視覚的隣接文字をconfusable-visionの発見ファイルから構築している(docs/hkb.md)。
  • **namespace-guard**は測定されたペアを同梱しており、それを介してagent-sanitizerに到達する。agent-sanitizerはnamespace-guardをデフォルトエンジンとして使用し、AIエージェントのツール呼び出し入力における類似文字をASCIIに折りたたむ(deps.dev)。

これらのプロジェクトは、2026年2月と3月のconfusable-visionの出力からデータを取得した。

Hacker Newsでの議論:I rendered 1,418 confusables over 230 fontsおよびConfusables.txt and NFKC disagree on 31 characters。

リリース2026.09.26の数値:

  • 322フォント:macOS上のすべてのフォント(PingFangなどオンデマンドでダウンロードされるものを含む)に加え、Roboto、Noto Sans、Noto Serif、Noto Sans CJK、DejaVu。140スクリプトの64,751コードポイント。
  • 少なくとも1つのフォントまたはフォントの組み合わせで類似する11,517ペア、うち5,975が推奨しきい値を通過。
  • 文字と2文字のASCIIシーケンスの719ペア(例:ǁとll、Ыとbl)。
  • ASCIIの文字、数字、シーケンスの3,055の候補類似文字を実際の配置で検証:646がstrictティアで類似、358がさらにbroadティアで、101がさらに別の一般的なフォントのその文字のデザインと一致。strictのうち224はUnicodeのconfusables.txtにない。

データはdata/release/2026.09.26/にバージョン付きリリースとして公開されている(CC-BY-4.0)。namespace-guardとd0ma1nはこれに基づいて構築されている。

リリース2からの変更点

リリース2(2026.09.24、TLDデータは2026.09.25)は、以前の実行が比較したペアとフォントのみを比較していた。同一グリフの監査により、フォントが2つの文字を同じグリフで描く2,654ケースのうち637しか捕捉できていないことが判明した。リリース3はこれを修正し、3つのことを追加している:

  • カバレッジ。 各フォントが描くすべての文字と数字を、そのフォント内の他のすべてと比較する(HanとHangulを含む)。リリース2は固定リストから文字を取得していたため、Yi、Canadian Aboriginal、Ethiopic、インド系スクリプトのほとんどに到達せず、スクリプト専用フォントとPingFangを見逃していた。
  • 正しいフェイス。 フォントコレクションは、ブラウザが本文テキストに使用するフェイスで読み込まれる。以前の実行は最初のフェイスを取得しており、一部のコレクションではそれがボールド、ブラック、イタリックだった。
  • 重なり合うコンターは、San Franciscoなどのバリアブルフォントのように、読者が見るようにストロークの和集合として測定される。
  • 2文字シーケンス。 2つのASCII文字または数字のすべてのシーケンス(3,844)を、各フォントが設定する通りに(カーニングとリガチャを含めて)設定し、文字と同様に比較する。
  • フォント間の基準は、ページフォントの第3四分位数によって設定されるため、調査にフォントを追加しても動かない。
  • 実際の配置での検証(下記)。

2026年3月の数値(249,976の単一文字ペアと2,524,275のバイグラムペア、245フォント)は、サイズとベースラインを無視した測定から得られたものである。これらは置き換えられ、それらの実行からのファイルは参照用にdata/output/に残っている。

仕組み

グリフの測定

RaySpaceは各グリフのアウトラインを通して36角度で平行光線を投射し、各50本、光線ごとに5つのことを記録する:アウトラインを何回横切るか、どこで、どの角度で、インクを通るたびにどれだけ進むか(そのping、光線に沿ったストロークの幅)、ストローク間の最大ギャップ。各グリフは2回測定される:形状のために自身のボックス内で、サイズと位置を考慮するためにベースライン上の固定フレーム内で。2つの文字は、形状距離が0.5未満でベースライン固定距離が0.2未満のとき、あるフォントで類似している。比較はRust(native/cv-pairs)で全コアを使って実行される。

  • 1つのフォント内:フォントが描く文字と数字のすべてのペア。
  • フォント間:自身のフォント内の文字(ブラウザのフォールバックが描くように)を、それを持たない26のページフォントそれぞれの62のASCII文字と数字に対して比較する。ASCII文字が最も近いものであり、その文字が他のページフォントの第3四分位数でその文字が自身にどれだけ近いかと同じくらい近いときにカウントされる。
  • シーケンス:すべての文字を3,844の2文字ASCIIシーケンスに対して、各フォントが設定する通りに(Core Text、HarfBuzzはシステムフォントのトラッキングを除いて同一に設定する)。

実際の配置での検証

単独で測定された類似文字は、テキストの行の中で依然として目立つ可能性がある。そのため、ASCIIの文字、数字、シーケンスのすべての候補類似文字は、隣接文字の間に設定され(pa_nel、20_5)、5つのコンテキストで検証される:システムフォント13 px、およびHelvetica、Arial、Times New Roman、Georgiaの16 px、それぞれデバイスピクセル比1と2で、プラットフォームのフォントフォールバックを使用する。何も再スケーリングされない:類似文字は行内で着地する位置で比較される。

各コンテキストの基準は、誰もが似ていると認めるペア、0とO、1とl、Iとlから得られ、そのコンテキストがそれらを同じサイズと位置で描く場合のみカウントされる。類似文字は:

  • strict:それらのペアの中央値と同じくらい類似し、以下のすべてのチェックを通過する場合;
  • broad:それらのうち最も類似しないものと同じくらい類似し、1つのコーナーの差異が許容され、スラントチェックがない場合;
  • design:別の一般的なフォントが描くその文字と一致する場合(Jの上部にバーがあるが、行内のJにはないなど)。

チェックは、両方のグリフをデバイス解像度の4倍でラスタライズして行う:デバイスピクセルより狭いギャップが閉じた後の同じ数のピースとホール;カウンターが同じ場所でほぼ同じサイズで四角または丸が類似;隣接文字との間隔;インクの上部、下部、幅;右から左への文字が周囲の数字を並べ替える;ストロークの太さ;各辺の形状(ミラーリング);インクが各コーナーにどれだけ達するか;スラント;中央のステム(YとV);ステムを横切るバー(ŦとT)。2文字シーケンスは文字ごとにチェックされる。

ティアはレンダリングされたサンプルの視覚的判断に対して調整され、受け入れられたペアに固定された。読者を対象とした研究はまだ行われていない。

発見されたもの

Unicodeのconfusables.txtにないstrict類似文字のうち6つ、それぞれが5つのコンテキストすべてで類似している。macOSはそれぞれをNotoフォールバックフォントで描画する:

単語内の6つの類似文字。Arial 46 pxと16 pxで実際の単語の隣に設定され、置き換えられた文字がマークされている。

文字名前代用される文字
ᱛ U+1C5BOL CHIKI LETTER ATO
ꢝ U+A89DSAURASHTRA LETTER TTHAO
𖩠 U+16A60MRO DIGIT ZEROO
𑫤 U+11AE4PAU CIN HAU LETTER FINAL YO
ᦞ U+199ENEW TAI LUE LETTER LOW VAo
᧐ U+19D0NEW TAI LUE DIGIT ZEROo

ほとんどの類似ドメインの背後にあるASCIIの置き換えは、一部のフォントでのみ成立する。Iのlへの置き換えはシステムフォント、Helvetica、Arialでほぼ同一。1のlへの置き換えはTimes New Romanでのみ、0のoへの置き換えはGeorgiaでのみ成立し、その数字は小文字の高さである。rnのmへの置き換えは標準密度画面のArial 16 pxでのみ成立する。dのclへの置き換えとwのvvへの置き換えは16 pxでは成立しない。

途中で:macOSとiOSに同梱されているGeorgiaは、ⅳ(U+2173、SMALL ROMAN NUMERAL FOUR)をⅸ(9)とまったく同じに描画する。Windows 11のGeorgiaは正しい。これは2026年3月にMicrosoft Q&Aで最初に報告され、Appleにも報告されている。

リリース

ファイル1行あたり
characters.jsonl.gz測定されたコードポイント。スクリプト、カテゴリ、TR39識別子タイプ、IDNA2008ステータス、およびそれをレジストリが受け入れるTLD付き
lookalikes.jsonl.gz少なくとも1つのフォントまたは組み合わせで類似するペア。背後のカウントと各フォントでの距離付き
sequences.jsonl.gz2文字ASCIIシーケンスに類似する文字
in-place.jsonl.gz実際の配置で検証された候補類似文字。各コンテキストでの判定と失敗したチェック付き

DATASET.mdには、すべてのフィールド、何が比較されたか、ペアが存在しないことの意味、推奨しきい値が記載されている。リリースはバージョンで固定する。その他のコミット済み出力:

ファイル説明
data/output/idn-relevant-pairs.jsonリリースのIDNビュー:しきい値を通過し、その文字が両方とも共通のTLDで登録可能な2,923ペア。npx tsx scripts/export-idn-pairs.ts
data/output/confusable-weights-v4.json、font-specific-weights-v4.jsonnamespace-guard用の重み:ASCII文字または2つのスクリプトを含むペアを、それらが類似するフォントの割合でスコアリング(全体およびフォント別)。scripts/generate-weights-release.ts、scripts/generate-font-weights-release.ts
data/output/unicode-submission/Unicodeのconfusablesデータへの追加提案。各行の背後の測定付き。scripts/build-unicode-submission.ts
data/input/tld-rules.json各委任TLDのレジストリが第2レベルで受け入れる文字。IANAのIDNテーブル、ICANNレジストリ契約、調査された国コードポリシーから。scripts/build-tld-rules.py;d0ma1nがこれをインポートする

再現

macOS(Core Textがテキストを設定する)、Node 22以降、Rust、およびSwiftヘルパー用のXcodeコマンドラインツールが必要。

npm install
(cd native/cv-pairs && cargo build --release)
ツールをダウンロード