続きです。
レイヤー3のブロックの追加されたバイト数は、塗り絵の結果を見ると、0x70バイトとなっています。
そこでバイナリ数値の中から、0x70増加している数字を探しました。赤色で塗っているか箇所が、ちょうど0x70増えた数値です。おそらくこれらがデータ長になるかと思います。
最初に見つかるデータ長の前に、PACという文字列(水色塗り)がありますが、こちらはマジックナンバーかと思います。マジックナンバーPACを先頭に、空白、データ長、のように並んでいるのでしょう。
元々の絵では、レイヤー1から、3までは何も描いていないので、このPACから始まるバイナリデータも同じになるかと思います。
確認するため、まずは、PACのオフセットをstringsコマンドで抜き出します。
takk@deb8:~/Desktop$ strings -tx file-layer3.mdp | grep PAC 528 PAC M 675 PAC 6fd PAC 785 PAC takk@deb8:~/Desktop$
各オフセットを指定して、odコマンドでPACに続く数値も抽出しましょう。
takk@deb8:~/Desktop$ for i in 528 675 6fd 785;do od -tx1 -j 0x$i -N 10 -Ax file-layer3.mdp;done 000528 50 41 43 20 4d 01 00 00 01 00 000532 000675 50 41 43 20 88 00 00 00 00 00 00067f 0006fd 50 41 43 20 88 00 00 00 00 00 000707 000785 50 41 43 20 88 00 00 00 00 00 00078f takk@deb8:~/Desktop$
PACに続くデータ長がわかったので、それぞれのバイナリを16進ダンプの形で抜き出します。
takk@deb8:~/Desktop$ od -tx1z -j 0x675 -N 0x88 -An -v file-layer3.mdp > no1 takk@deb8:~/Desktop$ od -tx1z -j 0x6fd -N 0x88 -An -v file-layer3.mdp > no2 takk@deb8:~/Desktop$ od -tx1z -j 0x785 -N 0x88 -An -v file-layer3.mdp > no3 takk@deb8:~/Desktop$
では、レイヤー1から3までが一致しているかdiffするためにVimを起動しましょう。
takk@deb8:~/Desktop$ vi -o no[123]
:windo difft
文字列が一部異なっていますが、それ以外のバイナリは一致しますので、予想は的外れではないようです。
続く。
コメント