Skip to content

ipusiron/leetforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LeetForge - リートコンバーター

GitHub Repo stars GitHub forks GitHub last commit GitHub license GitHub Pages

Day079 - 生成AIで作るセキュリティツール100

LeetForge は、通常のテキストを 1337(リート表記) に変換する教育用ツールです。

文字ごとに複数の置換候補を割り当て、ランダム/循環で出力を生成できます。

セキュリティ文脈では「偽造(forge)」と「鍛冶場(forge)」のダブルミーニングを持たせ、「文字を鍛えて偽造する工房」として遊び心を込めています。


🌐 デモページ

👉 https://ipusiron.github.io/leetforge/

ブラウザーで直接お試しいただけます。


📸 スクリーンショット

"Happy hacking!"をリート表記に変換 "Happy hacking!"をリート表記に変換


リートとは

リート(Leet) または 1337 speak は、英数字や記号を使って通常の文字を置き換える表記法です。

📖 歴史的背景

リートの起源は 1980年代のBBS(電子掲示板)時代 にさかのぼります:

  • 1980年代: ハッカーやプログラマーが、システム管理者の検閲やフィルタリングを回避するために開発
  • 1990年代: オンラインゲームコミュニティで流行し、「エリート(Elite)」を「3l337」→「leet」と略して表現
  • 2000年代: インターネット文化の一部として定着、ミーム化

🎯 主な活用場面

セキュリティ分野

  • パスワード強化: passwordp4ssw0rd で複雑性向上
  • 辞書攻撃対策: 一般的な単語を変換して予測困難に
  • フィッシング対策: 正規ドメインの模倣検出

教育・学習

  • 暗号化の理解: 換字式暗号の基本概念を学習
  • 文字エンコーディング: 異なる表記体系の理解
  • プログラミング教育: 文字列操作の実践

コミュニケーション

  • オンラインゲーム: プレイヤー名やメッセージの個性化
  • SNS: ユニークなユーザー名作成
  • アート表現: ASCIIアートや装飾的テキスト

🔤 基本的な対応例

文字 リート表記 理由・形状
A 4, @ 形状の類似性
E 3 数字の3が横向きのEに類似
I 1, ! 縦線の形状
O 0 円形の類似性
S 5, $ 曲線の形状
T 7, + 十字形の構造

⚠️ 注意点

  • 可読性の低下: 過度な使用は理解を困難にする
  • セキュリティの限界: 現代の攻撃手法には限定的な効果
  • 文脈の重要性: 使用場面を適切に判断することが必要

⚡ 主な機能

① コンバートタブ

  • 入力テキストをリート表記に変換(最大50,000文字)
  • リアルタイム変換/ボタン実行の切替
  • 複数候補の選択方式:一様ランダム/ラウンドロビン
  • シード固定で再現性あるランダム変換
  • 出力コピー機能
  • 比較ビュー(変更箇所をハイライト表示)

② マッピングタブ

  • 文字・単語ごとの対応表を一覧表示
  • キー単位での有効/無効切替
  • 候補レベルでの個別制御:各文字の候補を個別に有効/無効化可能
  • 7つのプリセット:基本・標準・上級・エリート・単語変換・コンボ・逆変換
  • プリセット適用時の詳細確認ダイアログ
  • localStorageで設定を保存
  • JSON形式でインポート/エクスポート(ファイルサイズ制限: 1MB)
  • 初期化機能でデフォルト設定に復元

③ 座学タブ

  • リートの歴史的背景をタイムライン形式で学習
  • 基本的な変換ルールと理由を視覚的に解説
  • セキュリティ・教育・コミュニケーション分野での活用場面を紹介
  • 注意点とベストプラクティスを整理

📊 データモデル(JSON例)

{
  "version": 1,
  "map": {
    "a": {
      "enabled": true,
      "alts": [
        { "value": "4", "enabled": true },
        { "value": "@", "enabled": true },
        { "value": "/\\", "enabled": false }
      ]
    },
    "b": {
      "enabled": true,
      "alts": [
        { "value": "8", "enabled": true },
        { "value": "|3", "enabled": false }
      ]
    },
    "and": {
      "enabled": true,
      "alts": [
        { "value": "&", "enabled": true },
        { "value": "n", "enabled": false }
      ]
    }
  }
}

🎯 具体的な活用シナリオ

シナリオ1: セキュリティエンジニアによるパスワード強化

状況: 企業のセキュリティエンジニアが、従業員のパスワード作成支援を行う

使用手順:

  1. 基本プリセットを適用して、まず基本的な文字変換(a→4, e→3, i→1, o→0, s→5, t→7, l→1)を有効化
  2. 従業員の既存パスワード候補「company2024」を入力
  3. 出力結果「c0mp4ny2024」を確認し、さらに強化が必要と判断
  4. マッピングタブで追加文字(y→/)を有効化し、「c0mp4n`/2024」に強化
  5. シード固定機能を使用して、同じ変換ルールで複数のパスワードを一貫して生成

効果: 辞書攻撃に対する耐性が向上し、覚えやすさも維持

シナリオ2: ゲーム配信者によるユニークなプレイヤー名作成

状況: ゲーム配信者が新しいMMORPGで目立つプレイヤー名を作成したい

使用手順:

  1. 希望する名前「DragonSlayer」を入力
  2. 上級プリセットを適用して、幅広い文字変換を有効化
  3. 出力「|)r490n5l4`/3r」を確認
  4. マッピングタブで候補レベルでの個別調整:
    • 「D」の候補リストで「|)」のチェックボックスのみを有効化
    • 「a」の候補リストで「4」と「@」のチェックボックスを有効化
    • 「y」の候補リストで「`/」のチェックボックスを無効化
  5. ラウンドロビン方式で複数パターンを生成し、最適な組み合わせを選択

効果: 他のプレイヤーと重複しにくい、記憶に残るユニークな名前を作成

シナリオ3: 教育者による暗号学習教材の作成

状況: 情報セキュリティの講師が、置換暗号の概念を学生に教える教材を作成

使用手順:

  1. 座学タブでリートの歴史と文化的背景を学習
  2. 学習用サンプル「HELLO WORLD」を入力
  3. 基本プリセットから開始し、「#3110 W0R1|)」の変換結果を示す
  4. マッピングタブで段階的に文字を追加:
    • 第1段階:母音のみ(A,E,I,O)→「H3LL0 W0RLD」
    • 第2段階:子音追加(L,R,D)→「#3110 W021|)」
    • 第3段階:全文字適用→「#3110 //0r1|)」
  5. 単語変換プリセットで「and」→「&」などの単語レベル変換も実演
  6. 各段階での変換結果をエクスポートして、授業資料に組み込み

効果: 学生が置換暗号の基本原理を視覚的・実践的に理解し、セキュリティ意識が向上


⚠️ トラブルシューティング

マッピングが期待通りに動作しない場合

LeetForgeは設定をブラウザのlocalStorageに保存しています。新しいキーやプリセットが反映されない場合は、以下をお試しください:

方法1: 初期化ボタンを使用

  1. マッピングタブを開く
  2. 「初期化」ボタンをクリック
  3. 確認ダイアログで「OK」を選択

方法2: ブラウザの強制リロード

  • Windows/Linux: Ctrl + F5 または Ctrl + Shift + R
  • Mac: Cmd + Shift + R

方法3: localStorage手動削除

  1. F12で開発者ツールを開く
  2. Application(Chrome)またはStorage(Firefox)タブを選択
  3. Local Storage → このサイトのURLを選択
  4. 削除またはClear Allをクリック
  5. ページをリロード

よくある状況

  • 単語変換が効かない: 古いマッピングデータが残っている可能性
  • プリセット適用後に効果がない: localStorageの古いデータが優先されている
  • 新しく追加したキーが表示されない: 設定の同期が必要

📁 ディレクトリー構成

leetforge/
├── assets/
│   └── screenshot.png    # スクリーンショット画像
├── .gitignore            # Gitで無視するファイルの設定
├── .nojekyll             # GitHub Pages設定
├── index.html            # メインHTML(25KB)
├── script.js             # JavaScript機能(36KB)
├── style.css             # スタイルシート(26KB)
├── LICENSE               # MITライセンス
└── README.md             # プロジェクト説明(本ファイル)

主要ファイル:

  • index.html: 3タブ構成のメインUI(コンバート・マッピング・座学)
  • script.js: リート変換エンジン、マッピング管理、候補レベル制御
  • style.css: ダーク/ライトテーマ対応、レスポンシブデザイン

📚 関連資料

Webサイト

書籍


📄 ライセンス

MIT License – 詳細は LICENSE を参照してください。


🛠 このツールについて

本ツールは、「生成AIで作るセキュリティツール100」プロジェクトの一環として開発されました。 このプロジェクトでは、AIの支援を活用しながら、セキュリティに関連するさまざまなツールを100日間にわたり制作・公開していく取り組みを行っています。

プロジェクトの詳細や他のツールについては、以下のページをご覧ください。

🔗 https://akademeia.info/?page_id=42163

About

Interactive tool to convert plain text into 1337 (leet) speak with customizable mappings.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published