Md5sum

From ICO wiki
Revision as of 21:02, 19 November 2011 by Iromanen (talk | contribs)
Jump to navigationJump to search

Sissejuhtatus

Artikkel tutvustab programmi md5sum ning annab juhiseid selle kasutamiseks erinevate operatsioonisüsteemidega. Põhirõhk on pandud md5sum-i kasutamisele Linuxiga. Artikkel sobib lugemiseks algajatele, siiski tuleksid kasuks algteadmised Linuxi käsureaga töötamisel.

Tutvustus

Kui on alla laetud ISO fail, on soovitatav testida, kas see on ikka korrektne ning kas seda on turvaline kasutada. Kalkuleeritud md5 räsiväärtus peab olema võrdne korrektse ISO md5 väärtusega. Programm md5sum on disainitud, et kindlaks teha andmete terviklikkust kasutades md5 (Message-Digest algorithm 5) 128-bitilist krüptograafilist räsi. Kasutades md5 räsi õigesti, on võimalik kindlaks teha nii faili terviklikkust kui ka autentsust. Terviklikkuse koha pealt teeb md5 räsi võrdlus kindlaks muudatusi failis, mis põhjustaksid viga. Vigade tõenosus on proportsionaalne faili suurusega: mida suurem fail, seda suurem on vigade tõenäosus. Väga kasulik on läbi teha md5 räsi võrdluse, kui tegemist on operatsioonisüsteemi installeerimiise CD-ga, mis peab olema 100% korrektne. „Õige“ MD 5 räsi , millega kalkuleeritud räsi võrreldakse, peab pärinema turvaliselt ja usaldusväärselt organisatsiooni lehelt (HTTPS). Turvalised Ubuntu räsid on leitavad siit: https://help.ubuntu.com/community/UbuntuHashes. Räsi on tavaliselt kättesaadav samalt lehelt, kust laetakse alla ka ISO fail.

Md5sum ja Linux

Enamikul Linux distributsioonidel on md6sum vaikimisi peal, seega installeerimine pole vajalik.

Ühe ISO faili kontrollimine

Kõigepealt ava terminal ja liigu õigesse kataloogi, et kontrollida allalaetud ISO faili:

ubuntu@ubuntu-desktop:~$ cd Downloads

Siis käivita see käsk:

md5sum ubuntu-11.10-dvd-i386.iso

Md5sum peaks väljastama taolise rea pärast räsi arvutamist:

8044d756b7f00b695ab8dce07dce43e5 ubuntu-11.10-dvd-i386.iso

Võrdle kalkuleeritud räsi „õige“ räsiga.Kui mõlemad räsid on täpselt ühesugused, siis võib üsna kindel olla, et allalaetud fail on korras. Kui räsid ei klapi, siis on ilmselt on probleem kas allalaadimisega või serveriga. Peaks proovima faili uuesti alla laadida kasutades sama peegelsaiti või teist peegelsaiti, kui kahtlustatakse serveri viga. Kui serverist saab pidevalt vigase faili, peaks teavitama veebimeistrit, et saaks probleemi uurida.

Mitme faili kontrollimine

Juhul kui laetakse alla mitu suurt faili ja soovtakse neid kõiki kontrollida, kuid ühekaupa kontrollimine on liiga vaevarikas, siis lahendus on testida kõiki faile korraga ja salvestada tulemus eraldi tekstifaili. Selle jaoks peaks salvestama kõik failid samasse kausta ning seejärel sisestama käsu:

md5sum *.iso > mymd5sum.txt 

CD kontrollimine

CD terviklikkust saab kontrollida ka ilma rebuutimata.
Võib arvata, et piisab lihtsalt selisest käsust, et koostada CD räsi: md5sum /dev/cdrom.Paraku ei ole pea kunagi tulemuseks õige räsi, sest käsklus sisaldab ka tühja ruumi plaadi lõpuosas, mis muudab räsi. Seega tuleb kontrollida ainult seda plaadi osa, millel on ISO.

Manuaalne meetod
Kõigepealt on vaja teada saada ISO image suuruse. Mugav on seda teha näteks kasutades käsurida, sest seda on edaspidi nagunii vaja kasutada:

ls -l ubuntu-8.10-desktop-i386.iso
-rw-r--r-- 1 jsmith jsmith 732766208 2008-10-28 23:24 ubuntu-8.10-desktop-i386.iso

Siit selgub, et faili suurus on 732766208 ning saab kasutada dd, et lasta räsi tegemisel läbi ainult 732766208 baiti CD-st. Vali bloki suuruseks 1 ja määra count väärtuseks ISO image suurus.

dd if=/dev/cdrom bs=1 count=732766208 | md5sum
732766208+0 records in
732766208+0 records out
24ea1163ea6c9f5dae77de8c49ee7c03  -
732766208 bytes (733 MB) copied, 563.666 s, 1.3 MB/s

Toimingut võib kiirendada, kui valida suurem bloki suurus ning jagada caount väärtus uue bloki suurusega. Olenevalt kasutatavast süsteemist on mõnikord vaja cdrom asemel kirjutada näiteks cdrom0 või isegi cdrom1, kui arvutil on mitu CD seadet.

Automatiseeritud skript

See on shelli skript, mis kontrollib kõrvetatud CD md5 räsi ja võrdleb seda ISO image räsiga. Kopeeri ja kleebi see enda valitud tekstiredaktorisse ning salvesta nimega hashcdrom.sh.

#Compares the checksums of an iso9660 image and a burned disk.
#This script is released into the public domain by it's author.
if [ -n "$BASH" ]; then
shopt -s expand_aliases
fi
if [ -n "$CHECKSUM" ]; then
alias CHECKSUM="$CHECKSUM"
elif which md5deep &> /dev/null; then
alias CHECKSUM='md5deep -e'
else
alias CHECKSUM='md5sum'
fi
if [ -n "$2" ]; then
DISKDEVICE="$2"
else
DISKDEVICE='/dev/cdrom'
fi
CSUM1=$(CHECKSUM "$1" | grep --only-matching -m 1 '^[0-9a-f]*')
echo 'checksum for input image:' $CSUM1
SIZE=$(stat -c '%s' "$1");
BLOCKS=$(expr $SIZE / 2048);
CSUM2=$(dd if="$DISKDEVICE" bs=2048 count=$BLOCKS 2> /dev/null | CHECKSUM | grep --only-matching -m 1 '^[0-9a-f]*')
echo 'checksum for output disk:' $CSUM2
if [ "$CSUM1" = "$CSUM2" ]; then
echo 'verification successful!'
else
echo 'verification failed!'
fi

Nüüd ava terminal ja kirjuta:

sh /path/to/hashcdrom.sh /path/to/ubuntu-8.10-desktop-i386.iso /dev/mycdromdevice

Pane tähele, et kui sinu CD seade on /dev/cdrom, võib jätte selle parameetri. Tulemus peaks olema midagi taolist:

checksum for input image: 24ea1163ea6c9f5dae77de8c49ee7c03
checksum for output disk: 24ea1163ea6c9f5dae77de8c49ee7c03
verification successful!

Shell skript sõltub teatud tunnustest, mis on ainult GNU grep-il, seega skript ei tööta ilmselt süsteemides, mis millel puudub GNU utiliit.