秘密のフォルダ


雑誌やネット上で紹介されているので、ご存じの方もいるかも知れませんが、ちょっとした裏技で、エクスプローラからアクセスできないフォルダを作成することができます。この方法は、テンキーを持つDOS/V機のみで実行可能です(DOS/V機では何台かで動作確認しましたが、PC-98ではテストしていません)。

実行方法は、以下の通りです。
・MS-DOSプロンプトを開く
・フォルダを作成する場所に移動する
・'M'、'D'、スペースとキー入力する
・ALTキーを押しながらテンキーの'2'、'5'、'4'を押し
・ALTキーを離すと点が表示されるので、ここでリターンキーを押す
これで終了です。試しに"DIR"を実行すると以下の様になります(私の環境の例)。
D:\>md ・                                                        

D:\>dir

 ドライブ D: のボリュームラベルはありません.
 ボリュームシリアル番号は 1DD7-2B3C
 ディレクトリは D:\

USR      <DIR>    98-02-11 23:46 USR
WINTOOL    <DIR>    98-03-20 20:53 WINTOOL
TMP      <DIR>    98-03-20 11:55 TMP
_~1      <DIR>    98-04-26 12:01 _
    0 個        0 バイトのファイルがあります
    4 ディレクトリ    155,369,472 バイトの空きがあります

エクスプローラで表示すると、確かに'_'というフォルダが現れますが、ここにアクセスしようとすると、「フォルダ'_'は存在しません。」というエラー表示が出ます。
このフォルダは、DOSプロンプトからなら、通常のフォルダと同じ様に扱えますので、ここにファイルを置くことができます。ただし、Windows用の実行ファイルをここに置いても実行できません。削除するには、作成時の「MD」の替わりに「RD」として実行します。
このフォルダの性質上、完全なセキュリティは確保されませんが、あまり人目に触れさせたくないファイルを一時的に置くことは可能で、通常のフォルダよりは多少安全です。



この方法は、職場で実際に使いました。
マシンルームの端末は、1台のマシンを複数人で使います。Windowsのログイン名でユーザを区別し、各ユーザは「USR」フォルダの下に自分のフォルダを作ってそこを利用します。多くの場合これで事足りるのですが、ユーザ名の区別だけでは不十分だったり、どうしてもWindowsディレクトリ等を利用しなければならない場合が出てきます。そこで、私は3つのバッチファイルを作りました。自分の環境に設定するもの、元の環境に戻すもの、自分がインストールしたファイルを削除するもの、です。前者2つは毎日起動直後とシャットダウン前に実行するもので、最後のひとつは、プロジェクト終了時に1回実行するだけのものです。このバッチファイルを他人に実行されると困るため、こういったフォルダを作りそこに置いたというわけです。

どのようなからくりか

この方法で秘密のフォルダを作成すると以下の2つのディレクトリエントリが作成されます。

ロングファイル名
41 FE 00 00 00 FF FF FF  FF FF FF 0F 00 C5 FF FF   A............ナ..
FF FF FF FF FF FF FF FF  FF FF 00 00 FF FF FF FF   ................
ショートファイル名
5F 7E 31 20 20 20 20 20  20 20 20 10 00 ?? ?? ??   _~1        ..???
?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? 00 00 00 00   ????????????....

ロングファイル名の[41]はロングファイル領域の管理番号(今回は1つのディレクトリエントリで表現されるので必然的にこうなります)、[FE 00]はALTキーを押しながら'254'と入力したため254の16進数が入っており、[00 00]はロングファイル名の終端です。余談ですが、254の数字は、253〜255ならどれでもよく、何れも同様の結果が得られます。
ショートファイル名[5F 7E 31]はロングファイル名から変換したときに自動的に生成されるようです。複数のロングファイル名が同じショートファイル名になるとき、「~1」、「~2」の番号で管理するのは周知の通りです。逆に言うと、ショートファイル名の最後が「~1」であれば(通常は)対応するロングファイル名があることになります。では、ショートファイル名に意図的に「~1」を付けたらどうなるかと言うと、対応するロングファイル名がないためそのままショートファイル名として有効になります。このためにロングファイル名にはチェックサムがあります(上の例では[C5]がそうです)。

以上のことを踏まえると、次の条件を満たせば秘密のフォルダが作成できるものと予測できます。
・ロングファイル名のユニコード部分は、シフトJISに変換したときエラーとなること
・ショートファイル名の最終3文字は「_~1」であること(これは必ずしも必要でないように思えますが、私が試した限りでは必要です)
・ディレクトリエントリ域に於いて、ショートファイル名の直前にロングファイル名が存在し、チェックサムが正しいこと

手動で作成できれば「テンキーを持つDOS/V機」という条件もなくなります。何れにしても、エクスプローラの性格を利用した姑息な手段であるため、今後も使えるという保証はありません。逆に、こういった姑息な手段で喜んでいる輩がいたら、

5F 7E 31 20 20 20 20 20  20 20 20 10 00 ?? ?? ??   _~1        ..???
?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? 00 00 00 00   ????????????....
            ↓
5F 20 20 20 20 20 20 20  20 20 20 10 00 ?? ?? ??   _          ..???
?? ?? ?? ?? ?? ?? ?? ??  ?? ?? ?? ?? 00 00 00 00   ????????????....

のように変更してみたら面白いでしょう。エクスプローラ上では今までと同じように'_'というフォルダが表示され、チェックサムが無効になるため、アクセスできてしまいます。エラーが出るはずのフォルダにはアクセスしようとはしないので、なかなか気付かないのではないでしょうか?

戻る