20

この特定の質問に対する答えは見つかりませんでした。おそらく1つはありません。しかし、私はそれについてしばらく疑問に思っていました。

テキストエディタで見たときに、バイナリファイルが「ぎこちない」と表示される原因は何ですか。暗号化されたファイルでも同じです。ファイルのバイナリ値をASCIIに変換しようとしていますか?ビューを変換して生のバイナリ値を表示することはできますか?つまり、ファイルを構成する1と0を表示することはできますか?

最後に、どのプログラムがデータファイルを適切に開くかを決定する方法はありますか?多くの場合、特にWindowsでは、ファイルが孤立しているか、特定のプログラムに関連付けられていません。テキストエディタで開くと、それがどこに属しているかがわかることがありますが、ほとんどの場合、ぎこちないためにわかりません。拡張機能が情報を提供しない場合、どのプログラムに属しているかをどのように判断できますか?

4

7 に答える 7

19
  • ファイルのバイナリ値を ASCII に変換しようとしていますか?

はい、まさにそれが起こっています。通常、ファイルのバイナリ値には、印刷できない ASCII 制御文字も含まれているため、通常のテキスト エディターではさらに奇妙に表示されます。

  • ビューを変換して生のバイナリ値を表示する、つまりファイルを構成する 1 と 0 を表示することはできますか?

それはあなたのエディタに依存します。必要なのは、通常のテキスト エディターではなく、「16 進エディター」です。これにより、ファイルの生の内容が表示されます (0 と 1 は多くのスペースを占有し、読みにくくなるため、通常は 2 進数ではなく 16 進数で表示されます)。

  • 最後に、データ ファイルを適切に開くプログラムを特定する方法はありますか?

「ファイル」と呼ばれる Linux コマンドライン プログラムがあり、ファイルを分析し (通常は一般的なヘッダー パターンを探します)、ファイルの種類 (テキスト、オーディオ、ビデオ、XML など) を教えてくれます。等)。Windows 用の同等のプログラムがあるかどうかはわかりません。もちろん、このプログラムの出力は推測にすぎませんが、ファイルの形式がわからない場合に非常に役立ちます。

于 2008-10-19T05:57:42.730 に答える
5

バイナリ ファイルは、その中のデータが人間ではなくマシンが読み取るように設計されているため、意味不明に見えます。悲しいことに、私たちの何人かは、データをよりよく見るのに役立つ多少特殊なツールを使用しているとはいえ、意味不明なことを解釈することに慣れていますが、ほとんどの人は知る必要はありません.

ファイル内の各バイトは、現在のコード セット (Windows ではおそらく CP1252) の文字として扱われます。たとえば、バイト値 65 は「A」です。ウェブ上で実例を簡単に見つけることができます。そのため、バイナリ データを構成するバイトは、コード セットに従って、テキスト エディタが可能な限り表示されます。バイナリを変換しようとはしません - 方法を知りません (元のプログラムだけがそうします)。

どのプログラムがファイルを作成したかを検出する方法については、場合によってはできるかもしれませんが、簡単かつ確実ではありません。Unix (または Windows の Cygwin) では、'file' プログラムが役立つ場合があります。このプログラムは、最初の数バイトを調べて、プログラムを推測しようとします。

暗号化されたデータは意味不明に見えるはずです。意味不明のように見えない場合は、おそらく十分に暗号化されていません。

于 2008-10-19T05:58:59.670 に答える
3

バイナリファイルには印刷できない文字が含まれている可能性があるため、表示は面白く見えます。そのような文字を他のものに置き換えるのは表示プログラム次第です。

これは、16進エディタを使用することで防ぐことができます。このようなプログラムは、ファイルの各バイトを16進値として表示します。これにより、ファイルの表形式のビューが表示されますが、データをそのように表示することに慣れていないため、平均的な人がこのビューを解読するのは簡単ではありません。

ファイルが属する可能性のあるプログラムを見つけるには、いくつかの方法があります。ファイルの先頭を見ることができ、ある程度の知識があれば、ファイルの種類を認識できるかもしれません。同じ文字で始まるタイプがいくつかあります(RAR、GIFなど)。他のタイプの場合、それはそれほど簡単ではないかもしれません。

Linuxでは、「file」コマンドを使用してファイルタイプを判別できます。同じことをするWindows用のプログラムがおそらくあるでしょう。

于 2008-10-19T05:53:44.610 に答える
2

メモ帳などの標準的なテキスト エディタで表示するとバイナリ ファイルが意味不明に表示される理由は、これらのタイプのアプリケーションで一般的に使用されるエンコーディング (UTF-8 の ASCII など) で表示すると、データがエンコードされたときに文字にマッピングされるためです。表示の場合、このプロセスの出力は、一般に、マッピングされているバイナリ データと同じくらい人間にはほとんど意味がありません。

前述のように、これらのファイルは、16 進エディタなどの別の方法で表示するとより意味があります。

特定のファイル タイプは、特定のタイプのすべてのファイルに存在するデータによって認識できます。たとえば、すべての実行可能ファイル (*.exe) は文字 MZ で始まります。

于 2008-10-19T05:59:39.983 に答える
2

多くの場合、バイナリ データは非常にランダムです。定義上、特に暗号化されたデータ。各バイトは、256 文字のいずれかで表すことができます (Unicode は式から除外されます)。ASCII はこれらのうち 128 のみをカバーし、実際に印刷可能な文字は 94 のみです。ASCII 範囲外には、多くの国際文字と奇妙な記号があります。これらは確かに 128 以上あるため、特定のシンボルのセットを選択するにはコードページを指定する必要があります。

いずれにせよ、バイナリ ファイルは見慣れた文字と見慣れない文字の非常にランダムな組み合わせとして表すことができるため、ファイルをエディターで開くと意味不明に見えます。

ファイル (バイナリまたはテキスト ファイル、実際には違いはありません) を常に 16 進エディタで開き、生のバイナリ データを確認できます。

特定のファイルを作成したプログラムを特定する方法はありません。特に、プログラムがデータを暗号化している場合、すべての希望が失われます。それ以外の場合は、特定の「署名」を簡単に認識できることがよくあります。

于 2008-10-19T06:04:06.930 に答える
0

はい、ワードパッドとメモ帳、および他の多くのテキストエディタは、それを使用して開くファイルはすべてテキストファイルであると想定し、ファイル内のバイトで表されるASCII文字を表示しようとします。

16進エディタは、バイナリファイルを表示および編集するために作成されています。通常、各バイトは「1と0」ではなく16進数のペアとして表示されます。これは、そのように読みやすいためです。

于 2008-10-19T05:54:49.400 に答える
0

テキストエディタは、文字エンコードなどを除いて、入力されるデータについてほとんど想定していません。したがって、(あなたが言うように)ファイルのデータをASCIIとして読み取り、そのように表示します。バイナリデータは常に英数字の範囲内にあるとは限らないため、ぎこちなくなります。生のバイナリ値を表示するには、XVI32のような16進エディタが必要です。

多くの場合、バイナリファイルには、それらを使用するプログラムの外部にコンテキストがありません。一部のバイナリ形式には、最初に4バイトのマジックシーケンスが含まれています(たとえば、Java .classファイルは「CAFE」で始まります)が、プログラムなしでそれらを認識するためには、それらの4バイトシーケンスのマッピングが必要です。一部のLinuxディストリビューションには、さまざまなバイナリ形式のこの情報が含まれていると思います。ファイルの先頭を調べて識別を試みます。それ以外にできることはあまりありません。

于 2008-10-19T05:56:18.163 に答える