SlideShare une entreprise Scribd logo
1  sur  83
目grep入門
 +解説
 murachue




            1 / 83
いいわけ 1
• なぜかよくわからないけど好評だったらしい
• でも
 – いみわかんねwww
 – 後半が意味不明
 – つーかそれ目grep言わないでしょ
• というツッコミが…

• 頭おかしいというのがうけたらしい?
 – 全然おかしくないよ!
• が、人によっては「ためになる資料です!!」というコ
  メントもあったり


                              2 / 83
いいわけ 2
• これはこまった

• そもそも、自分で発表を見返して何言ってい
  るのかわからなかった件について
じゃあ解説つければいいんじゃね<いまここ>




                         3 / 83
と、いうわけで

解説付きはじまりー




            4 / 83
何が必要?




        5 / 83
はい、ヘキサエディタですね

                6 / 83
• テキストエディタでもなんとかなる時はありま
  すが、基本的に辛いので無難にヘキサエディ
  タを選びましょう。
 – Null文字が消えたりするし
 – プロポーショナル文字使われるし
 – 折り返し位置がばらばらだし
 – などなど…?



                      7 / 83
8 / 83
9 / 83
10 / 83
• 3枚ほどhexdumpを見ていただきましたが、い
  かがでしょうか。
 – さっぱり
 – 何の形式かは分かった
 – 個人特定した (こわい)




                         11 / 83
• 「おまいらバイナリアンはこんなものばっかり
  見ているんじゃねーの」と思うかも知れません
 – 実際そういう時もあるけれど
 – ツール使うよ!!
• その一つが…




                      12 / 83
見える化(笑)




          13 / 83
BZやstirlingにはビットマップ表示という機能があるので、
それを使ってみましょう。BZの方がちょっぴり高機能です。
                                   14 / 83
わかりやすい!
(笑)なんてつけて正直スマンカッタ




                    15 / 83
ひたすら同じものが
並んで退屈なものが…




  一目でデータの違いがわかる!!
(矢印の部分がそれぞれ違いますよね)




                     16 / 83
目grepに必要な知識

    •シグネチャ(マジックナンバー)
    •見た感じ(パターン)

あくまで個人的な意見なので、人によって違うと思います。
                              17 / 83
ちなみに私の場合は、




             18 / 83
ひたすらファイルを見る作業

  によって鍛えられました…




                 19 / 83
というわけで、いろいろなファイルを見ていきましょう




         sample




                            20 / 83
• txt
     – Shift_JIS, EUC-JP, UTF-8, UTF-16…
 •   ゲームが使うファイル
 •   bmp
 •   wav
 •   exe, com, bin…
 •   jpg, png, gif...
 •   lzh, zip, cab, rar...
下に行くほど規則性が無くなっていく(高エントロピー)ように並べて
みました。あくまで感覚です。
                                           21 / 83
説明があまかった…
• このスライドで説明するときに使うビットマップビューは
  Binary Editor BZのものです。
 – stirlingも同じ色づけらしい….?
• 1ドット1バイトに相当します。横幅128ドット。
• 1ドットごとの色はその部分に当たるデータの値により
  ます。
• 色づけは以下の通り
 –   白    : 0x00        (NULL文字)
 –   水色   : 0x01~0x1F   (ASCII制御文字)
 –   赤    : 0x20~0x7F   (ASCII普通の文字)
 –   黒    : 0x80~0xFF   (MSBが立っている)
• 詳しくはBZのヘルプをご覧ください。

                                       22 / 83
• txt
    – Shift_JIS, EUC-JP, UTF-8, UTF-16…
•   ゲームが使うファイル
•   bmp
•   wav
•   exe, com, bin…
•   jpg, png, gif...
•   lzh, zip, cab, rar...

                                          23 / 83
テキストファイルなの
   で普通に読めます。




    ASCIIの普通の文字と
たまにCR/LFの制御文字があるので
  赤(ちょっと水色)になります




       ASCII


                     24 / 83
ASCII文字だけのUTF-16は
             1文字ごとに0x00が入るので
               こんな感じになります。
BOM




         ASCII(UTF-16)

      ビットマップは縦縞になります。

                                  25 / 83
日本語はMSBが立つことが多いので
                 ビットマップは黒くなってきます。
                日本語だけだとほとんど黒(+水色)に。



                 以降、ここはShift_JISで表示します。
                これはShift_JISなので普通に読めます。




                     Shift_JIS
   Shift_JISは
81、82が多い感じ
  (=ひらがな)。


                                          26 / 83
EUC-JPは、Shift_JISより
         もうすこし黒いですね。




               半角カナが多いです。




Ax、Bx、Cxが多い?



           EUC-JP


                               27 / 83
EUC-JPよりもうちょっと黒い?




                   糸へんの漢字が多くなります。




E3 xx xxが多いです。
                  UTF-8


                                    28 / 83
ASCII文字があると縦線が見えます。
日本語があるのに黒くない(赤い)。




      (このサンプルではHexdump側は
         ASCIIしか見えない…)




       UTF-16


                           29 / 83
WindowsのexeファイルにはUTF-16な文字列が
   入っていることが多いのでサンプルとして
          持ってきてみました。




(x86実行可能部分)




          UTF-16
                 0が多く見えますね!

                                30 / 83
• ここで紹介したtxtファイルは、あくまで日本語
  が多い時の話です。
• 韓国語や中国語など別の言語はあまり見な
  いのでよく知りません…
 – また別の見え方になると思います。




                        31 / 83
txt
    – Shift_JIS, EUC-JP, UTF-8, UTF-16…
•   ゲームが使うファイル
•   bmp
•   wav
•   exe, com, bin…
•   jpg, png, gif...
•   lzh, zip, cab, rar...

                                          32 / 83
ゲームが使うファイルは
   モノによるので説明は適当…



PNGの部分       このファイルには
         PNGファイルがありますね。
          (臼NG、IHDR、IDATなど…)




     よくあるのはパラメータとかが
       書いてあるパターンで、
      固定長(縦か斜めに揃う)で
       疎な感じに見えます。




                               33 / 83
txt
  – Shift_JIS, EUC-JP, UTF-8, UTF-16…
ゲームが使うファイル
• bmp
• wav
• exe, com, bin…
• jpg, png, gif...
• lzh, zip, cab, rar...

                                        34 / 83
BMPのシグネチャ




   この画像の場合
    カーブの部分が
ビットマップビューに見えます




BMPのようなべた画像の場合は
   繰り返しが見られます。

                   35 / 83
BZの色づけで残念な例は
白っぽい画像は真っ黒になってしまい、
 ビットマップと気づきにくい所です。




                     36 / 83
txt
  – Shift_JIS, EUC-JP, UTF-8, UTF-16…
ゲームが使うファイル
bmp
• wav
• exe, com, bin…
• jpg, png, gif...
• lzh, zip, cab, rar...

                                        37 / 83
wavファイルのようなべた音声は
   まだら模様が見えます。




                   wavファイルの
同じ文字が繰り返される         シグネチャ
   ことが多い




PCM 11k 8bit mono

                              38 / 83
16bitはまだら+点々が見えます。




PCM 11k 16bit mono

                      39 / 83
(拡大)




PCM 11k 16bit mono

                     40 / 83
ADPCMは水色が多いことが
      多かったです。

     ADPCMの場合、
  まだら模様は見えにくいです。

    でも水色率の波は見えたかも。




ADPCM 11k 4bit mono

                      41 / 83
txt
  – Shift_JIS, EUC-JP, UTF-8, UTF-16…
ゲームが使うファイル
bmp
wav
• exe, com, bin…
• jpg, png, gif...
• lzh, zip, cab, rar...

                                        42 / 83
黒っぽい         白・水色っぽい          赤っぽい     ぐちゃー
                                       ごま塩




          ARM、MIPS、SPARCは            x86は命令が
       命令が固定長(32bit)なので縦に揃う          可変長なので
                                       揃わない


 (ここではTHUMBモードは無かったことに…)
                                          43 / 83
x86-64は赤っぽい
    ですね。      (ごま塩)
ごまではない塩。

  白の部分が
  多いような
  気がします。




                      44 / 83
txt
  – Shift_JIS, EUC-JP, UTF-8, UTF-16…
ゲームが使うファイル
bmp
wav
exe, com, bin…
• jpg, png, gif...
• lzh, zip, cab, rar...

                                        45 / 83
ヘッダ部分



 JPGなど圧縮された           JPEGのシグネチャ
データがあるファイルは
ぐちゃぐちゃに見えます。




                jpg
        (元画像)

                                   46 / 83
やはりデータ部は
 ぐちゃぐちゃ




            ZIPファイルの
             シグネチャ




ヘッダ部       zip

                       47 / 83
gzipのシグネチャ
           1F 8B (08)はあまりにも有名



やはりデータ部は
 ぐちゃぐちゃ




   (おまけ)gzip

                                48 / 83
(PDFの一部より、選択部分)




             zlibのシグネチャ。78 9Cは有名。
             他にも78 DA、78 01などたまにあり



やはりデータ部は
 ぐちゃぐちゃ
              (あ、ここPDF部分ですね…)




      (おまけ) zlib

                                     49 / 83
• まめちしき: zip、gzip、zlibのデータ部分はどれ
  もdeflateという同じアルゴリズムで圧縮されて
  います。
• 圧縮されている部分はさすがに読めないので、
  これらは(私の場合)ヘッダを頼りに探していく
  ことになります。




                              50 / 83
• ちなみに、圧縮されているデータの他に、暗
  号化されたデータも同じようにぐちゃぐちゃに
  見えます。
• 見分けはつかないと思います…。(ヘッダ等を
  参考にできるなら別)




                          51 / 83
実践




     52 / 83
某ルータのファームウェア




               53 / 83
おなじみgzipのシグネチャだ!!




                    54 / 83
(展開後)




むむっ、縦に並んでいて
水色っぽい…MIPSだな!?




                         55 / 83
(スクロール後)




ASCIIテキストだ!
                            ra、fp、hi、lo…
                         MIPSで間違いないな!




                                       56 / 83
(さらにスクロール後)




  この感じ…
音声かビットマップか?




                     57 / 83
音声でしたー
 (μ-law)




           58 / 83
某CTFの問題

 ばらばらzip




           59 / 83
Unallocatedって…
 不吉だなあ…




    56MB…




                 60 / 83
Unallocatedで不吉ってなによ
• 最近、CTF(ハッキングコンテスト)の問題として出
  始めました
• ファイルシステムの未使用領域(unallocated
  area)だけを切り取ったファイルを渡されるので、
  そこからkeyを見つけ出す作業になります
• 削除されたファイルが鍵となることが多いです
• ファイル名、クラスタチェーンなどの情報
  (metadata)が無いため、解くのはかなり難しい事
  が多いです
 – かなり断片化してたら解くのは無理レベル

                            61 / 83
なんじゃこりゃ?




なにか構造を持っていそうだが…




UTF-16のASCIIのようなものもあるな…




                          62 / 83
(スクロール後)




x86のコードもあるぞ…




         この混沌具合、
      どう見てもunallocatedです。
     本当にありがとうございました。


                            63 / 83
(さらにスクロール後)




 むむ、怪しいzipファイル…!
 (keyfileってファイル名…!!)




 ビットマップビューを参考に
切り取ってみて展開してみたが、
 壊れていると表示され駄目。




                       64 / 83
(さらにさらにスクロール後)




    FILEレコードがある…
  どうやらNTFSの未使用領域を
    集めたモノらしいな。



FILEレコードが並んでいるので
ここはMFTだった場所らしい。




ここには例のzipファイルの情報は
   ありませんでした…。

                    65 / 83
(さらーーーにスクロール後)




 むむっ、このぐちゃぐちゃ具合、
圧縮データor暗号化されたデータだな!?

(さっきのzipとくっつけてみたが、やはり
 壊れていると表示されてだめでした。)




                        66 / 83
一旦例のあやしいzipがあった
  場所に戻ってみる




そういえば、ビットマップビューに
   縞々が見えないか…?




    (普通の圧縮されたデータなら
    このような縞々はでないはず…)




                      67 / 83
(拡大)




       こんな感じに…




                 68 / 83
(拡大)




(ディスプレイの性能に左右されるかも…)




                       69 / 83
スクロール後




気づいたら、同じような縞々が
    見える場所が
   ほかにもあるぞ!?




                 70 / 83
さらにスクロール後




      ここも縞々だ
  と思ったらzipの終わりが見えた




                     71 / 83
さっきの縞々があった部分
くっつけたらいけるんじゃね…!??




                    72 / 83
「CRC エラーはありません。」

 いけちゃった━━(゚∀゚)━━!!




                     73 / 83
早速keyfileを展開してみました。




        うーん、知らない形式だなあ…




でもこの感じ、べた形式に見える。
  音声かビットマップかな?




                         74 / 83
スクロール後




      なんとなく、
ビットマップのような気がするな…




     rawファイルを表示できる
    画像ビューアで見てみるか!




                     75 / 83
すごくビットマップっぽい!
  幅を変えてみて…




                76 / 83
keyキタ━━━(゚∀゚)━━━!!

                      この問題の答えは
                     sm4rtc4rvin9でした。




                                        77 / 83
目grep入門


      完
解説はもうちょっとだけ続くのじゃ




                   78 / 83
• いかがでしたか?
• すこしでも分かっていただけたら幸いです。

• 他にもPNGやGIFやmp3やLZHや7zやBZ2や
  LZSS(アルゴリズム)やLZMAやXORで暗号化され
  たデータなどなどなどなど…も盛り込みたい所です
  が、力尽きました。
 – (というより、よくこの内容8分で話したな…)
 – 以上の形式はみなさまの宿題ということで。
 – \えー/


                                79 / 83
解決したかな?
• いみわかんねwww
• 後半が意味不明
 – おわかりいただけたと思います。
• つーかそれ目grep言わないでしょ
 – 私の場合、元々CTFでkeyを探すところから知られ
   たので、目grepと言われていました。
 – 「というかg/re/pではないよね」というツッコミに関
   しては…まあその通りだと思います。reもpもない
   し…


                             80 / 83
おまけ
• 知らないファイルを知るために私がよくやるこ
  と
 – とりあえずヘキサエディタで開く
 – ビットマップビューを眺めてみる
 – [サイズ][データ]のような構造が無いか見る
 – 仕様書があればそれに目を通してみる
 – ググる *超重要*



                            81 / 83
と、いうわけでですね
• バイナリアンヘキサリアン(なにそれ)の生態を少
  しは分かっていただけたと思います。
 – 大したことないですよね。
 – 昔の人は今回の内容を「普通じゃん」と思うような
   スキルを持っていたらしいですし。


• それではまた~ (・∀・)ノシ



                         82 / 83
目grep入門
 +解説

  完

          83 / 83

Contenu connexe

Tendances

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 

Tendances (20)

プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 

Similaire à 目grep入門 +解説 (6)

PFI Seminar 2010/02/18
PFI Seminar 2010/02/18PFI Seminar 2010/02/18
PFI Seminar 2010/02/18
 
IbisPaintのOpenGLES2.0
IbisPaintのOpenGLES2.0IbisPaintのOpenGLES2.0
IbisPaintのOpenGLES2.0
 
目grep入門
目grep入門目grep入門
目grep入門
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
 
Our docsys-pyfes-2012-11
Our docsys-pyfes-2012-11Our docsys-pyfes-2012-11
Our docsys-pyfes-2012-11
 
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
 

Dernier

Dernier (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

目grep入門 +解説