
No.3ベストアンサー
- 回答日時:
いろいろな方法がありますが、ごく大雑把に言えば、OSはそれぞれのファイルについて
「このファイルの大きさは、このくらいです」
という情報がHDDのどこかに記録し、またそれを読み出すことでファイルの大きさを認識します。
これより詳しくはOS(より正確にはファイルを格納するHDD上のデータ構造:これをファイルシステムと呼びます)に依存することなので一概には言えません。たとえばセクタの大きさや数を基本としたものや、各ファイルの(論理的な)先頭にヘッダとして情報を持つもの等があります。
「ファイルのサイズを偽って認識させる」とは具体的にどういう状態を指すのか分かりませんが、「OSがHDDに書き込んだファイル長に関する情報」を「OSによるファイル操作」以外の方法を用いて書き換えることは、多くの場合可能です。
回答ありがとうございます。
質問に書いた「ファイルのサイズを偽って認識させる」とは、たとえば実際は3キロバイトのデータを5メガバイトに偽装できるのか?ということです。
ヘッダにファイルのサイズを記録するようなファイルシステムの場合は、同じファイルシステムのHDに偽装したファイルを転送した場合でも、サイズが偽装されたままになるのでしょうか?
また、違うファイルシステムの場合はやはり偽装が解除されるのでしょうか?
No.6
- 回答日時:
FATの場合はディレクトリエントリを使いますが、他の多くのファイルシステムではファイルを作るたびに1ブロック(クラスタ)をそのファイルの管理領域に割り当て、管理領域にはファイルサイズ、使用ブロック数、作成・変更・アクセス日時、使用しているブロックのリストなどが記録されます。
OSの保護を掻い潜ってファイルサイズ情報を書き換えれば誤認識させることは可能でしょうが、他の情報との間に矛盾が生じるので何らかのタイミングでOSがチェックすれば分かります。
ただ大きく見せるだけならファイルの後ろにダミーデータを付加すればすみますけどね。これだとファイルシステム的には矛盾ないのでエラーチェックもされませんし。
回答ありがとうございます。
ディレクトリエントリと管理領域は違うものだったんですね。
>ダミーデータを付加すればすみますけどね。
たしかにそうですね。
でも小さく見せるには、書き換えるしかないですね。
No.5
- 回答日時:
> 質問に書いた「ファイルのサイズを偽って認識させる」とは、たとえば実際は3キロバイトのデータを5メガバイトに偽装できるのか?ということです。
大昔のMS-DOS時代のファイルシステム(FAT16)では可能でした。
その名の通り、FAT(File Allocation Table)にファイルサイズが書き込まれていたので、DOSのDEBUGか何かで書き換えて遊んだ記憶があります。
> 算出方法はすべてのOSで共通なのでしょうか?
OSとファイルシステムごとに異なります。
例えば、同じWindows98でもFAT16とFAT32、更には同じFAT32でもクラスタのサイズによって変わっていたハズ。
1バイトのファイルを作って、ディスク上のサイズが何バイトになるか?とか。
回答ありがとうございます。
昔はできたんですか~。
知らなかったです。
>同じFAT32でもクラスタのサイズによって変わっていた
なるほど効率的になるように考えられているんですね。
No.4
- 回答日時:
ヘッダにファイルのサイズを記録するようなファイルシステムの場合、そのヘッダの「ファイルのサイズ」を記録している場所のデータ(値)を書き換えることは、多くの場合、可能です。
その書き換えによりどのような影響が生じるかは、ファイルシステムとOSによって異なるので一概には言えません。例えばファイルシステム内の他の部分に記録されているデータとの整合性をチェックし異常があるものと判断して何らかの対応措置を行うかもしれませんし、何ら整合性のチェックを行わず上書きされたファイルサイズのファイルがあるものとしてゴミデータを読み出してしまうかもしれません。
No.2
- 回答日時:
HDDは使用する前にフォーマットという作業を行います。
これは、ディスクにいくつかの細かい区切りを設け(これをセクタといいます)、そのセクタを管理するための領域を作成する事を言います。http://e-words.jp/w/E38395E382A9E383BCE3839EE383 …
HDDにファイルを書き込こうとすると、HDD上のセクタに記録します。管理領域には、どのファイルがどこのセクタに書き込まれたかが記録されます。ファイルの大きさによっては、複数のセクタを使います。従って、使用したセクタの数からそのファイルのサイズが判ります。一つのセクタには複数のファイルは書き込まれません。
セクタの大きさや構成はファイルシステムやOSによって違います。
回答ありがとうございます。
管理領域というのは、No.1さんがおっしゃっていたディレクトリエントリと同一のものなんでしょうか?
実際にファイルサイズの書き換えを行うときは、管理領域に記録されている使用したセクタのデータを書き換えるのですか?
No.1さんが書き換えるとファイルが壊れる場合があると説明されていましたが、これは例えば
「ファイルA(セクタ1~3)とB(4~8)が連続するセクタに記録されていた場合に、Aのサイズを拡張して1~5と書き換えたら、ファイルAにアクセスする際にBの領域にまでアクセスされてしまうからAもBも壊れてしまう。逆にAを縮小して1~2とした場合にはAだけが壊れる」
という解釈でいいんでしょうか?
また、書き換えた内容を元に戻すと、壊れたファイルを修復できるんでしょうか?
No.1
- 回答日時:
Windowsで使われているFATでいうと、ディレクトリエントリとFATの2つにデータが格納されています。
ファイル名やファイルサイズ、格納場所がディレクトリエントリに保存されています。OSなどで表示するファイルサイズはこの情報を元に算出されています。もちろん、このデータだけ書き換えれば偽装は可能です。可能ですが、実際にファイルにアクセスした段階で壊れる可能性があります。
基本的には、どのOSでもこのような形式で算出している場合が多いのではないでしょうか?汎用機でいうVTOCなんかもそうだと思います。実際に書き込んでいるファイルを読み込むことは、処理時間から言うと無茶です。HDDの残り容量を表示するだけでディスクをフルスキャンでウン十分単位^^
参考URL:http://support.microsoft.com/default.aspx?scid=k …
回答ありがとうございます。
ディレクトリエントリにサイズや更新日などのファイル情報が記録されているんですね。
これを書き換えるとどうして、ファイルが壊れてしまうんでしょうか?
>HDDの残り容量を表示するだけでディスクをフルスキャンでウン十分単位^^
いわれて見ればそうですね。
ファイルの使用領域の計算は案外時間がかかるものなんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- Windows 10 この現象も、Microsoft Explorer のお粗末な仕様のためか? 2 2023/06/09 15:06
- Mac OS 2008年製のiMacの利用方法を教えてください。 1 2022/07/20 10:56
- デジタルカメラ 画像のJPGファイルの「大きさ」と「サイズ」の意味の違いをお教えください。 8 2022/09/18 14:50
- Windows 10 USBにwindows10をいれて起動する方法 5 2022/04/14 14:29
- ビデオカメラ Panasonic ビデオカメラ編集ソフトが使えない 1 2022/06/06 14:43
- ドライブ・ストレージ NASの容量と ホルダーの プロパティの サイズと ディスク上のサイズの違い 1 2022/10/03 13:41
- 画像編集・動画編集・音楽編集 連続質問です 動画ファイルの圧縮時のビットレートというのについて教えてください 2 2023/08/06 11:50
- Excel(エクセル) 計算式がたくさん入ったExcelのファイルを他のファイルからシートを挿入した際、計算式の中に他のファ 4 2023/08/15 11:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
誤って上書きしてしまったEX...
-
ダイアログボックス
-
スレッド掲示板 作成
-
拡張子が「cda」のファイルを聞...
-
【Excel】[Expression.Error] ...
-
ファイル名が決まっていないフ...
-
ビットマップファイルの読み書...
-
PHPを習得するべきか
-
FDを入れてもワードの画面に出...
-
CD-ROM内のzipファイルの使用に...
-
ファイルのサイズについて
-
アクセスでは、一つのアプリケ...
-
mdbファイル フォームを開くと...
-
VB で fseek
-
kill ステートメント
-
ExcelVBA別フォルダにあるブッ...
-
jbibtexで以下の様なエラーメッ...
-
Excel VBAでファイルを1つづつ...
-
OutlookExpressで送信後
-
Access2002 信頼できず開けま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
Batch: フォルダ内の特定のファ...
-
特定のエクセルファイルを起動...
-
VBAでCSVファイルが使用中かど...
-
社内Excel共有ブックでの保存ト...
-
Access VBA を利用して、フォル...
-
(Excelマクロ)datファイルをエ...
-
AccessVBAで作成したExcelファ...
-
事務の派遣で働いています。多...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
拡張子が「cda」のファイルを聞...
-
月が変わったら自動でシートが...
-
Excel VBA 処理後データが重た...
-
WEBクエリが使えない場合のHPデ...
-
access関数を説明できる方いま...
-
ファイルの途中に文字列を挿入
-
特定のフォルダに入れたファイ...
-
tmpファイル なぜできる?削除...
おすすめ情報