Sammenligne ISO -bilder

Sammenligne ISO -bilder
For å konfigurere og vedlikeholde dataenheter, gir Linux -distributører regelmessig i henhold til ISO -bilder for utgivelsene. Dette forenkler å holde systemene våre oppdatert ved hjelp av en full sammenstilling av programvare som faktisk passer sammen, under ideelle omstendigheter.

Se for deg at du har flere av disse ISO -bildene som er lagret lokalt. Hvordan finner du ut at de hentede ISO -bildene er autentiske? I denne artikkelen viser vi deg hvordan du kan bekrefte integriteten og ektheten til et ISO -bilde som har blitt lastet ned før, og hvordan du kan finne ut hva som er forskjellene mellom det faktiske innholdet i to ISO -bilder. Dette hjelper deg å bekrefte byggeprosessen for ISO -bildet, og lar deg se hva som kan ha endret seg mellom to bygg, eller utgivelser som er tilgjengelige.

Bildeformater

Formatet på diskbilder har sin egen historie [11]. Den vanlige standarden er ISO 9660 [12] som beskriver innholdet i en optisk plate som helhet. I bruk er filtypen .ISO for å identifisere en bildefil (klonet kopi).

Det originale ISO 9660 -formatet kommer med en rekke begrensninger som 8 katalognivåer samt lengden på filnavn. Disse begrensningene er redusert ved innføring av en rekke utvidelser som Rock Ridge [13] (bevaring av POSIX-tillatelser og lengre navn), Joliet [14] (lagring av Unicode-navn i UCS-2), og Apple ISO 9660-utvidelser [15] som introduserte HFS -støtte.

For å få flere detaljer angående en bildefil, bruk "Fil" -kommandoen etterfulgt av navnet på datafilen som følger:

.Oppføring 1: Viser detaljene for en ISO -fil

$ fil *.ISO
Debian-10.1.0-AMD64-Netinst.ISO: DOS/MBR -oppstartssektor;
Partisjon 2: id = 0xef, start-chs (0x3ff, 254,63), end-chs (0x3ff, 254,63),
StartSector 3808, 5664 sektorer
Xubuntu-18.04.3-Desktop-AMD64.ISO: DOS/MBR -oppstartssektor;
Partisjon 2: id = 0xef, start-chs (0x3ff, 254,63), end-chs (0x3ff, 254,63),
StartSector 11688, 4928 sektorer $

Bekreftet nedlastede ISO -filer

Pålitelige programvareleverandører tilbyr deg alltid to ting for nedlasting - det faktiske ISO -bildet, så vel som i henhold til kontrollen av bildet for å gjøre en integritetssjekk for den nedlastede filen. Den siste lar deg bekrefte at den lokale filen din er en eksakt kopi av filen som er til stede på nedlastingsserverne, og ingenting gikk galt under nedlastingen. I tilfelle en feil under nedlastingen er den lokale filen ødelagt, og kan utløse tilfeldige problemer under installasjonen [16].

I tilfelle ISO -bildet har blitt kompromittert (som det skjedde med Linux Mint tidlig i 2016 [17]) vil de to sjekksumene ikke samsvare. Du kan beregne sjekksumene ved å bruke 'MD5Sum' (utdatert, ikke lenger anbefalt) og 'SHA256SUM' som følger:

.Oppføring 2: Beregning av sjekksummen for ISO -filer

$ md5sum *.ISO
B931EF8736C98704BCF519160B50FD83 Debian-10.1.0-AMD64-Netinst.ISO
0C268A465D5F48A30E5B12676E9F1B36 XUBUNTU-18.04.3-Desktop-AMD64.ISO
$ sha256sum *.ISO
7915FDB77A0C2623B4481FC5F0A8052330DEFE1CDE1E0834FF233818DC6F301E Debian-10.1.0-AMD64-Netinst.ISO
3C9E537EE1CF64088251E56B4CA1694944AD59126F298F24A78CD43AF152B5B3 XUBUNTU-18.04.3-Desktop-AMD64.ISO
$

Du kan påkalle sammenligningen mellom den medfølgende sjekksumfilen og det lokalt lagrede ISO -bildet som vist i oppføring 3. Utgangen av OK på slutten av en linjes signaliserer at begge sjekksumene er de samme.

.Oppføring 3: Sammenlign gitt sjekksum

$ sha256sum -sjekk sha256sum.TXT Xubuntu-18.04.3-Desktop-AMD64.ISO: Ok
$

Sammenligning av to lokalt lagrede ISO -filer

Det kan hende at du har lastet ned to ISO -filer, og du vil finne ut om de er helt like. Kommandoen 'Sha256Sum' er nyttig, igjen, og vi anbefaler deg å innkapsle denne sjekken i et skallskript. I Listing 4 ser du et ifølge bash -skript som kombinerer de fire kommandoene 'Sha256Sum', 'Cut', 'Uniq' og 'WC' for å skille den første kolonnen for alle utgangslinjer, slå dem sammen i tilfelle de er identiske , og telle antall linjer som gjenstår. Hvis de to (eller flere) ISO -filene er de samme, er sjekksumene identiske, bare en enkelt linje vil forbli, og Bash -skriptet vil sende ut meldingen “Filene er de samme”, etter hvert:

.Oppføring 4: Automatisk sammenligne sjekksum av ISO -filer ved å bruke 'SHA256SUM'

#!/bin/bash
hvis ['sha256sum *.ISO | cut -d "-f1 | uniq | wc -l 'Eq 1]
deretter
ekko "Filene er de samme"
ellers
ekko "Filene er ikke identiske"
fi

I tilfelle skriptet returnerer at de to filene er forskjellige, kan du være interessert i den nøyaktige posisjonen til ulikhet. En sammenligning av byte-orden kan gjøres ved hjelp av 'CMP' -kommandoen som sender ut den første byten som skiller seg mellom filene:

.Oppføring 5: Se forskjellene mellom to eller flere filer ved å bruke 'CMP'

$ CMP *.ISO
Debian-10.1.0-AMD64-Netinst.ISO Xubuntu-18.04.3-Desktop-AMD64.ISO avviker: byte 433, linje 4
$

Sammenligne det faktiske innholdet

Så langt gjorde vi en sammenligning av byte -ordre, og nå vil vi se nærmere på innsiden - ved selve innholdet i ISO -filene som skal sammenlignes med hverandre. På dette tidspunktet spiller en rekke verktøy i spill som hjelper til med å sammenligne enkeltfiler, hele katalogstrukturer samt komprimerte arkiver og ISO -bilder.
Kommandoen 'Diff' hjelper til med å sammenligne en katalog ved hjelp av de to bryterne '-r' (forkortelse for '-Rekursiv') og '-Q' (forkortelse for '-Brief') etterfulgt av de to katalogene som skal sammenlignes med hverandre. Som sett i

Oppføring 6, 'Diff' rapporterer hvilke filer som er unike for begge katalogene, og hvis en fil med samme navn har endret seg.

.Oppføring 6: Sammenligning av to kataloger ved å bruke 'Diff'

$ diff -qr t1/ t2/
Bare i T1/: Blabla.konf.
Filene T1/Nsswitch.Conf og T2/Nsswitch.Conf er annerledes.
Bare i T2/: PWD.konf.
$

For å sammenligne to ISO -bilder monterer du bare de to bildefilene for å skille kataloger, og gå derfra.
En mer fargerik utgang på kommandolinjen er levert av Tools 'Colordiff' [1,2] og 'ICDiff' [18,19]. Figur 1 viser utdataene fra 'icdiff' der forskjellene mellom de to filene til 'NSSWITCH.Konf er fremhevet i enten grønt eller rødt.

Figur 1: Sammenligning av to kataloger ved bruk av 'icdiff'

Grafiske verktøy for en sammenligning av kataloger inkluderer 'fldiff' [5], 'xxdiff' [6] og 'Dirdiff' [7]. 'xxdiff' ble inspirert av 'fldiff', og det er derfor de ser ganske like ut. Oppføringer som har et lignende innhold har en hvit eller grå bakgrunn, og oppføringer som skiller seg med en lysegul bakgrunn, i stedet. Oppføringer med lysgul eller grønn bakgrunn er unike for en katalog.

Figur 2: Sammenligning av to kataloger ved bruk av 'fldiff'

'xxdiff' viser filforskjellene i et eget vindu ved å klikke på en oppføring (se figur 3).

Figur 3: Sammenligning av to kataloger ved bruk av 'xxdiff'

Neste kandidat er 'Dirdiff'. Den bygger på toppen av funksjonaliteten til 'xxdiff', og kan sammenligne opptil fem kataloger. Filer som finnes i begge katalogene er merket med en x. Interessant nok er fargeskjemaet som er i bruk for utgangsvinduet det samme som 'icdiff' bruker (se figur 4).

Figur 4: Sammenligning av to kataloger ved bruk av 'Dirdiff'

Å sammenligne komprimerte arkiver og hele ISO -bilder er neste trinn. Mens 'Adiff' -kommandoen fra 'Atool' -pakken [10] kanskje allerede er kjent for deg, vil vi se på 'Diffoscope' -kommandoen [8,9], i stedet. Den beskriver seg selv som “et verktøy for å komme til bunns i det som gjør filer eller kataloger forskjellige. Den pakker ut rekursivt arkiver av mange slag og forvandler forskjellige binære formater til mer menneskelige lesbare former for å sammenligne dem ”. Verktøyets opprinnelse er det reproduserbare byggprosjektet [19,20] som er "et sett med programvareutviklingspraksis som skaper en uavhengig-verifiserbar vei fra kilde til binær kode". Blant andre støtter det følgende filformater:

* Android APK -filer og oppstartsbilder
* Berkeley DB -databasefiler
* Coreboot CBFS Filsystem Images
* Debian .buildInfo og .Endrer filer
* Debian kildepakker (.DSC)
* Elf Binaries
* Git -depoter
* ISO 9660 CD -bilder
* Macos binærfiler
* OpenSSH Public Keys
* OpenWrt Package Archives (.IPK)
* PGP signerte/krypterte meldinger
* PDF- og Postscript -dokumenter
* RPM Arkiv gressløk

Figur 5 viser utdataene fra 'diffoskop' når du sammenligner to forskjellige versjoner av Debian -pakker - du vil nøyaktig se endringene som er gjort. Dette inkluderer både filnavn og innhold.

Figur 5: Sammenligning av to Debian -pakker ved bruk av 'diffoskop' (utdrag)

Oppføring 7 viser utdataene fra 'diffoskop' når du sammenligner to ISO -bilder med en størrelse på 1.9g hver. I dette tilfellet tilhører de to ISO -bildene Linux Mint Release 19.2 Mens den ene bildefilen ble hentet fra en fransk server, og den andre fra en østerriksk server (derav bokstavene 'fr' og 'at'). I løpet av sekunders diffoskop 'sier at de to filene er helt identiske.

.Oppføring 7: Sammenligning av to ISO -bilder ved å bruke 'diffoskop'

$ diffoskop Linuxmint-19.2-XFCE-64bit.fr.ISO Linuxmint-19.2-XFCE-64bit.på.ISO
| ################################################################# plass ### | 100% tid: 0:00:00
$

For å se bak kulissene hjelper det å kalle 'diffoskop' med de to alternativene '-debug' og '-text-' for både mer ordentlig output til terminalen. Dette lar deg lære hva verktøyet gjør. Oppføring 8 viser i henhold til utdata.

.Oppføring 8: Bak kulissene av 'diffoskop'

$ diffoskop - -Debug --tekst -Linuxmint -19.2-XFCE-64bit.fr.ISO
Linuxmint-19.2-XFCE-64bit.på.ISO
2019-10-03 13:45:51 D: Diffoskop.Hoved: Starter diffoskop 78
2019-10-03 13:45:51 D: Diffoskop.Lokalisering: Normaliserende lokalitet, tidssone osv.
2019-10-03 11:45:51 D: Diffoskop.Hoved: Start sammenligning
2019-10-03 11:45:51 D: Diffoskop.Fremgang: Registrering < diffoscope.progress.ProgressBar object at 0x7f4b26310588> Som en fremgangsobservatør
2019-10-03 11:45:52 D: Diffoskop.Sammenligninger: Lastet 50 komparatorklasser64bit.fr.ISO eta:-:-:--
2019-10-03 11:45:52 D: Diffoskop.komparatorer.benyttede.Spesialiser: uidentifisert fil. Magic sier: DOS/MBR -oppstartssektor; Partisjon 2: ID = 0xef, Start-CHS (0x3ff, 254,63), End-CHS (0x3ff, 254,63), StartSector 652, 4672 sektorer
2019-10-03 11:45:52 D: Diffoskop.komparatorer.benyttede.Spesialiser: uidentifisert fil. Magic sier: DOS/MBR -oppstartssektor; Partisjon 2: ID = 0xef, Start-CHS (0x3ff, 254,63), End-CHS (0x3ff, 254,63), StartSector 652, 4672 sektorer
2019-10-03 11:45:52 D: Diffoskop.komparatorer.benyttede.Sammenlign: Sammenligning av Linuxmint-19.2-XFCE-64bit.fr.ISO (FilesystemFile) og Linuxmint-19.2-XFCE-64bit.på.ISO (filesystemfile)
2019-10-03 11:45:52 D: Diffoskop.komparatorer.benyttede.Fil: binær.has_same_content: < Linuxmint-19.2-XFCE-64bit.fr.ISO> < Linuxmint-19.2-XFCE-64bit.på.ISO>
2019-10-03 11:45:53 D: Diffoskop.komparatorer.benyttede.Sammenlign: has_same_content_as returnerte sann; Hopp over ytterligere sammenligninger
| ################################################################# plass ### | 100% tid: 0:00:01
2019-10-03 11:45:53 D: Diffoskop.tempfiles: rengjør 0 temp -filer
2019-10-03 11:45:53 D: Diffoskop.tempfiles: rengjøring 0 midlertidige kataloger
$

Vel, så langt, så bra. De neste testene er gjort på bilder fra forskjellige utgivelser og med forskjellige filstørrelser. Alle av dem resulterte i en intern feil som sporer tilbake til 'diff' -kommandoen som går tom for internt minne. Det ser ut som at det er en filstørrelsesgrense på omtrent 50m. Derfor har jeg bygget to mindre bilder av 10m hver, og overlevert den til 'diffoskop' for en sammenligning. Figur 6 viser resultatet. Utgangen er en trestruktur som inneholder filen 'NSSWITCH.Konf med de fremhevede forskjellene.

Figur 6: Sammenligning av to ISO -bilder ved bruk av 'diffoskop'

Også en HTML -versjon av utdataene kan leveres. Figur 7 viser utdataene som en HTML -fil i en webbrowser. Det er oppnåelig via bryteren

'--HTML utgang.html '.

Figur 7: Sammenligning av to ISO -bilder ved bruk av 'diffoskop' (HTML -utgang)

I tilfelle du ikke liker utgangsstilen, eller ønsker å matche den med bedriftens identitet i selskapet ditt, kan du tilpasse utdataene med din egen CSS-fil ved å bruke Switch '-CSS-stilen.CSS 'som laster stilen fra den refererte CSS -filen.

Konklusjon

Å finne forskjeller mellom to kataloger eller til og med hele ISO -bilder er litt vanskelig. Verktøyene vist ovenfor hjelper deg med å mestre denne oppgaven. Så, lykkelig hacking!

Takk skal du ha
Forfatteren vil takke Axel Beckert for hans hjelp mens han utarbeidet artikkelen.

Lenker og referanser

* [1] Colordiff
* [2] Colordiff, Debian -pakke,
* [3] Diffutils
* [4] Diffutils, Debian -pakke,
* [5] Fldiff
* [6] xxdiff
* [7] Dirdiff
* [8] Diffoskop
* [9] Diffoskop, Debian -pakke
* [10] Atool, Debian -pakke
* [11] https: // www.Winiso.com/artikler/fellesbilde-filmer.HTML (for øyeblikket offline)
* [12] ISO 9660, Wikipedia
* [13] Rock Ridge, Wikipedia
* [14] Joliet, Wikipedia
* [15] Apple ISO 9660 utvidelser, Wikipedia
* [16] Hvordan bekrefte ISO -bilder, Linux Mint
* [17] Vær forsiktig med hacket isos hvis du lastet ned Linux Mint 20. februar!
* [18] icdiff
* [19] ICDIFF, Debian -pakke
* [20] Det reproduserbare byggprosjektet
* [21] The Reproducible Builds Project, Debian Wiki