404 votes

Comment comparer des fichiers binaires sous Linux?

J'ai besoin de comparer deux fichiers binaires et obtenir la sortie sous la forme :

pour chaque octet différent. Donc si file1.bin est

  00 90 00 11

sous forme binaire et file2.bin est

  00 91 00 10

Je veux obtenir quelque chose comme

  00000001 90 91
  00000003 11 10

Y a-t-il un moyen de le faire dans Linux ? Je connais cmp -l mais il utilise un système décimal pour les décalages et octal pour les octets ce que je voudrais éviter.

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.

-2voto

decibel Points 341

Le produit open source par excellence sur Linux (et sur tout le reste) est Radare qui fournit radiff2 explicitement dans ce but.

pour chaque octet différent

C'est insensé cependant. Parce que tel que demandé, si vous insérez un octet au premier octet dans le fichier, vous constaterez que chaque octet suivant est différent, donc la différence répétera tout le fichier, pour une différence réelle d'un octet.

Un peu plus pratique: radiff -O. Le -O signifie "Faire une différence de code avec tous les octets au lieu des octets d'opcode fixes"

0x000000a4 0c01 => 3802 0x000000a4
0x000000a8 1401 => 3802 0x000000a8
0x000000ac 06 => 05 0x000000ac
0x000000b4 02 => 01 0x000000b4
0x000000b8 4c05 => 0020 0x000000b8
0x000000bc 4c95 => 00a0 0x000000bc
0x000000c0 4c95 => 00a0 0x000000c0

Comme IDA Pro, Radare est un outil principalement pour l'analyse binaire, et vous pouvez également afficher la différence delta avec -d, ou afficher les octets désassemblés au lieu de l'hexadécimal avec -D.

Voir aussi:

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X