バイナリファイル“ gibberish”の正確な原因は何ですか?

StackOverflow https://stackoverflow.com/questions/216066

  •  03-07-2019
  •  | 
  •  

質問

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

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

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

役に立ちましたか?

解決

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

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

  • 生のバイナリ値を表示するようにビューを変換することは可能ですか? ファイルを構成する1と0を表示しますか?

エディタによって異なります。必要なのは、通常のテキストエディターではなく、「16進エディター」です。これにより、ファイルの未加工の内容が表示されます(通常、バイナリではなく16進数です。ゼロと1は多くのスペースを占有し、読みにくいためです。)

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

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

他のヒント

バイナリファイルは、人間ではなくマシンが読み取るように設計されているため、意味のないものとして表示されます。悲しいことに、私たちの中には、データをよりよく見るためのやや専門的なツールはあるものの、意味不明なものを解釈することに慣れていますが、ほとんどの人は知る必要はありません。

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

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

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

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

前述のように、これらのファイルは、16進エデュターを使用するなど、別の方法で表示した場合に意味があります。

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

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

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

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

Linuxでは、" file"を使用できます。ファイルの種類を判断するのに役立つコマンド。おそらく同じことをするWindows用のプログラムがあります。

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

とにかく、バイナリファイルは馴染みのある文字と馴染みのない文字の非常にランダムな品揃えとして表すことができるため、ファイルをエディターで開くと意味がわからなくなります。

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

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

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

Hex Editors は、バイナリファイルを表示および編集するために作成されています。通常、「1と0」の代わりに各バイトを16進数のペアとして表示します。その方が読みやすいからです。

scroll top