Skip to content

Educational tool to generate self-decoding JavaScript snippets using classic ciphers (Caesar implemented).

License

Notifications You must be signed in to change notification settings

ipusiron/classic-js-obfuscator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Classic JS Obfuscator — 古典暗号JavaScript難読化ツール

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

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

Classic JS Obfuscator は、古典暗号(シーザー暗号)で暗号化されたJavaScriptスニペットを生成するWebツールです。 復号関数+evalを同梱しているため、自己復号・自己実行可能な JavaScriptスニペットになります。

UIは2つのタブ構成になっており、現在はシーザー暗号版が実装済み、ビジュネル暗号版は未実装です。


🌐 デモページ

👉 https://ipusiron.github.io/classic-js-obfuscator/


📸 スクリーンショット

サンプルコードの難読化を開発者ツールで確認

サンプルコードの難読化を開発者ツールで確認


✨ 機能

🔐 暗号化機能

  • シーザー暗号による暗号化: ASCII可視範囲(32–126)でシフト暗号化
  • 自己復号スニペット生成: 復号関数と暗号化済みペイロードを同梱したIIFE形式
  • シフト量設定: 0〜94の範囲で暗号化強度を調整可能
  • 出力コード: <script> タグでそのまま利用可能

🎨 ユーザーインターフェイス

  • 比較モード: 元コードと暗号化後のコードを横並びで表示
  • ダークモード/ライトモード: 目に優しいテーマ切り替え
  • チュートリアル: 初心者向けのステップバイステップガイド
  • ヘルプモーダル: 詳細な使い方とセキュリティ情報
  • トースト通知: コピー成功など操作結果の非侵襲的な通知

⚡ 便利機能

  • その場でテスト実行: 生成されたコードの動作確認
  • ワンクリックコピー: クリップボードへの瞬時コピー
  • ダウンロード機能: .jsファイルとしての保存
  • レスポンシブデザイン: モバイル・デスクトップ両対応
  • 入力バリデーション: リアルタイムでのエラーチェック

🛡️ セキュリティ対応

  • 完全クライアントサイド: サーバーへのデータ送信なし
  • 明確な警告表示: eval使用時の注意喚起
  • 教育目的設計: セキュリティリスクの明示

📋 使い方

基本的な使い方

  1. コード入力: 「元コード」欄に暗号化したいJavaScriptを入力
  2. シフト量設定: 0〜94の範囲でシーザー暗号のシフト量を指定(デフォルト値は3)
  3. 暗号化実行: 「難読化コードを生成」ボタンをクリック
  4. 結果活用: 生成されたコードを「コピー」「保存」「テスト実行」

🎮 便利な機能の使い方

  • 比較モード: 「🔀 比較モード」ボタンで元コードと暗号化後のコードを横並び表示
  • テーマ切り替え: ヘッダーの 🌙/☀️ ボタンでダークモード/ライトモード切り替え
  • ヘルプ参照: 「📖 ヘルプ」ボタンで詳細な使い方とセキュリティ情報を表示
  • チュートリアル: 「❓ チュートリアル」ボタンで6ステップのガイドツアー

🧪 サンプルコードで動作確認(初回実験手順)

ツールを開くと、入力欄にサンプルコードが自動的に表示されます。そのまま使って動作を確認できます:

// サンプル:ページに "Hello Obfuscation!" を表示 console.log("Hello Obfuscation!"); document.body.insertAdjacentHTML("beforeend", "<div style=\"...\">✅ 実行されました</div>");

実験手順:

  1. サンプルコードが入力欄に表示されていることを確認
  2. シフト量はデフォルトの「3」のまま
  3. 「難読化コードを生成」ボタンをクリック
  4. 出力欄に暗号化されたコードが表示される(文字化けしたような見た目)
  5. 「この場で実行(テスト)」ボタンをクリック
  6. ページ下部に「✅ 実行されました」と表示され、コンソールに「Hello Obfuscation!」が出力される

生成されるコードの例(シフト量3の場合):

(function(){ const d = function(t,s){...}; // 復号関数 const enc = "22#Vdpsoh=..."; // 暗号化されたペイロード const sft = 3; // シフト量 const dec = d(enc, sft); // 復号処理 eval(dec); // 実行 })();

⚠️ 注意

  • 本ツールは秘匿ではなく難読化(可読性低下)を目的とした教材です。
  • 生成物は最終的に復号されて実行されるため、静的解析で元コードは再現可能です。
  • 文字処理は ASCII 32–126 を対象とし、その他コードポイントはそのまま通します(日本語等は未シフト)。

セキュリティに関する説明

本ツールは eval() を使用してコードを実行する機能を含んでいますが、以下の理由により安全に公開可能です。

  1. 完全にクライアントサイドで動作

    • サーバーへのデータ送信は一切行いません
    • 他のユーザーに影響を与えることはありません
    • ローカルストレージやCookieへの保存も行いません
  2. Self-XSSのみ(他者への攻撃は不可能)

    • ユーザーが自分で入力したコードを自分のブラウザで実行するだけです
    • 悪意のあるコードを他者に実行させる仕組みはありません
    • URLパラメーター等による外部からのコード注入もできません
  3. 明確な警告表示

    • 実行機能の使用時には警告が表示されます
    • ユーザーの意図的な操作(ボタンクリック)でのみ実行されます

教育・学習目的のツールとして、JavaScript難読化の仕組みを理解するための安全な環境を提供しています。


🔬 技術・セキュリティ解説

本ツールで使用されている技術の詳細解説と、セキュリティの観点からの考察については以下をご覧ください:

📖 技術解説・セキュリティガイド

  • シーザー暗号の実装詳細
  • 自己復号スニペットの構造
  • 攻撃者の悪用手法と対策
  • 防御側の検知技術
  • セキュリティ研究者への提言

🎯 実装済み機能

v1.0で実装された主要機能

  • シーザー暗号による暗号化
  • 比較モード(横並び表示)
  • ダークモード/ライトモード切り替え
  • チュートリアル機能
  • ヘルプモーダル
  • トースト通知
  • 入力バリデーション
  • レスポンシブデザイン
  • コンソールログ強化

将来の拡張予定

以下は、今後の拡張や改良のアイデアです。

  • 複数暗号方式対応
    Vigenère暗号、XOR暗号、RailFence暗号など古典暗号を追加して選択可能にする。

  • 多段暗号化
    「Caesar → Base64 → XOR」など複数方式を組み合わせて解析難度を上げる。

  • 鍵の難読化
    鍵をソースに直接埋め込まず、ランタイム生成や別ファイル・環境変数から取得する方式。

  • Unicode対応
    日本語や絵文字を含むコードを安全に暗号化/復号できるようにする。

  • 変数名・関数名の難読化
    文字列リテラルだけでなく識別子も置換し、構造的な難読化を実現。

  • CLI版・Node.js対応
    コマンドラインからコードファイルを暗号化し、復号実行するツールとして利用可能にする。


📂 ディレクトリー構成

classic-js-obfuscator/ ├── index.html # メインのHTMLファイル(UIレイアウト) ├── script.js # Caesar暗号化/復号化ロジックとUI制御 ├── style.css # スタイルシート(ダークモード/ライトモード対応) ├── CLAUDE.md # Claude Code用のプロジェクト説明 ├── README.md # このファイル(機能説明・使い方) ├── SECURITY.md # 技術解説・セキュリティガイド ├── LICENSE # MITライセンス └── assets/ # 画像等のアセット └── screenshot.png 

📄 ライセンス

MIT License - 詳細は LICENSE をご覧ください。


🛠️ このツールについて

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

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

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

About

Educational tool to generate self-decoding JavaScript snippets using classic ciphers (Caesar implemented).

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published