ISO-billede

Sammenligning af ISO-billeder

Sammenligning af ISO-billeder
For at opsætte og vedligeholde computerenheder leverer Linux-distributører jævnligt ISO-billeder til deres udgivelser. Dette forenkler at holde vores systemer opdaterede ved hjælp af en komplet samling af software, der faktisk passer sammen under ideelle forhold.

Forestil dig, at du har flere af disse ISO-billeder gemt lokalt. Hvordan finder du ud af, at de hentede ISO-billeder er autentiske? I denne artikel viser vi dig, hvordan du verificerer integriteten og ægtheden af ​​et ISO-billede, der er blevet downloadet før, og hvordan du finder ud af, hvad der er forskellene mellem det faktiske indhold af to ISO-billeder. Dette hjælper dig med at verificere byggeprocessen til ISO-billedet og giver dig mulighed for at se, hvad der muligvis har ændret sig mellem to builds eller frigivelser, der er tilgængelige.

Billedformater

Diskbilledernes format har sin egen historie [11]. Den fælles standard er ISO 9660 [12], der beskriver indholdet af en optisk disk som helhed. I brug er filtypen .iso for at identificere en billedfil (klonet kopi).

Det originale ISO 9660-format leveres med en række begrænsninger såsom 8 katalogniveauer samt længden på filnavne. Disse begrænsninger er blevet reduceret ved indførelsen af ​​et antal udvidelser såsom Rock Ridge [13] (bevarelse af POSIX-tilladelser og længere navne), Joliet [14] (opbevaring af Unicode-navne i UCS-2) og Apple ISO 9660 Extensions [15] der introducerede HFS support.

For at få flere detaljer om en billedfil skal du bruge kommandoen 'fil' efterfulgt af datafilens navn som følger:

.Liste 1: Vis detaljerne for en ISO-fil

$ fil *.iso
debian-10.1.0-amd64-netinst.iso: DOS / MBR boot sektor;
partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), end-CHS (0x3ff, 254,63),
startsektor 3808, 5664 sektorer
xubuntu-18.04.3-desktop-amd64.iso: DOS / MBR boot sektor;
partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), end-CHS (0x3ff, 254,63),
startsektor 11688, 4928 sektorer $

Bekræftelse af downloadede ISO-filer

Pålidelige softwareleverandører tilbyder dig altid to ting til download - det faktiske ISO-billede såvel som det tilsvarende kontrolsum for billedet for at foretage en integritetskontrol for den downloadede fil. Sidstnævnte giver dig mulighed for at bekræfte, at din lokale fil er en nøjagtig kopi af filen, der findes på downloadserverne, og intet gik galt under download. I tilfælde af en fejl under download er den lokale fil beskadiget og kan udløse tilfældige problemer under installationen [16].

Hvis ISO-billedet er kompromitteret (som det skete med Linux Mint i begyndelsen af ​​2016 [17]), vil de to kontrolsummer desuden ikke matche. Du kan beregne kontrolsummen ved hjælp af 'md5sum' (udfaset, anbefales ikke længere) og 'sha256sum' som følger:

.Liste 2: Beregning af kontrolsum 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åberåbe sammenligningen mellem den medfølgende kontrolsumfil og det lokalt gemte ISO-billede som vist i liste 3. Outputtet fra OK i slutningen af ​​en linje signaliserer, at begge kontrolsummer er ens.

.Liste 3: Sammenlign de medfølgende kontrolsummer

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

Sammenligning af to lokalt gemte ISO-filer

Det kan ske, at du har downloadet to ISO-filer, og du vil gerne finde ud af, om de er helt de samme. Kommandoen 'sha256sum' er igen nyttig, og vi anbefaler dig at indkapsle denne check i et shell-script. I liste 4 ser du et ifølge bash-script, der kombinerer de fire kommandoer 'sha256sum', 'cut', 'uniq' og 'wc' for at adskille den første kolonne for alle outputlinjerne, flet dem, hvis de er identiske , og tæl antallet af resterende linjer. Hvis de to (eller flere) ISO-filer er de samme, er dens kontrolsummer identiske, kun en enkelt linje forbliver, og bash-scriptet sender meddelelsen "filerne er de samme", til sidst:

.Liste 4: Sammenlign automatisk kontrolsum af ISO-filer ved hjælp af 'sha256sum'

#!/ bin / bash
 
hvis ['sha256sum *.iso | klippe -d "-f1 | uniq | wc -l 'eq 1]
derefter
ekko "filerne er de samme"
andet
ekko "filerne er ikke identiske"
fi

Hvis scriptet vender tilbage, at de to filer er forskellige, kan du være interesseret i den nøjagtige placering af ulighed. En sammenligning af byteordre kan udføres ved hjælp af kommandoen 'cmp', der udsender den første byte, der adskiller sig mellem filerne:

.Liste 5: Se forskellene mellem to eller flere filer ved hjælp af 'cmp'

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

Sammenligning af det faktiske indhold

Indtil videre har vi foretaget en byteordersammenligning, og nu skal vi se nærmere på det indre indhold af de ISO-filer, der skal sammenlignes med hinanden. På dette tidspunkt kommer et antal værktøjer til spil, der hjælper med at sammenligne enkeltfiler, hele katalogstrukturer såvel som komprimerede arkiver og ISO-billeder.
Kommandoen 'diff' hjælper med at sammenligne en mappe ved hjælp af de to kontakter '-r' (forkortelse for '-recursive') og '-q' (forkortelse for '-brief') efterfulgt af de to mapper, der skal sammenlignes med hinanden. Som det ses i

På liste 6 rapporterer 'diff', hvilke filer der er unikke for begge biblioteker, og hvis en fil med samme navn er ændret.

.Liste 6: Sammenligning af to mapper ved hjælp af 'diff'

$ diff -qr t1 / t2 /
Kun i t1 /: blabla.konf.
Filerne t1 / nsswitch.conf og t2 / nsswitch.conf er forskellige.
Kun i t2 /: pwd.konf.
$

For at sammenligne to ISO-billeder skal du blot montere de to billedfiler i separate kataloger og gå derfra.
En mere farverig output på kommandolinjen leveres af værktøjerne 'colordiff' [1,2] og 'icdiff' [18,19]. Figur 1 viser output af 'icdiff', hvor forskellene mellem de to filer af 'nsswitch.conf 'er fremhævet i enten grøn eller rød.

Figur 1: Sammenligning af to mapper ved hjælp af 'icdiff'

Grafiske værktøjer til sammenligning af mapper inkluderer 'fldiff' [5], 'xxdiff' [6] og 'dirdiff' [7]. 'xxdiff' blev inspireret af 'fldiff', og det er derfor, de ser ret ens ud. Indlæg, der har et lignende indhold, har i stedet en hvid eller grå baggrund, og poster, der adskiller sig, kommer med en lysegul baggrund. Indgange med en lysegul eller grøn baggrund er unikke for et bibliotek.

Figur 2: Sammenligning af to mapper ved hjælp af 'fldiff'

'xxdiff' viser filforskellene i et separat vindue ved at klikke på en post (se figur 3).

Figur 3: Sammenligning af to mapper ved hjælp af 'xxdiff'

Den næste kandidat er 'dirdiff'. Det bygger oven på funktionaliteten i 'xxdiff' og kan sammenligne op til fem mapper. Filer, der findes i begge biblioteker, er markeret med et X. Interessant nok er det farveskema, der bruges til outputvinduet, det samme som 'icdiff' bruger (se figur 4).

Figur 4: Sammenligning af to mapper ved hjælp af 'dirdiff'

Sammenligning af komprimerede arkiver og hele ISO-billeder er det næste trin. Mens kommandoen 'adiff' fra pakken 'atool' [10] muligvis allerede er kendt for dig, ser vi i stedet på kommandoen 'diffoscope' [8,9]. Det beskriver sig selv som ”et værktøj til at komme til bunden af, hvad der gør filer eller mapper forskellige. Det pakker arkiver af mange slags rekursivt ud og omdanner forskellige binære formater til mere menneskelige læsbare former for at sammenligne dem ”. Værktøjets oprindelse er The Reproducible Builds Project [19,20], som er "et sæt softwareudviklingspraksis, der skaber en uafhængigt verificerbar sti fra kilde til binær kode". Blandt andet understøtter det følgende filformater:

* Android APK-filer og opstartsbilleder
* Berkeley DB-databasefiler
* Coreboot CBFS-filsystembilleder
* Debian .buildinfo og .ændrer filer
* Debians kildepakker (.dsc)
* ELF-binærfiler
* Git-arkiver
* ISO 9660 CD-billeder
* MacOS-binære filer
* OpenSSH offentlige nøgler
* OpenWRT-pakkearkiver (.ipk)
* PGP-signerede / krypterede meddelelser
* PDF- og PostScript-dokumenter
* RPM arkiver purløg

Figur 5 viser output fra 'diffoskop', når man sammenligner to forskellige versioner af Debian-pakker - du vil nøjagtigt se de ændringer, der er foretaget. Dette inkluderer både filnavne og indhold.

Figur 5: Sammenligning af to Debian-pakker ved hjælp af 'diffoscope' (uddrag)

Liste 7 viser output fra 'diffoskop', når man sammenligner to ISO-billeder med en størrelse på 1.9G hver. I dette tilfælde hører de to ISO-billeder til Linux Mint Release 19.2 hvorimod den ene billedfil blev hentet fra en fransk server, og den anden fra en østrigsk server (deraf bogstaverne 'fr' og 'at'). Inden for få sekunder angiver 'diffoskop', at de to filer er helt identiske.

.Liste 7: Sammenligning af to ISO-billeder ved hjælp af 'diffoskop'

$ diffoskop linuxmint-19.2-xfce-64bit.fr.iso linuxmint-19.2-xfce-64bit.på.iso
. ### | 100% tid: 0:00:00
$

For at se bag kulisserne hjælper det med at kalde 'diffoskop' med de to muligheder '-debug' og '-text -' for begge mere detaljerede output til terminalen. Dette giver dig mulighed for at lære, hvad værktøjet laver. Liste 8 viser den tilsvarende output.

.Liste 8: Bag kulisserne i 'diffoskop'

$ diffoscope --debug --text - linuxmint-19.2-xfce-64bit.fr.iso
linuxmint-19.2-xfce-64bit.på.iso
2019-10-03 13:45:51 D: diffoskop.hoved: Startdiffoskop 78
2019-10-03 13:45:51 D: diffoskop.lokalitet: Normalisering af lokalitet, tidszone osv.
2019-10-03 11:45:51 D: diffoskop.vigtigste: Start sammenligning
2019-10-03 11:45:51 D: diffoskop.fremskridt: Registrering < diffoscope.progress.ProgressBar object at 0x7f4b26310588> som en fremskridtsobservatør
2019-10-03 11:45:52 D: diffoskop.komparatorer: Indlæst 50 komparatorklasser64bit.fr.iso ETA: -: -:--
2019-10-03 11:45:52 D: diffoskop.komparatorer.redskaber.specialisere: Uidentificeret fil. Magic siger: DOS / MBR boot sektor; partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), end-CHS (0x3ff, 254,63), startsektor 652, 4672 sektorer
2019-10-03 11:45:52 D: diffoskop.komparatorer.redskaber.specialisere: Uidentificeret fil. Magic siger: DOS / MBR boot sektor; partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), end-CHS (0x3ff, 254,63), startsektor 652, 4672 sektorer
2019-10-03 11:45:52 D: diffoskop.komparatorer.redskaber.sammenlign: Sammenligning af 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.redskaber.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.redskaber.sammenlign: has_same_content_as returneret True; springer yderligere sammenligninger over
| ################################## ############################## ### | 100% tid: 0:00:01
2019-10-03 11:45:53 D: diffoskop.tempfiles: Rengøring af 0 temp-filer
2019-10-03 11:45:53 D: diffoskop.tempfiles: Rengøring af 0 midlertidige mapper
$

Nå, så langt, så godt. De næste tests er blevet udført på billeder fra forskellige udgivelser og med forskellige filstørrelser. Alle resulterede i en intern fejl, der spores tilbage til 'diff' -kommandoen, der løber tør for intern hukommelse. Det ser ud til, at der er en filstørrelse på ca. 50 mio. Derfor har jeg bygget to mindre billeder på hver 10M og afleveret det til 'diffoskop' til sammenligning. Figur 6 viser resultatet. Outputtet er en træstruktur, der indeholder filen 'nsswitch.conf 'med de fremhævede forskelle.

Figur 6: Sammenligning af to ISO-billeder ved hjælp af 'diffoskop'

Der kan også leveres en HTML-version af output. Figur 7 viser output som en HTML-fil i en webbrowser. Det kan opnås via kontakten

'--html output.html '.

Figur 7: Sammenligning af to ISO-billeder ved hjælp af 'diffoscope' (HTML-output)

Hvis du ikke kan lide outputstilen eller gerne vil matche den med din virksomheds virksomhedsidentitet, kan du tilpasse output ved hjælp af din egen CSS-fil ved hjælp af switch '-css-stilen.css ', der indlæser typografien fra den refererede CSS-fil.

Konklusion

At finde forskelle mellem to mapper eller endda hele ISO-billeder er lidt vanskeligt. Værktøjerne vist ovenfor hjælper dig med at mestre denne opgave. Så glad hacking!

tak skal du have
Forfatteren vil gerne takke Axel Beckert for hans hjælp under forberedelsen af ​​artiklen.

Links og referencer

* [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] Kort introduktion af nogle almindelige billedfilformater
* [12] ISO 9660, Wikipedia
* [13] Rock Ridge, Wikipedia
* [14] Joliet, Wikipedia
* [15] Apple ISO 9660 Extensions, Wikipedia
* [16] Sådan verificeres ISO-billeder, Linux Mint
* [17] Pas på hackede ISO'er, hvis du downloadede Linux Mint den 20. februar!
* [18] icdiff
* [19] icdiff, Debian-pakke
* [20] Det reproducerbare bygger-projekt
* [21] The Reproducible Builds Project, Debian Wiki

Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...
Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...
Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...