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 diff
zal 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 -b
doet)
#!/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 radiff2
dat deel uitmaakt van radare2
disassembler. 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:
- Optie: Ubuntu-pakket
- Optie: SourceForge
- Optie: GitHub
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
}