SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 

Was ist angesagt? (20)

やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 

Ähnlich wie 目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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: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
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: 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
 
論文紹介: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...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

目grep入門 +解説