- ベストアンサー
バイナリファイルのdiff方法について
- Linuxのdiffコマンドを使用してバイナリファイルの差分をヘキサで表示する方法について教えてください。
- バイナリファイルの差分をヘキサで表示するためには、odコマンドを使ってバイナリファイルを16進数で表示し、diffコマンドを使って二つの表示結果を比較します。
- 具体的な手順としては、まずodコマンドを使って元のバイナリファイルを16進数で表示し、別のファイルに保存します。その後、保存された二つのファイルをdiffコマンドを使って比較し、差分をヘキサで表示することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
質問文の「トライしてみてうまくいかなかった例」の(1)を手直し。()の前後にある空白に注意してください。 ~$ lsb_release -d Description: Ubuntu 10.04.4 LTS ~$ echo $SHELL /bin/bash $ diff <(od -x sample.png) <(od -x sample-other.png) 6,7c6,7 < 0000120 0001 9c9a 0018 0000 7407 4d49 0745 05dc < 0000140 0a12 2303 051f f7c1 0000 1900 4574 7458 --- > 0000120 0001 9c9a 0018 0000 7407 4d49 0745 06dc > 0000140 0704 3213 7d05 9412 0000 1900 4574 7458 9c9 < 0000200 6977 6874 4720 4d49 5750 0e81 0017 2000 --- > 0000200 6977 6874 6720 6d69 6170 e314 00a3 2000 もう少しわかりやすく、空白を^で表すとこうなります。 $ diff^<(od^-x^sample.png)^<(od^-x^sample-other.png) bash 以外に zsh もできるみたいだけど、他のシェルはよく知りません。
その他の回答 (1)
- m6324m
- ベストアンサー率34% (26/76)
バイナリファイルだったらdiff じゃなく bsdiff がいいのでは、 > bsdiff AAA.bin BBB.bin AB.pat AAA.bin と BBB.bin を比較して AB.pat に出力したのち AB.pat をヘキサ出力してみてら。
お礼
m6324m様 早速のご回答ありがとうございました。 こちらのご提示が漏れておりましたが 今回『bsdiff』や『xdelta』などが使用できません…(T_T) (他社様の環境のため…) 誠に申し訳ございませんが、 od/diffでお知恵を拝借できないでしょうか?
お礼
masa_pee様 正常に出力できることが確認できました!! ありがとうございました。 (当方の環境はデフォルトがbashでないため、そのままだと 【Missing name for redirect.】のエラーになりますが、 先にbashコマンドを実行後、 ご教示頂いた以下のコマンドで成功しました) diff^<(od^-x^sample.png)^<(od^-x^sample-other.png)
補足
masa_pee様 期待していたご回答ありがとうございます!!! 今実環境がないので確認できませんが、 明日確認次第、BAさせて頂きますo(^-^)o