Hoe vergelijk je binaire bestanden om te controleren of ze hetzelfde zijn?

Wat is de gemakkelijkste manier (met behulp van een grafische tool of opdrachtregel op Ubuntu Linux) om te weten of twee binaire bestanden hetzelfde zijn of niet (behalve de tijdstempels)? Ik hoef het verschil niet echt te extraheren. Ik moet alleen weten of ze hetzelfde zijn of niet.


Antwoord 1, autoriteit 100%

De standaard unix diffzal laten zien of de bestanden hetzelfde zijn of niet:

[me@host ~]$ diff 1.bin 2.bin
Binary files 1.bin and 2.bin differ

Als er geen uitvoer van de opdracht is, betekent dit dat de bestanden geen verschillen hebben.


Antwoord 2, autoriteit 53%

Gebruik de opdracht cmp. Dit zal ofwel netjes afsluiten als ze binair gelijk zijn, of het zal uitprinten waar het eerste verschil optreedt en afsluiten.


Antwoord 3, autoriteit 50%

Ik ontdekte dat Visual Binary Diffwas wat ik zocht, beschikbaar op:

  • Ubuntu:

    sudo apt install vbindiff
    
  • Arch Linux:

    sudo pacman -S vbindiff
    
  • Mac OS X via MacPorts:

    port install vbindiff
    
  • Mac OS X via Homebrew:

    brew install vbindiff
    

Antwoord 4, autoriteit 8%

Gebruik sha1 om controlesom te genereren:

sha1 [FILENAME1]
sha1 [FILENAME2]

Antwoord 5, autoriteit 7%

Uiteindelijk gebruikte ik hexdump om de binaire bestanden naar hun hex-weergave te converteren en opende ze vervolgens in meld / kompare / een ander diff-tool. In tegenstelling tot jou was ik op zoek naar de verschillen in de bestanden.

hexdump tmp/Circle_24.png > tmp/hex1.txt
hexdump /tmp/Circle_24.png > tmp/hex2.txt
meld tmp/hex1.txt tmp/hex2.txt

6, Autoriteit 4%

U kunt MD5 HASH-functie gebruiken om te controleren of twee bestanden hetzelfde zijn, hiermee kunt u de verschillen op een laag niveau niet zien, maar is een snelle manier om twee bestanden te vergelijken.

md5 <filename1>
md5 <filename2>

Als beide MD5 Hashes (de opdrachtuitgang) hetzelfde zijn, zijn de twee bestanden niet anders.


7, Autoriteit 3%

Gebruik CMP-opdracht. Raadpleeg binaire bestanden en het forceren van tekstvergelijkingen voor meer informatie.

cmp -b file1 file2

8, Autoriteit 2%

Voor het vinden van flash-geheugengebreken, moest ik dit script schrijven dat alle 1K-blokken toont die verschillen bevatten (niet alleen de eerste als cmp -bdoet)

#!/bin/sh
f1=testinput.dat
f2=testoutput.dat
size=$(stat -c%s $f1)
i=0
while [ $i -lt $size ]; do
  if ! r="`cmp -n 1024 -i $i -b $f1 $f2`"; then
    printf "%8x: %s\n" $i "$r"
  fi
  i=$(expr $i + 1024)
done

Uitgang:

  2d400: testinput.dat testoutput.dat differ: byte 3, line 1 is 200 M-^@ 240 M- 
   2dc00: testinput.dat testoutput.dat differ: byte 8, line 1 is 327 M-W 127 W
   4d000: testinput.dat testoutput.dat differ: byte 37, line 1 is 270 M-8 260 M-0
   4d400: testinput.dat testoutput.dat differ: byte 19, line 1 is  46 &  44 $

Disclaimer: Ik heb het script in 5 minuten gehackt. Het ondersteunt geen opdrachtregelargumenten, noch ondersteunt het spaties in bestandsnamen


9, Autoriteit 2%

DIFF met de volgende opties zou een binaire vergelijking doen om te controleren of de bestanden helemaal anders zijn en de uitvoer zijn als de bestanden ook hetzelfde zijn:

diff -qs {file1} {file2}

Als u twee bestanden vergelijkt met dezelfde naam in verschillende mappen, kunt u dit formulier in plaats daarvan gebruiken:

diff -qs {file1} --to-file={dir2}

OS X EL CAPITAN


Antwoord 10

Radiff2is een tool die is ontworpen om binaire bestanden te vergelijken, vergelijkbaar met naar hoe
regular diff vergelijkt tekstbestanden.

Probeer radiff2dat deel uitmaakt van radare2disassembler. Bijvoorbeeld met dit commando:

radiff2 -x file1.bin file2.bin

Je krijgt een behoorlijk opgemaakte output met twee kolommen waarin verschillen worden gemarkeerd.


Antwoord 11

Mijn favorieten die xxd hex-dumper uit het vim-pakket gebruiken:

1) vimdiff gebruiken (onderdeel van vim)

#!/bin/bash
FILE1="$1"
FILE2="$2"
vimdiff <( xxd "$FILE1" ) <( xxd "$FILE2" )

2) met diff

#!/bin/bash
FILE1=$1
FILE2=$2
diff -W 140 -y <( xxd $FILE1 ) <( xxd $FILE2 ) | colordiff | less -R -p '  \|  '

Antwoord 12

md5sum binary1 binary2

Als de md5sum hetzelfde is, zijn de binaire bestanden hetzelfde

Bijvoorbeeld

md5sum new*
89c60189c3fa7ab5c96ae121ec43bd4a  new.txt
89c60189c3fa7ab5c96ae121ec43bd4a  new1.txt
root@TinyDistro:~# cat new*
aa55 aa55 0000 8010 7738
aa55 aa55 0000 8010 7738
root@TinyDistro:~# cat new*
aa55 aa55 000 8010 7738
aa55 aa55 0000 8010 7738
root@TinyDistro:~# md5sum new*
4a7f86919d4ac00c6206e11fca462c6f  new.txt
89c60189c3fa7ab5c96ae121ec43bd4a  new1.txt

Antwoord 13

wxHexEditor

wxHexEditor is zowel gratis als in staat om grote bestanden tot 2^64 bytes (2 ExaByte) te differentiëren. Heeft een GUI. Cross-platform. Veel functies.

Kies een van de volgende opties om het gratis te krijgen:


Hieronder staat dezelfde suggestie als hierboven. Maar met details als je daarin geïnteresseerd bent.

Schermafbeelding

Kracht

• Hexadecimale (Hex)-editor. Wat handig is voor reverse engineering.

• Cross-platform. Linux, Mac OS, Windows

• Gebruiksvriendelijke grafische gebruikersinterface (GUI)

• Ondersteunt zeer grote bestanden tot 2^64 bytes (2 ExaByte)

• Vergelijk twee grote bestanden naast elkaar (diff). Optioneel alle diff weergeven en doorzoeken.

• Zeer snel zoeken

• Gebruik een kleine hoeveelheid RAM

• Maak geen tijdelijke bestanden. Het gebruikte dus een zeer kleine hoeveelheid opslagruimte.

• Donker of helder thema

• Meertalig 15 talen

• Open source. Als u niet bekend bent met “open source”, betekent dit dat deze software zowel sterkere beveiliging als amp; sterkere privacy. Omdat de code openbaar beschikbaar is voor beoordeling en bijdragen aan GitHub op https://github.com/EUA/wxHexEditorof bij SourceForge op https://sourceforge.net/p/wxhexeditor/code/

• Aantrekkelijke GNU General Public License versie 2. Dit betekent dat de softwarecode van deze extensie eigendom is van en wordt ondersteund door een vriendelijke niet-winstoogmerk. In plaats van een winstgevende vennootschap. https://github.com/eua/wxhexeditor/blob/master/license

Uitdaging

• Verwarring tussen de twee code-repositories. Op het moment van dit schrijven, augustus 2021, lijkt de GitHub-repository recenter te zijn. Zoals het voor het laatst is bijgewerkt in 2021 op https://github.com/eu/wxhexeditor
In vergelijking, de SourceForge-repository bij https://sourceforge.net/projects/wxhexeditor/ was de vorige Update van WXHEXEDITOR was 31 december 2017.

Toon uw ondersteuning

• Als u geniet van deze toepassing, tent u uw steun aan aan de auteurs & amp; Bijdragers met:

___ • Donatie op https://www.paypal.com/cgi-bin/webscr?item_name=donation+to+wxhexeditor&cmd=_donations&business=erdem.ua%40gmail.com

___ • Ondersteuning met ticket op https://sourceforge.net/projects/wxhexeditor/support

___ • Ondersteuning met Forum op https://sourceforge.net/p/wxhexeditor/discussion/

___ • Patch op https://sourceforge.net/p/wxhexeditor/patches/

Gebruik

• WXHEXEDITOR 0.23

• Debian 10 Buster

• GNOME 3.30.2


Antwoord 14

Er is een relatief eenvoudige manier om te controleren of twee binaire bestanden hetzelfde zijn.

Als u bestandsinvoer/uitvoer in een programmeertaal gebruikt; je kunt elk bit van beide binaire bestanden in hun eigen arrays opslaan.

Op dit punt is de controle zo simpel als:

if(file1 != file2){
    //do this
}else{
    /do that
}

Other episodes