Day050 - 生成AIで作るセキュリティツール100
👉 English version is available here: README.en.md
DialSafe Simulatorは、ダイヤル式金庫の正規の開錠手順と内部構造の動きを、ブラウザ上で学べる可視化ツールです。
ダイヤルを回すと 「ドライビングディスク → ツク連動 → 各ディスクの回転 → ゲート位置合わせ → フェンス」 の一連の動作がリアルタイムで可視化され、正しい4ステップ手順で操作したときのみ開錠します。
本ツールは教育(正規操作の理解)を目的とし、攻撃・バイパス手法は扱いません。
👉 https://ipusiron.github.io/dialsafe-simulator/
ブラウザーで直接お試しいただけます。
ゲートが揃って開錠した様子
各ディスクのツクがぶつかり合い、ドライビングディスクの動きが第1ディスクまで伝搬している
金庫のダイヤル錠には多様な方式があります。本ツールは、**日本で広く普及する家庭用の「4枚座の固定ダイヤル錠(固定変換ダイヤル錠)」**を簡易モデル化して可視化しています。
実機仕様・メーカー差によって構造や操作手順は異なる場合があります。
本ツールは教育用の簡略化モデルです。
- 対象:4枚座の固定ダイヤル錠(固定変換ダイヤル錠)
- 想定:目盛「0–99」、4番号の正規解錠、国産機で一般的な「最初は右回し」手順
- 非対象:可変変換型/別規格・商用大型金庫の特殊機構/電子錠など
研究・教育以外の目的(不正アクセス・器物損壊等)での利用を禁止します。
- インタラクティブなダイヤル(ドラッグ/±1ボタン/キーボード操作)
- 内部可視化:各ディスクのゲート位置・ツク(突起)連動・フェンスの状態
- 正規開錠シミュレーター:回転方向・通過回数の追跡、4ステップ手順の確認
- 学習モード(LEARN):固定ダイヤル錠の構造・原理・操作手順の詳細解説
- シミュレーターモード(SIMULATOR):実際の手順での開錠操作練習
- 多言語対応:日本語/英語のUI切り替え(ローカルストレージで設定保持)
- ダークモード:明暗テーマの切り替え対応
- 高速操作:±1ボタン長押しでの連続回転(30ms間隔の高速化)
以下は『ハッカーの学校 鍵開けの教科書』 P451よりの抜粋・要約です。
主要部品と特徴:
- 目盛盤(つまみ):0-99の目盛りが印字された操作部。直径が大きいほど高級品
- 表座(指標つき台座):赤い指標または切り込み線付きの台座
- 第1〜第3ディスク:各ディスクにゲート1個とツク2個を配置
- ドライビングディスク(駆動座):他より大きく、ツク1個、目盛盤と芯棒で直結
- 芯棒:パイプ内を通る中心軸、ドライビングディスクのみと接続
- テンションスプリング:各ディスクを密着させ、ツク同士の接触を保つ
- L寸法:表座からドライビングディスクまでの距離、扉厚より大きく必要
動作メカニズム: 芯棒を介してドライビングディスクのみが目盛盤と直結し、まずドライブされます。他ディスクはテンションスプリングで密着しており、各ディスクの**ツク(突起)**同士が当たりながら順次回転を伝達します。
バネが弱くなるとツクが空回りして故障の原因となります。故障診断:目盛盤を回しても負荷が変わらない場合はバネ故障。応急処置として金庫を寝かせると重力でディスクが密着します。
固定ダイヤル錠と鍵の錠前の連動部を上から見ると、次のようになります。
ダイヤル錠は内部に複数のディスク(円板)を持ちます。4枚のディスクなら、解錠には4つの数字を用います。
まず理解のために1枚の円板だけを考えます。
円板には 1つの切り欠き(ゲート) があり、 鍵側が施錠 のままなら閂は出たままで扉は開きません(図1)。
鍵側を解錠 しても、 ダイヤル側のゲートが解錠位置 でなければ閂を 完全に引き込めず 、扉は開きません(図2)。
鍵側が解錠 かつ ダイヤル側のゲートが解錠位置 にあると、 閂を完全に引き込める ため扉が開きます(図3)。
4枚ディスクでも同様で、 4つのゲートが閂側に一直線に揃い 、加えて 鍵側が解錠 されてはじめて扉が開きます。
ダイヤル合わせで4番号を順に入力します。ここでの「○回まわす」は、解錠の数値が指標を○回通過する意味です(「0」ではありません)。 回し過ぎたらやり直しです。
- 右に4回以上まわしてから、1番目の数値で停止
- 左に3回まわして、2番目の数値で停止
- 右に2回まわして、3番目の数値で停止
- 左に1回まわして、4番目の数値で停止
- ①完了で第1ディスクのゲートが解錠位置
- ②完了で第2ディスク
- ③完了で第3ディスク
- ④完了でドライビングディスク
→ 4枚すべてのゲートが揃う状態になります。
構造上、左始動でも最終的にゲートを揃えることは可能ですが、番号列は右始動前提で設計されています(ツク厚み分の誤差が出るため)。国産は右始動が一般的、欧米は左始動が多い点にも注意。
最後に鍵を挿入して時計回りに回転し、解錠します。鍵の解錠位置のまま引くことで扉を開けます(鍵がつまみの役割)。
- ダイヤル回転:
←/→キー、またはA/Dキー - ±1ボタン:マウスクリック(単発)、長押し(連続高速回転)
- ドラッグ操作:ダイヤル上でのマウスドラッグ
- リセット:
Rキー、またはリセットボタン - UI切替:
- 言語切替:右上の🇺🇸ボタン(日本語⇔English)
- ダークモード:右上の🌙ボタン(明⇔暗テーマ)
dialsafe-simulator/
├── index.html # メインHTMLファイル(学習・シミュレーター・チャレンジの3タブ)
├── script.js # コアロジック(ダイヤル操作、ディスク連動、i18n、チャレンジモード)
├── style.css # 全スタイル定義(CSS Grid/Flexbox、アニメーション)
├── README.md # プロジェクト説明(日本語)
├── README.en.md # プロジェクト説明(英語)
├── CLAUDE.md # Claude Code用プロジェクト指示書
├── AUTO_UNLOCK_IMPLEMENTATION_NOTES.md # 自動開錠機能実装の検討記録
├── LICENSE # MIT License
└── assets/ # 教育用画像・図表
├── screenshot.png # メインスクリーンショット
├── disks_movement.png # ディスク連動の様子
├── DialLock.jpg # 実際のダイヤル錠外観
├── DialLock1.jpg # 側面から見た4枚ディスク
├── DialLock2.jpg # 裏面から見た構造
├── DialLock3.jpg # ドライビングディスク
├── DialLock5.jpg # ダイヤル目盛り
├── AntiFire_DialLock_Component.png # 断面概略図(構成要素名称)
├── DialLock_Lock1.png # 図1:施錠状態
├── DialLock_Lock2.png # 図2:一部解錠状態
├── DialLock_Lock3.png # 図3:完全解錠状態
└── dial_lock.png # ダイヤル錠と鍵機構の連動図
- HTML/CSS/JS: 単一ページアプリケーション、依存関係なし
- assets/: 固定ダイヤル錠の教育用実写写真と図解
- 多言語対応: i18nシステム、data-i18n属性使用
- GitHub Pages: 静的サイトとして直接デプロイ可能
- 正解番号:
94 - 30 - 84 - 13(ダイヤル表示) - 内部ディスク番号:
7 - 27 - 61 - 6(Disc1-Disc2-Disc3-Driving) - 開錠手順: 右4回転→左3回転→右2回転→左1回転
- HTML / CSS / Vanilla JavaScript(依存なし・GitHub Pages向け)
- i18n(
data-i18n属性+ローカルストレージで言語保持)
現在、英語切り替え機能がありますが、一部のイラスト画像に日本語の説明が含まれています。完全な英語対応のためには、以下の画像の英語版作成が必要です:
assets/AntiFire_DialLock_Component.png:耐火金庫の固定ダイヤル錠の各要素名称図assets/DialLock_Lock1.png:図1(施錠状態)の説明assets/DialLock_Lock2.png:図2(一部解錠)の説明assets/DialLock_Lock3.png:図3(完全解錠)の説明assets/dial_lock.png:固定ダイヤル錠と鍵の錠前の連動図
現在、手動操作による正規開錠は完全に動作していますが、自動開錠機能の実装には複数の技術的課題があり、実装を見送りました。
詳細な検討記録と課題については、以下のドキュメントをご覧ください: 👉 自動開錠機能の実装検討記録
主な課題:
- ±10操作の困難さ: 細かいダイヤル調整のアニメーション実装
- 通過カウント機能: 指定番号を正確に指定回数通過させる動作の実装
- アニメーション制御: 手動操作と同じ動きをトレースする自動ダイヤル操作
- ディスク連動の再現: 各ステップでの適切なツク連動タイミング
- より詳細な物理シミュレーション(摩擦、バネの弾性など)
- 音響効果(実際のダイヤル操作音)
- 3Dビジュアライゼーション
- 異なるタイプのダイヤル錠対応(可変変換型など)
MIT License - 詳細は LICENSE をご覧ください。
本ツールは、「生成AIで作るセキュリティツール100」プロジェクトの一環として開発されました。
このプロジェクトでは、AIの支援を活用しながら、セキュリティに関連するさまざまなツールを
100日間にわたり制作・公開していく取り組みを行っています。
プロジェクトの詳細や他のツールについては、以下のページをご覧ください。











