Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


вторник, 24 декабря 2019 г.

bash: сравнение двоичных файлов с комфортом

Выкачал я с корпоративного FTP установочный образ винды. Не, всё легально - свежая официальная версия для установки внутри конторы. Копирую его на верный Zalman VE-300, гружусь с него на целевом компе и начинаю установку. Получаю славную ошибку 80070570 - "файл поврежден" или как-то так.
Не вдаваясь в лишние подробности, скажу, что образ действительно получился битый и md5 на ftp и у меня не совпали. Сегодня ночью с того же ftp скачался тот же (или перезалитый, чтобы скрыть повреждения?) образ, md5 совпали и я нормально установился с него.
Однако, всё это некрасивая лирика, а мне захотелось прекрасного. Например, как было в далёком DOS-овском детстве, можно было с помощью PCTools или Norton Utilities побайтно сравнивать файлы с большим комфортом, чем позволял штатный fc или cmp. Штатной приблуды в стандартной поставке "искаропки" нет, но свет не без добрых людей... Аж в 2010 году кто-то заинтересовался вопросом и получил на него интересные и полезные ответы.

--
diff  + xxd
Try diff in the following combination of zsh/bash process substitution:
diff -y <(xxd foo1.bin) <(xxd foo2.bin)
Where:
  • -y shows you differences side-by-side (optional).
  • xxd is CLI tool to create a hexdump output of the binary file.
  • Add -W200 to diff for wider output (of 200 characters per line).
  • For colors, use colordiff as shown below.

colordiff + xxd

If you've colordiff, it can colorize diff output, e.g.:
colordiff -y <(xxd foo1.bin) <(xxd foo2.bin)
Otherwise install via: sudo apt-get install colordiff.
binary file output in terminal - diff -y <(xxd foo1.bin) <(xxd foo2.bin) | colordiff
--
There's a tool called DHEX which may do the job, and there's another tool called VBinDiff.
For a strictly command-line approach, try jojodiff.
--