[Win/Mac]バイナリファイルの中身をそ~っと覗いて見てごらん数字の羅列で目が泳ぐ

バイナリファイル

 

 

こんにちは。ナガオカ(@boot_kt)です。

 


バイナリファイルってご存知ですか?

大雑把に言うと、テキストファイルじゃないやつです

  • 音楽ファイル(mp3とか、oggとか、wavとか)
  • 動画ファイル(mp4とか、aviとか、movとか)
  • 画像ファイル(jpegとか、pngとか、gifとか)
  • 実行ファイル(exeとか)
  • 圧縮ファイル(zipとか、lhaとか、7zとか)
  • アプリケーション(Excelとか、Chromeとか)

 

プログラミングをする人であれば、テキストファイルとバイナリファイルの違いはちゃんと理解していると思いますが、プログラミングをしない人ならばバイナリなんて聞いたことないっていう人もいるでしょう
まぁ、知っている必要もないですからね

 

この記事では、そんなバイナリファイルの中身を、ほんのちょっとだけご紹介したいと思います

 

「そういや、ファイルってダブルクリックしかしたことないし、中身を見たことなんか無いな・・・」
「中身ってどうなってるんだろ?」

時計や機械の裏蓋のネジを外すような感覚で、この記事をお読み頂ければ・・・、いや眺めて頂ければと思います

 

難しい事は何も書いていませんので、大丈夫です、ちゃんと読み進められます

だって、何も解説していないんですから!(笑)

 

 

ちなみに、うちの子は小さい頃にこの絵本をよく読んでました
※この記事とは一切関係無いです

この記事のザックリした内容
◆対象読者

  • バイナリファイルって知ラネ(ハナホジー)な人
  • プログラミングなんてしない人

 

◆解決できるかも知れないお悩み

  • 無いです!
  • バイナリファイルの中身そうなってんの、へー、そう、ヨカッタネ(ハナホジー)って感じになります

 

 

 

3秒で分かる!テキストファイルとバイナリファイルの違い!?

簡単に説明しましょう!

メモ帳とかのテキストエディタで開いて
 → 書いてる内容を人間が理解でき
  → テキストファイル

メモ帳とかのテキストエディタで開いて
 → 書いてる内容を人間が理解できない
 → なので、別のソフト(画像処理ソフトとかExcelとか)が必要
  → バイナリファイル

ぐらいのイメージで充分です!

 

バイナリファイルの中を見てみましょう!

準備するもの

バイナリエディタ

Macの場合

Macなら、0xEDHexEditを使えばいいでしょう

 

Windowsの場合

WindowsであればStirlingをオススメします
※開発自体は終了しています

使ったことはないけれど、Dump4wというものもあります
こちらは2013.10.14まではメンテされているみたいで、Windows10でも動作確認されているようです

バイナリエディタもテキストエディタと同じぐらい拘りがあるんですけど、今回は単に見るだけですのでお好きなものをお使いください

↓こちらもご参考にどうぞ

 

ファイル

全部じゃなくていいので、ファイルを幾つか準備しておいてください
なんでもいいです

バイナリエディタで中身を見ますので、万が一上書きしてしまって二度と開かなくなるとまずいため、バックアップは取っておいてくださいね

  • テキストファイル
    本来、テキストファイルはテキストエディタで見るものですが、バイナリエディタで見るとどうなるか確認してみましょう
  • mp3ファイル
  • wavファイル
  • jpegファイル
  • pngファイル
  • gifファイル
  • exeファイル
  • zipファイル
  • アプリケーション

 

さぁ!、各ファイルの中身を見てみよう!

  1. バイナリエディタを立ち上げます
  2. 見たいファイルをバイナリエディタへドラッグ&ドロップします

手順はこれだけです

保存のボタンはクリックしないでね!!
CtrlScommandSも押さないでね

 

それでですね、事前のお断りですが、解説はしていません!(キリッ)

面倒だから・・・・(笑)
じゃなくって、この記事の目的はなんとな~くでいいので眺めて欲しいだけです

共通性があるな とか、
これとこれとこの部分が違う、なぜ? とか、
なんで全部同じ形なの? とか、
お!この部分書いてることが読めじゃん! とか、

そういう感じで興味を持ってくれると嬉しいです

 

以下に私の手元にあったファイルをバイナリエディタで開いたものを貼り付けていますが、是非あなたの手元のファイルを同じように見てみてくださいね

 

では、↓見ていきましょう
※各種類のファイルはそれぞれ違うものを4本ずつ見ています(テキストファイルだけ1本)

 

テキストファイルを見る!

文字コードについての注意
Windowsの場合、テキストファイルに日本語を書く場合文字コードをShift-JISで書いてください
(StirlingはUTF-8に対応していないです)

文字コード?
Shift-JIS?
UTF-8?

とおっしゃる方は、テキストファイルに日本語を書かず、半角英数字のみを書いてもらえればOKです

 

こんな感じになります

 

左側がこのファイルの本当の正体です
右側がこのファイルの本当の正体を文字にしたものです

ほんのちょっとだけ説明させてください
※混乱しそうなら読まなくていいです

「本当の正体」と言うのは82とかA2とかという数字のことで、ハードディスク(or SSD)に保存されるデータは82とかA2とかとして保存されます(これが画面左側で表示されています)

それをコンピューターが自動的にとかとかの文字に変換してくれているだけです(これが画面右側で表示されています)

 

MP3を見る!

ID3がありますね
ID3タグって聞いたことないですか?
そのID3ですよ

どれも形がバラバラですけど気にしないでね

日本語で著者名と出版社名、タイトルが入っているのが分かるでしょうか?

こういう情報がファイルに埋め込まれているので、音楽再生ソフトがタグを読み取ることができるんですね

 

WAVを見る

RIFFとかWAVEとかfmtとかがありますね(画面右側参照)

 

JPGを見る!

左側の左上を見ると、
FF D8 が先頭に必ずあります
その後は、ExifJFIFが入っています(画面右側参照)

 

GIFを見る!

GIF89aが先頭にあります(画面右側参照)
ファイルによっては、GIF87GIF87aが入ることがあります

 

PNGを見る!

1行目が常に同じですね
特に、最初にPNGと表示されていますね(画面右側参照)

 

EXEを見る!

1行目~9行を見ると、全く同じですね
右側を見ると、This program cannot be run in DOS mode というメッセージも見えます

WindowsでのEXEの中身は全てこういった感じの形になっています

 

ZIPを見る!

50 4B 03 04 が必ずあります(画面左側参照)

 

Javaeのclassを見る!

CA FE BA BEが入ります(画面左側参照)

 

ファイルの中身を見てみてどうでしたか?

さて、ファイルの中身をズラッと見てみましたが、どうだったでしょうか?

意味不明
分からん!

という感想でしょうか?

もしもそういう感想だったら、

どこが違うのかなぁ?
共通してる部分はどこかなぁ?

みたいな視点でもう一度ご覧ください

きっと何か見つけられると思います

 

バイナリファイルの中身を知って何に訳に立つの?

プログラミングしない人なら特に役には立たないでしょうwww
↓こういうようなファイルの正体を突き止めたいことがあるなら、そういう時に役に立つかも知れませんね

  • なぜか開かないファイル
  • 拡張子が付いていないファイル

 

プログラマなら、役に立つどころか、知っておかないとだめです
別に各ファイルの構造を覚えておく必要はありません・・・・、って言うか、覚えられるワケないです
必要な時に検索すればいいです

ただ、バイナリに対して全く何の知識も無いと何も検索できないでしょう

今回書いた内容ぐらいは頭の片隅にでも入れておいてください

 

もしもバイナリに興味が出たら、次は何をすればいいの?

1.キーワードを検索する

MP3ファイルの場合であれば、
MP3 フォーマット
MP3 構造
MP3 ファイル構造

WAVファイルの場合であれば、
WAV フォーマット
WAV 構造
WAV ファイル構造

みたいなキーワードで検索してみてください

ファイルの構造を解説した記事が見つかります
大体日本語での記事が見つかります

珍しいファイルだと日本語記事はないかも知れません
その時は英語で検索しましょう

 

2.手持ちのファイルを見てみる

1番で見つけたファイルの構造を書いたものと、手持ちのファイルをバイナリエディタで開いたものを、見比べてください

iTunesで作ったMP3ファイル、Windows Media Playerで作ったMP3ファイル、その他のフリーソフトで作ったMP3ファイルなど、色々なソフトで作ったファイルを比較しても面白いですよ

同じ種類のファイルでも全てが全て同じワケではありませんので、色々なものを見てみてください
順番が入れ替わっていることもありますよ

間違い探しというか、宝探し的な感覚でお遊びで見るときっと楽しいですよ

 

プログラミングについては話が長くなりますので今回は省略します

 

本を読む

この記事の下の方に参考書籍をピックアップしています
興味があればぜひそれらを読んでみて、バイナリファイルを知ってください

 

 

広告




 

さいごに、

この記事はプログラマじゃない人向けに書きました

別にバイナリの中身を知った所で一銭の得にもなりません

でも、知的好奇心と言うか、なんか楽しくないですか?

 

僕は小学校低学年頃から、モノを分解するのが好きでした
ドライバー1本持って、おもちゃとか時計とか、家にあるものを結構いろいろと分解しました

ネジを全部外し、裏蓋も外し、そして基板がゆっくりその全貌を表すその瞬間がとても好きでした
非日常感が目の前に見えるのが楽しくて仕方なかったです

もちろん基板とか電気とか機械の知識なんて一切ありません
なので余計に基板なんて見るからにワケわかんなくて触っちゃいけないものに見えますよね

それを分解しちゃうなんて、やったらダメだけどやっちゃえ!感が楽し過ぎでしょ!!!(笑)

ネジだけならまだしも、トコトン全部やっちゃうので、元に戻せないこともありましたwww

 

役に立つ立たないを考えるのは個人的には今でも好きじゃなくて、楽しいか楽しくないかそれが問題なんです!(笑)

解説を抜きにして、ただただ眺めてもらって、あなたのパソコンであなたの持っているファイルを見てみてください
そして、何が書かれているのか、宝探しをするみたいな感じでぜひ見てみてください

では!

 


 

プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!

 

 

参考書籍

広告
広告
バイナリファイル

プログラミングを楽しもう!

初心者向けのプログラミング教室やってます!
Skype or 対面で対応致します。
C言語、ExcelVBA、Scratch、Linux初歩の初歩といろいろなコースがあります。
※Rubyコース準備中!

小学生のお子さまにはScrachでプログラミングを楽しんで頂けます。

無料体験がありますので、是非お気軽にレッスンを受けてみてください。
プログラミングは楽しいですよ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。