Cela affichera le décalage et les octets en hexadécimal :
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'
Ou effectuez $1-1
pour que le premier décalage imprimé commence à 0.
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}'
Malheureusement, strtonum()
est spécifique à GAWK, donc pour d'autres versions de awk, par exemple mawk, vous devrez utiliser une fonction de conversion octale en décimale. Par exemple,
cmp -l file1.bin file2.bin | mawk 'function oct2dec(oct, dec) {for (i = 1; i <= length(oct); i++) {dec *= 8; dec += substr(oct, i, 1)}; return dec} {printf "%08X %02X %02X\n", $1, oct2dec($2), oct2dec($3)}'
Organisé pour la lisibilité :
cmp -l file1.bin file2.bin |
mawk 'function oct2dec(oct, dec) {
for (i = 1; i <= length(oct); i++) {
dec *= 8;
dec += substr(oct, i, 1)
};
return dec
}
{
printf "%08X %02X %02X\n", $1, oct2dec($2), oct2dec($3)
}'
0 votes
Xdelta.org fonctionne assez bien. Il serait peut-être utile d'y jeter un œil.
0 votes
Parce que vous ne pouvez pas répondre à cette question (car vous n'êtes pas un utilisateur), je vote pour la fermeture. Une différence binaire explicitement demandée ici n'est pas du tout utile, et je suis enclin à penser que vous voulez quelque chose d'utile, si vous insérez un octet au début du fichier, tous les octets doivent-ils être marqués comme étant différents? Sans savoir cela, cela est simplement trop vague.
0 votes
Ne pas mentionner que cela va explicitement à l'encontre des règles sur plusieurs domaines, il s'agit de "programmation et développement de logiciels" et vous demandez un produit ou une recommandation plutôt que comment utiliser un produit spécifique.
0 votes
Également mis à jour avec la méthode sur radare, mais je pense toujours que cette question est à la fois hors sujet et trop vague.
4 votes
@EvanCarroll Si vous pensez que la question est hors sujet, pourquoi y répondez-vous?
0 votes
@DavidPostill Je ne pense pas que ce soit hors sujet. Je pense que c'est une excellente question. Je pense que c'est mal formulé et que les administrateurs ici causeraient des problèmes induits si j'essayais autrement de le sauver. Consultez ma réponse pour plus d'informations. Question de différence binaire ? OUI! Différence octet par octet ? Eh bien, cela n'a aucun sens dans tous les cas d'utilisation que je peux imaginer.
0 votes
FreeBSD's
cmp
dispose d'un drapeau-x
("heXadecimal") qui produit une sortie formatée exactement comme spécifié dans la question, en conjonction avec-l
:cmp -xl file1.bin file2.bin
. source1 votes
Je fais toujours une différence octet par octet lorsque je rétro-ingénieure des choses. Voir une différence similaire à une sortie de différence de texte est très utile.