ISO-afbeelding

ISO-afbeeldingen vergelijken

ISO-afbeeldingen vergelijken
Om computerapparatuur in te stellen en te onderhouden, leveren Linux-distributeurs regelmatig overeenkomstige ISO-images voor hun releases. Dit vereenvoudigt het up-to-date houden van onze systemen met behulp van een volledige compilatie van software die daadwerkelijk bij elkaar past, in ideale omstandigheden.

Stel je voor dat je meerdere van deze ISO-images lokaal hebt opgeslagen. Hoe kom je erachter dat de opgehaalde ISO-images authentiek zijn?? In dit artikel laten we u zien hoe u de integriteit en authenticiteit van een eerder gedownloade ISO-image kunt verifiëren en hoe u erachter kunt komen wat de verschillen zijn tussen de daadwerkelijke inhoud van twee ISO-images. Dit helpt u om het bouwproces voor de ISO-image te verifiëren en stelt u in staat om te zien wat er mogelijk is veranderd tussen twee builds of releases die beschikbaar zijn.

Afbeeldingsformaten

Het formaat van schijfkopieën heeft zijn eigen geschiedenis [11]. De algemene norm is ISO 9660 [12] die de inhoud van een optische schijf als geheel beschrijft. In gebruik is de bestandsextensie .iso om een ​​afbeeldingsbestand te identificeren (gekloonde kopie).

Het originele ISO 9660-formaat heeft een aantal beperkingen, zoals 8 mapniveaus en de lengte van bestandsnamen. Deze beperkingen zijn verminderd door de introductie van een aantal extensies zoals Rock Ridge [13] (behoud van POSIX-machtigingen en langere namen), Joliet [14] (opslag van Unicode-namen in UCS-2) en Apple ISO 9660 Extensions [15] die HFS-ondersteuning introduceerde.

Om meer details over een afbeeldingsbestand te krijgen, gebruikt u de opdracht 'bestand' gevolgd door de naam van het gegevensbestand als volgt:

.Lijst 1: De details van een ISO-bestand weergeven

$ bestand *.iso
debian-10.1.0-amd64-netinst.iso:   DOS/MBR-opstartsector;
partitie 2: ID=0xef, start-CHS (0x3ff,254,63), eind-CHS (0x3ff,254,63),
startsector 3808, 5664 sectoren
xubuntu-18.04.3-desktop-amd64.iso: DOS/MBR-opstartsector;
partitie 2: ID=0xef, start-CHS (0x3ff,254,63), eind-CHS (0x3ff,254,63),
startsector 11688, 4928 sectoren $

Gedownloade ISO-bestanden verifiëren

Betrouwbare softwareleveranciers bieden u altijd twee dingen om te downloaden: de daadwerkelijke ISO-image en de bijbehorende controlesom van de image om een ​​integriteitscontrole voor het gedownloade bestand uit te voeren. Met de laatste kunt u bevestigen dat uw lokale bestand een exacte kopie is van het bestand dat aanwezig is op de downloadservers en dat er niets mis is gegaan tijdens het downloaden. In het geval van een fout tijdens het downloaden is het lokale bestand beschadigd en kan het willekeurige problemen veroorzaken tijdens de installatie [16].

Bovendien, in het geval dat de ISO-image is aangetast (zoals gebeurde met Linux Mint begin 2016 [17]), komen de twee controlesommen niet overeen. U kunt de checksums als volgt berekenen met 'md5sum' (verouderd, niet langer aanbevolen) en 'sha256sum':

.Lijst 2: De controlesom voor ISO-bestanden berekenen

$ md5som *.iso
b931ef8736c98704bcf519160b50fd83  debian-10.1.0-amd64-netinst.iso
0c268a465d5f48a30e5b12676e9f1b36 xubuntu-18.04.3-desktop-amd64.iso
$ sha256som *.iso
7915fdb77a0c2623b4481fc5f0a8052330defe1cde1e0834ff233818dc6f301e debian-10.1.0-amd64-netinst.iso
3c9e537ee1cf64088251e56b4ca1694944ad59126f298f24a78cd43af152b5b3 xubuntu-18.04.3-desktop-amd64.iso
$

U kunt een beroep doen op de vergelijking tussen het verstrekte controlesombestand en de lokaal opgeslagen ISO-afbeelding zoals weergegeven in lijst 3. De uitvoer van OK aan het einde van een regel geeft aan dat beide controlesommen hetzelfde zijn.

.Lijst 3: Vergelijk verstrekte controlesommen

$ sha256sum --controleer sha256sum.txt xubuntu-18.04.3-desktop-amd64.iso: OK
$

Twee lokaal opgeslagen ISO-bestanden vergelijken

Het kan gebeuren dat je twee ISO-bestanden hebt gedownload en je wilt weten of ze helemaal hetzelfde zijn. Het 'sha256sum'-commando is opnieuw nuttig en we raden u aan deze controle in een shellscript in te kapselen. In Listing 4 zie je een overeenkomstig bash-script dat de vier commando's 'sha256sum', 'cut', 'uniq' en 'wc' combineert om de eerste kolom voor alle uitvoerregels te scheiden, ze samen te voegen als ze identiek zijn en tel het aantal resterende regels. Als de twee (of meer) ISO-bestanden hetzelfde zijn, zijn de controlesommen identiek, blijft er slechts een enkele regel over en zal het bash-script uiteindelijk het bericht "de bestanden zijn hetzelfde" uitvoeren:

.Lijst 4: Automatisch checksums van ISO-bestanden vergelijken met 'sha256sum'

#!/bin/bash
 
als [ 'sha256sum *.iso | knippen -d" -f1 | uniq | wc -l' eq 1 ]
dan
echo "de bestanden zijn hetzelfde"
anders
echo "de bestanden zijn niet identiek"
fi

Als het script retourneert dat de twee bestanden verschillend zijn, ben je misschien geïnteresseerd in de exacte positie van ongelijkheid. Een byte-volgorde vergelijking kan worden gedaan met behulp van het 'cmp'-commando dat de eerste byte uitvoert die verschilt tussen de bestanden:

.Listing 5: Zie de verschillen tussen twee of meer bestanden met 'cmp'

$ cmp *.iso
debian-10.1.0-amd64-netinst.iso xubuntu-18.04.3-desktop-amd64.iso-verschil: byte 433, regel 4
$

De werkelijke inhoud vergelijken

Tot nu toe hebben we een byte-volgordevergelijking gemaakt en nu zullen we van binnen nader bekijken - naar de daadwerkelijke inhoud van de ISO-bestanden die met elkaar moeten worden vergeleken. Op dit punt komen een aantal tools in het spel die helpen bij het vergelijken van afzonderlijke bestanden, volledige directorystructuren, evenals gecomprimeerde archieven en ISO-images.
Het 'diff'-commando helpt bij het vergelijken van een map met behulp van de twee schakelaars '-r' (afkorting van '-recursive') en '-q' (afkorting van '-brief') gevolgd door de twee mappen die met elkaar moeten worden vergeleken. Zoals gezien in

Listing 6, 'diff' meldt welke bestanden uniek zijn voor beide mappen en of een bestand met dezelfde naam is gewijzigd.

.Listing 6: Twee mappen vergelijken met 'diff'

$ verschil -qr t1/ t2/
Alleen in t1/: blabla.conf.
De bestanden t1/nsswitch.conf en t2/nsswitch.conf zijn anders.
Alleen in t2/: pwd.conf.
$

Om twee ISO-afbeeldingen te vergelijken, koppelt u eenvoudig de twee afbeeldingsbestanden aan afzonderlijke mappen en gaat u van daaruit verder.
Een kleurrijkere uitvoer op de commandoregel wordt geleverd door de tools 'colordiff' [1,2] en 'icdiff' [18,19]. Figuur 1 toont de output van 'icdiff' waarin de verschillen tussen de twee bestanden van 'nsswitch'.conf' zijn gemarkeerd in groen of rood.

Figuur 1: Twee mappen vergelijken met 'icdiff'

Grafische hulpmiddelen voor het vergelijken van mappen zijn onder meer 'fldiff' [5], 'xxdiff' [6] en 'dirdiff' [7]. 'xxdiff' is geïnspireerd op 'fldiff' en daarom lijken ze nogal op elkaar. Inzendingen met een vergelijkbare inhoud hebben een witte of grijze achtergrond, en inzendingen die verschillen hebben in plaats daarvan een lichtgele achtergrond. Vermeldingen met een felgele of groene achtergrond zijn uniek voor een directory.

Figuur 2: Twee mappen vergelijken met 'fldiff'

'xxdiff' toont de bestandsverschillen in een apart venster door op een item te klikken (zie figuur 3).

Afbeelding 3: Twee mappen vergelijken met 'xxdiff'

De volgende kandidaat is 'dirdiff'. Het bouwt voort op de functionaliteit van 'xxdiff' en kan tot vijf mappen vergelijken. Bestanden die in beide mappen voorkomen, zijn gemarkeerd met een X. Interessant is dat het kleurenschema dat wordt gebruikt voor het uitvoervenster hetzelfde is als 'icdiff' gebruikt (zie figuur 4).

Figuur 4: Twee mappen vergelijken met 'dirdiff'

Het vergelijken van gecomprimeerde archieven en volledige ISO-images is de volgende stap. Hoewel het 'adiff'-commando uit het 'atool'-pakket [10] misschien al bekend is bij u, zullen we in plaats daarvan het 'diffoscope'-commando [8,9] bekijken. Het beschrijft zichzelf als "een hulpmiddel om tot op de bodem uit te zoeken wat bestanden of mappen anders maakt". Het pakt recursief allerlei soorten archieven uit en transformeert verschillende binaire formaten in meer voor mensen leesbare vormen om ze te vergelijken”. De oorsprong van de tool is The Reproducible Builds Project [19,20], wat "een reeks softwareontwikkelingspraktijken is die een onafhankelijk verifieerbaar pad van bron naar binaire code creëren". Het ondersteunt onder andere de volgende bestandsindelingen:

* Android APK-bestanden en opstartafbeeldingen
* Berkeley DB-databasebestanden
* Coreboot CBFS-bestandssysteemafbeeldingen
* Debian .buildinfo en .verandert bestanden
* Debian-bronpakketten (.dsc)
* ELF-binaire bestanden
* Git-opslagplaatsen
* ISO 9660 CD-afbeeldingen
* MacOS-binaire bestanden
* OpenSSH openbare sleutels
* OpenWRT-pakketarchieven (.ipk)
* PGP ondertekende/versleutelde berichten
* PDF- en PostScript-documenten
* RPM archiveert bieslook

Afbeelding 5 toont de uitvoer van 'diffoscope' bij het vergelijken van twee verschillende versies van Debian-pakketten - u zult precies zien welke wijzigingen zijn aangebracht. Dit omvat zowel bestandsnamen als inhoud.

Afbeelding 5: Twee Debian-pakketten vergelijken met 'diffoscope' (uittreksel)

Lijst 7 toont de uitvoer van 'diffoscope' bij het vergelijken van twee ISO-afbeeldingen met een grootte van 1.9G elk. In dit geval behoren de twee ISO-images tot Linux Mint Release 19.2 terwijl één afbeeldingsbestand is opgehaald van een Franse server en de andere van een Oostenrijkse server (vandaar de letters 'fr' en 'at'). Binnen enkele seconden geeft 'diffoscope' aan dat de twee bestanden volledig identiek zijn.

.Listing 7: Twee ISO-afbeeldingen vergelijken met 'diffoscope'

$ diffoscoop linuxmint-19.2-xfce-64bit.vanaf.iso linuxmint-19.2-xfce-64bit.Bij.iso
|################################################# ###| 100%    Tijd: 0:00:00
$

Om achter de schermen te kijken helpt het om 'diffoscope' aan te roepen met de twee opties '-debug' en '-text -' voor beide meer uitgebreide uitvoer naar de terminal. Hierdoor kunt u leren wat de tool doet. Listing 8 toont de overeenkomstige output.

.Listing 8: Achter de schermen van 'diffoscope'

$ diffoscope --debug --text - linuxmint-19.2-xfce-64bit.vanaf.iso
linuxmint-19.2-xfce-64bit.Bij.iso
2019-10-03 13:45:51 D: diffoscoop.hoofd: Startdiffoscoop 78
2019-10-03 13:45:51 D: diffoscoop.locale: Normaliseren van locale, tijdzone, etc.
2019-10-03 11:45:51 D: diffoscoop.hoofdmenu: Vergelijking starten
2019-10-03 11:45:51 D: diffoscoop.voortgang: Registreren < diffoscope.progress.ProgressBar object at 0x7f4b26310588> als voortgangswaarnemer
2019-10-03 11:45:52 D: diffoscoop.comparators: 50 comparatorklassen 64bit geladen.vanaf.iso ETA:  --:--:--
2019-10-03 11:45:52 D: diffoscoop.vergelijkers.hulpprogramma's.specialiseren: niet-geïdentificeerd bestand. Magic zegt: DOS/MBR-opstartsector; partitie 2: ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 652, 4672 sectoren
2019-10-03 11:45:52 D: diffoscoop.vergelijkers.hulpprogramma's.specialiseren: niet-geïdentificeerd bestand. Magic zegt: DOS/MBR-opstartsector; partitie 2: ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 652, 4672 sectoren
2019-10-03 11:45:52 D: diffoscoop.vergelijkers.hulpprogramma's.vergelijk: linuxmint-19 vergelijken.2-xfce-64bit.vanaf.iso (FilesystemFile) en linuxmint-19.2-xfce-64bit.Bij.iso (BestandssysteemBestand)
2019-10-03 11:45:52 D: diffoscoop.vergelijkers.hulpprogramma's.bestand: Binair.heeft_dezelfde_inhoud: < linuxmint-19.2-xfce-64bit.vanaf.iso> < linuxmint-19.2-xfce-64bit.Bij.iso>
2019-10-03 11:45:53 D: diffoscoop.vergelijkers.hulpprogramma's.vergelijk: has_same_content_as geretourneerd True; verdere vergelijkingen overslaan
|################################################ ###| 100%  Tijd: 0:00:01
2019-10-03 11:45:53 D: diffoscoop.tempfiles: 0 tijdelijke bestanden opschonen
2019-10-03 11:45:53 D: diffoscoop.tempfiles: 0 tijdelijke mappen opschonen
$

Nou, tot nu toe, zo goed. De volgende tests zijn gedaan op afbeeldingen van verschillende releases en met verschillende bestandsgroottes. Ze resulteerden allemaal in een interne fout die terug te voeren is op het 'diff'-commando dat geen intern geheugen meer heeft. Het lijkt erop dat er een maximale bestandsgrootte is van ongeveer 50M. Daarom heb ik twee kleinere afbeeldingen van elk 10M gebouwd en ter vergelijking aan 'diffoscope' overhandigd. Figuur 6 toont het resultaat. De uitvoer is een boomstructuur met daarin het bestand 'nsswitch'.conf' met de gemarkeerde verschillen.

Figuur 6: Twee ISO-beelden vergelijken met 'diffoscope'

Er kan ook een HTML-versie van de uitvoer worden geleverd. Figuur 7 toont de uitvoer als een HTML-bestand in een webbrowser. Het is bereikbaar via de schakelaar

'--html uitvoer.html'.

Figuur 7: Twee ISO-afbeeldingen vergelijken met 'diffoscope' (HTML-uitvoer)

Als de uitvoerstijl u niet bevalt, of deze wilt matchen met de huisstijl van uw bedrijf, kunt u de uitvoer aanpassen door uw eigen CSS-bestand met behulp van de schakelaar '-css-stijl.css' die de stijl laadt uit het CSS-bestand waarnaar wordt verwezen.

Conclusie

Het vinden van verschillen tussen twee mappen of zelfs hele ISO-afbeeldingen is een beetje lastig. De hierboven getoonde tools helpen je deze taak onder de knie te krijgen. Dus, veel plezier met hacken!

Dank u
De auteur wil Axel Beckert bedanken voor zijn hulp bij het opstellen van het artikel.

Links en referenties

* [1] kleurverschil
* [2] colordiff, Debian-pakket,
* [3] diffutils
* [4] diffutils, Debian-pakket,
* [5] fldiff
* [6] xxdiff
* [7] dirdiff
* [8] diffoscoop
* [9] diffoscoop, Debian-pakket
* [10] atool, Debian-pakket
* [11] Korte introductie van enkele veelgebruikte bestandsindelingen voor afbeeldingen
* [12] ISO 9660, Wikipedia
* [13] Rock Ridge, Wikipedia
* [14] Joliet, Wikipedia
* [15] Apple ISO 9660-extensies, Wikipedia
* [16] Hoe ISO-images te verifiëren, Linux Mint
* [17] Pas op voor gehackte ISO's als je Linux Mint op 20 februari hebt gedownload!
* [18] icdiff
* [19] icdiff, Debian-pakket
* [20] Het reproduceerbare bouwproject
* [21] Het Reproducible Builds-project, Debian Wiki

Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...
Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...
Beheer en beheer muisbewegingen tussen meerdere monitoren in Windows 10
Muisbeheer voor twee schermen laat je muisbewegingen tussen meerdere monitoren controleren en configureren door de bewegingen nabij de grens te vertra...