備忘録のぺえじ

NDFF

NDFFリファレンス(Ver.0.9.6)

いちいちコマンドラインで確認するのが面倒なので作成しました。ところどころ注釈をつけていますが、簡単すぎるものと難しすぎるものはスルーしています。うまい解説が見つかったら随時書き足していきますが、とりあえずこれぐらいあれば普通の検索は出来ると思います。

Syntax(=構文):

ndff [-<option>...] <filename> [-<option>...]

Options:

 > (Gobal options)

-?                    : Help page (also -h)
-about                : About the NDFF, license & legal info
-deferred             : List results after the search is complete
                      >検索が完了した後に発見したファイル/フォルダのパスをまとめて出力する
                      >通常は見つけ次第列挙していきます
-range <begin> [<end>]: Scan ID range lower and upper bounds (default: 0 -1)
-case                 : Case sensitive search
                      >これを指定したときは大文字と小文字を区別して検索する
-d <drive>            : Specify drive letter (in form of 'd:') (default: current drive)
                      >検索対象のドライブの指定(通常はカレントドライブ)
                      >"-d e:"といった感じで指定する
-regex                : Use regular expressions
                      >正規表現を利用した検索を行う
-nocache              : Disable directory cache
-JP                   : Do not resolve junction points

→"-JP"は*1を参照

 > Output redirection:

-outfile <filename>   : Save output to Unicode file
                      >unicode形式のテキストファイルに検索結果を出力
-outCON               : Suppress console output
                      >発見したファイル/フォルダのパスを出力させない
                      >つまり検索総数や発見数のみを表示

 > Column displaying options:

-si                   : Show file MFT ID
-ssize                : Show file size
-salloc               : Show allocated size
-snamespace           : Show namespace of the filename
-sd                   : Show drive letter
                      >デフォルトではドライブレターを表示しないため重要
-sP                   : Do not show file path
-silent               : Only list found files, do not show summary
                      >検索総数や発見数を出力させない
                      >つまり発見したファイル/フォルダのパスのみを表示

→"-si"は*2、"-salloc"は*3、"-snamespace"は*4を参照

 > Filename namespace selection: (only one allowed)

-nall                 : Look all filename namespaces
                      >全てのタイプのパスを検索
                      >つまり一部ダブって表示されます
-nwin32               : Look Win32 namespace (default)
                      >W32、W&D、PSXのパスに絞って検索
-ndos                 : Look DOS namespace
                      >DOS、W&D、PSXのパスに絞って検索
-nposix               : Look POSIX namespace
                      >-nwin32と全く同じに見える…調査中orz

*4の分類に従ってどれだけの範囲を検索するかを設定するオプション

 > Result filtering options:

-fDIRS                : Do not list directories
-fFILES               : Do not list regular files
-fsize <min> [<max>]  : List only files with file size in range (default: 0 -1)
-falloc <min> [<max>] : List only files with allocated size in range (default:0 -1)
-funused              : Include unused files in result
-fUSED                : Do not list used files
-fsystem              : Show special NTFS files

リファレンス注釈

*1

ジャンクションとは、リバースポイントというNTFS特有の機能を利用して主にフォルダに別名を付加する機能です。このオプションを指定しないとジャンクションの張られたフォルダを検索できません(本文の訳と合ってない気もするが…)。

なんでわざわざ指定しないと検索できないようにしたんだろう。指定すると検索速度が落ちたりするのだろうか。

*2

"Master File Table"というNTFSパーティション内の全てのファイル/フォルダ情報が格納されたエリアにおいて、ファイル/フォルダに管理用に割り当てられたIDを表示させる。

*3

"allocated size"とは、そのファイルが占めるアロケーションユニット数とアロケーションユニットサイズの乗数のこと。たとえば、アロケーションユニットサイズが4096byteでファイルサイズが59904byteなら"allocated size"は61440byteになっている…はず。

HDDなどは、処理の高速化のために実質的にはアロケーションユニット単位で区切られて管理されています(普段見てるファイルサイズはMFTに記録されてるもの)。よって、この数値が実際のディスクの占有量になるのかな。

*4

ぶっちゃけ、namespace(=名前空間)の詳しい仕様とかよく分かんないのでツールの機能に関してだけ。当該オプションをオンにすると、検索されたパス名の前にそれぞれ3文字ほど現れるはずです。パターンとしては4種類あって、

  1. DOS
    ショートパス(所謂8.3形式のパス名)とロングパス(普通のパス名)を併せ持っているファイル/フォルダのショートパスの方を、フォルダ又は拡張子のみで名前の無いファイル(.htaccessや.RECYCLERなど)に限定して表示。「限定して」というのは表現として微妙だけど、検索の際のイメージとしてはそれでいいと思う。
  2. W32
    ショートパスとロングパスを併せ持っているファイル/フォルダのロングパスの方を、こちらは全てのファイル/フォルダに対して表示。
  3. W&D
    ショートパスとロングパスを併せ持っているファイル/フォルダだが、ロングパスでも8.3形式に収まるため区別する必要が無いもの。
  4. PSX
    ショートパスを持たないファイル/フォルダ。本来、WinXPはロングパスと同時にショートパスを内部で作成しているのですが、レジストリの設定でこれを止めることが出来ます。それ系のツールでとりあえずそうしてる人は多いと思いますが。

と、おそらくこのような感じで分類されています。ちなみに、これらの分類はベースファイル名("C:\WINDOWS\hoge.txt"なら"hoge.txt")を基準にして判断しています。