#!/bin/bash if [[ $# != 2 ]]; then echo "usage: bindiff " exit 0 fi #sdiff -w 150 -Hs <(xxd -b "$1") <(xxd -b "$2") cmp -l "$1" "$2" | awk 'function bits2str(bits, data, mask) { if (bits == 0) return "0" mask = 1 for (; bits != 0; bits = rshift(bits, 1)) data = (and(bits, mask) ? "1" : "0") data while ((length(data) % 8) != 0) data = "0" data return data } {printf "%08X %s %s\n", $1, bits2str(strtonum(0$2)), bits2str(strtonum(0$3))}'