112 votes

Outil de comparaison binaire pour les très gros fichiers ?

J'ai besoin d'un utilitaire pour différencier deux fichiers binaires. Les fichiers sont volumineux (6 à 50 Go).

Note : Il convient de préciser ici que la plupart des programmes de comparaison fonctionnent en mappant le fichier dans leur espace d'adressage virtuel. Sous Windows 32 bits, cela limite la taille des fichiers qui peuvent être comparés à moins de 1 Go chacun. (1,5 Go si Windows est exécuté avec le commutateur /3GB, et que le programme a annoncé qu'il est conscient de 3 Go ; /LARGEADDRESSAWARE). Si un programme insiste sur la technique de mappage complet du fichier dans son espace d'adressage, alors il doit se conformer aux règles suivantes doit être recompilé en tant qu'application 64 bits, qui dispose d'un espace d'adressage de 8 To (ce qui répond à mes exigences)

Au-delà de la comparaison est mon outil de comparaison préféré, et je le possède, mais il ne peut pas gérer les fichiers binaires au-delà de ce qui peut tenir dans l'espace d'adressage du processus.

HexDiff 3.0 semblait intéressant, sauf que la version d'essai ne fait pas de différences. *roule les yeux*

  • l'outil devrait être gratuit, puisque je ne vais pas payer de l'argent pour découvrir qu'il ne fonctionne pas.

  • l'outil doit être une application Windows.

  • L'outil ne doit pas être basé sur une console (c'est-à-dire une application Windows).

  • l'outil doit être graphique (c'est-à-dire une application Windows)

38voto

RandomNickName42 Points 3994

((bsdiff est massivement élitaire :), à part cela)

J'aime personnellement vbindiff (mode SUA) pour les petits fichiers et j'ai testé cet outil en version bêta. montre-bloc (Windows WPF, client gratuit, coût pour l'alimentation du réseau), qui peut effectuer des recherches de sous-sections très rapides sur de grands espaces de recherche de contenu, devrait être publié prochainement.

Si vous différez des exécutables (natifs), PatchDiff2 (l'outil est gratuit, IDA est$) est un plugin IDA qui vous permettra d'obtenir une précision de plus de 90-95% sans problème, même avec des variations dans l'optimisation ou d'autres paramètres de construction.

BinNavi ($) est un autre outil qui fait très bien l'affaire.

Si vous voulez qualifier la similarité des binaires, STAN (fonctionne en mode SUA), peut couper à travers le proverbial B.S. rapidement pour vous obtenir un pari sûr.

Pour être complet, le nouvel algorithme de Google pour son navigateur Chrome est lié à bsdiff, Courgette semble avoir amélioré bsdiff d'une bonne quantité, il sera intéressant de voir comment il peut être adapté à d'autres formats, il semble fortement utiliser une table de recherche de symboles optimisée et ce qui semble être (je n'ai pas lu le code) une amélioration que vous obtiendriez en utilisant des pointeurs basés (c'est-à-dire ne pas utiliser d'adresses linéaires, mais simplement utiliser l'offset dans une notation aussi compatible que possible).

36voto

user66899 Points 105

Vous êtes à la recherche de HxD le meilleur et le plus gratuit des éditeurs hexadécimaux pour Windows, sans aucune modification depuis le 3 avril 2009, car il est exempt d'erreurs, tout simplement parfait.

Son "Comparaison de fichiers (simple)" ( Ctrl + K ) le fait visuellement pour tout fichier binaire.

  • Ouverture instantanée quelle que soit la taille du fichier (jusqu'à 8EB) 8 ExaByte sont 8 millions de TeraByte.

24voto

Eder Gusatto Points 411

Google avait l'habitude d'utiliser bsdiff, http://www.daemonology.net/bsdiff/

Mais maintenant ils utilisent la Courgette http://dev.chromium.org/developers/design-documents/software-updates-courgette

17voto

Dan Points 161

La façon traditionnelle de le faire est avec "cmp --verbose" (équivalent de "cmp -l"). Ajoutez l'option "--print-bytes" (ou "-b") pour rendre les différents octets dans un format lisible (en plus des valeurs décimales et des numéros d'octets fournis par l'option "--verbose"). Puisque vos fichiers sont si volumineux, vous voudrez probablement transférer la sortie dans un fichier afin de pouvoir la regarder aller et avoir les résultats à analyser à votre guise. Par exemple, je vais comparer deux fichiers MP3 similaires :

$ cmp --verbose --print-bytes a.mp3 b.mp3 | tee differences
   16315 302 M-B  115 M
   16316 233 M-^[ 144 d
   16317 110 H    224 M-^T

. . . .

21601545 377 M-^? 300 M-@
21601546 203 M-^C   0 ^@
21601547 300 M-@    0 ^@

(Citez vos noms de fichiers de manière appropriée, bien sûr ; cmp comprend le drapeau "--" si vous en avez besoin. Vous pouvez taper "cmp -lb" au lieu d'utiliser les arguments longs). Utiliser wc pour voir combien d'octets diffèrent :

$ wc --lines differences 
66115 differences
$ wc --bytes a.mp3 b.mp3
21602502 a.mp3
21602502 b.mp3
43205004 total

cmp ne compare les fichiers qu'octet par octet (il ne peut pas se resynchroniser si des octets sont insérés ou supprimés), mais cela semble être exactement ce dont vous avez besoin. Il peut gérer des fichiers de taille arbitraire (et ne nécessite pas plus de mémoire que pour les petits fichiers). Il est présent par défaut sur Mac OS X, les différents BSD et Unice, et GNU/Linux, c'est-à-dire tous les systèmes d'exploitation modernes largement utilisés, à l'exception de Windows. (Envisagez une installation minimale de Cygwin ou équivalent si c'est vraiment une contrainte).

Bien qu'il semble être le bon outil pour ce travail, il est exclu par deux de vos critères : il est "basé sur une console" et n'a pas de composants graphiques. Je pense qu'il doit manquer quelque chose dans la description de votre problème. Pouvez-vous expliquer pourquoi une console serait problématique, et quelles données supplémentaires vous avez besoin de visualiser ?

12voto

jthompson Points 2854

Vous pouvez essayer xdelta . Je n'ai jamais cherché une version GUI mais vous pourriez essayer este un (bien qu'il semble que ce soit uniquement KDE).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X