Datenintegrität
10.03.2020, 01:44 Uhr
10.03.2020, 01:44 Uhr
Win10: Datei-Hashes bequem per Skript prüfen
Egal, ob SHA256 oder MD5 – mit diesem PowerShell-Skript prüfen Sie Datei-Hashes mit Windows-10-Bordmitteln – und trotzdem bequem und intuitiv.
Das Berechnen eines Datei-Hashes nach MD5- oder SHA256-Standard ist in vielen Situationen nützlich und bei einigen fortgeschrittenen Usern fast alltäglich:
Das Berechnen und Vergleichen solcher Hashes ist also sehr nützlich. Die gebräuchlichsten sind die Standards MD5 (für schnellen Massenvergleich) und SHA256. Wie Sie solche Hashes unter Windows 7 und Windows 10 mit einem kostenlosen Zusatztool bewerkstelligen, lesen Sie hier: «MD5- und SHA256-Hashes berechnen».
Unter Windows 10 bringt zudem die PowerShell gleich selbst einen Befehl zur Berechnung von Hashes mit. Das haben Sie in diesem Artikel gelesen: «Windows 10: SHA256-Hash mit Bordmitteln prüfen».
Wie es aber Konsolenbefehle so an sich haben, ist der Umgang mit ihnen alles andere als intuitiv. Nicht jeder kann oder will sich die unzähligen Befehle und Schalter merken. Einer der PCtipp-Forumsnutzer hat darum jetzt ein PowerShell-Skript erstellt, das interaktiv das Auswählen der Datei und des gewünschten Hash-Standards abfragt. Wenn Sie dieses Skript und eine winzige Batchdatei bei sich korrekt speichern, können Sie es bequem über eine Verknüpfung aufrufen und Hashes nach verschiedensten Standards mit Bordmitteln prüfen – all dies ohne Konsolenfenster-Hackerkünste.
Folgendes zeigen wir gleich im Detail:
Speichern des Skripts und der Batch-Datei: Laden Sie hier aus der obenstehenden Box die Datei HashCompare1_1.zip herunter. Entzippen Sie die beiden enthaltenen Dateien direkt Ihren Dokumente-Ordner. Aufgepasst: Die Batch-Datei enthält einen Verweis auf den Dokumente-Ordner. Falls Sie einen anderen Ordner bevorzugen, müssen Sie die Batch-Datei bearbeiten und darin den Pfad anpassen.
Verknüpfung erstellen und in die Taskleiste stecken: Die beiden zu entzippten Dateien heissen HashCompareStart.bat und HashCompare.ps1 – es kann je nach System sein, dass die Endungen nicht sichtbar sind. Ziehen Sie jetzt mit der rechten Maustaste nur eine Verknüpfung zu HashCompareStart.bat auf den Desktop und wählen Sie Verknüpfungen hier erstellen.
Klicken Sie mit rechts auf die Verknüpfung und wählen Sie Eigenschaften. Im Reiter Verknüpfung klicken Sie ins Feld Ziel. Hüpfen Sie per Home-Taste ganz an den Anfang des Feldes. Dort fügen Sie die Zeichenfolge C:\Windows\System32\cmd.exe /c sowie ein Leerzeichen ein, damit der ganze Inhalt des Ziel-Feldes ungefähr wie folgt lautet, wobei anstelle von «IhrName» natürlich der Name Ihres Windows-Benutzerprofils gemeint ist: C:\Windows\System32\cmd.exe /c C:\Users\IhrName\Documents\HashCompareStart.bat
Wenn Sie wollen, klicken Sie auf Anderes Symbol und klicken auf Durchsuchen. Im Ordner C:\Windows\System32\ finden Sie beispielsweise die Datei imageres.dll, die haufenweise Icons enthält (andere Icon-Quellen unter Windows finden Sie mit Hilfe dieses Artikels). Ist ein Icon gewählt, klicken Sie auf OK.
Klicken Sie die Verknüpfung an und drücken Sie F2. Benennen Sie die Verknüpfung nach Gutdünken um, zum Beispiel einfach in HashCompare. Ziehen Sie die Verknüpfung jetzt in die Taskleiste und wählen Sie Anheften an Taskleiste. Jetzt haben Sie Ihr Bordmittel für bequeme Hash-Berechnungen und -Vergleiche. Die Verknüpfung auf dem Desktop können Sie nun löschen, da Sie ja noch jene in der Taskleiste haben.
Ab sofort gehts wie folgt: Klicken Sie aufs HashCompare-Icon. Es erscheint ein Konsolenfenster. Hier müssen Sie aber keine langen Befehle eintippen, sondern einfach die jeweils passende Ziffer. Zuerst erscheint «Pfad einfügen oder '1' für Datei-Explorer». Das bedeutet: Drücken Sie die Ziffer 1 und wählen Sie die zu prüfende Datei via Explorer-Fenster aus. Anschliessend können Sie per Eintippen der zugehörigen Ziffer aus einem von sieben Algorithmen wählen:
Bei «Erwarteter Hash» können Sie den Hash ab der Herstellerwebseite hineinkopieren: Markieren und Kopieren Sie den Hash dort via Rechtsklick, klicken Sie mit rechts ins Konsolenfenster, dann wird das Kopierte automatisch eingefügt. Drücken Sie Enter, wird der Hash der Datei berechnet und mit jenem verglichen, die Sie von der Herstellerwebseite kopiert haben. Ob der Hash identisch ist, erfahren Sie sofort.
Der Hash der oben angebotenen Zip-Datei sollte übrigens wie folgt lauten:
3fbb2130cba7362f0058bb04e40ca463d18b74e70d60ddbe635584c0d3391d67
Auf der nächsten Seite: Der Quellcode des Skripts für Interessierte
Der Skript-Code zur Begutachtung
Statt die Skript- und die Batch-Datei herunterzuladen, können Sie die beiden auch manuell erstellen. Hier finden Sie den Code der beiden Dateien. Speichern Sie diese aus Notepad heraus mit der Text-Codierung «ANSI» anstelle von UTF-8, sonst zeigt es falsche Umlaute an.
Korrektes Speichern des PowerShell-Skripts: Öffnen Sie den Notepad-Editor, indem Sie auf Start klicken, Notepad eintippen und den Editor öffnen. Ziehen Sie das Fenster etwas grösser. Markieren und kopieren Sie den Quellcode aus der folgenden Box vollständig, ohne ihn zu verändern:
#Compare hash of downloaded files
#Author: Xpert for PCtipp 02/2020
#Version 1.1 05.03.2020
function Restart(){
$restart = Read-Host -Prompt "Neuer Vergleich (1), Exit (0)? "
if($restart -match 0){
exit
}
HashCompare
}
function HashCompare(){
Add-Type -AssemblyName System.Windows.Forms
$choosePathOption = ""
cls
#Algorithms to choose from
$const_sha1 = "sha1"
$const_sha256 = "sha256"
$const_sha384 = "sha384"
$const_sha512 = "sha512"
$const_MACTripleDES = "MACTripleDES"
$const_md5 = "md5"
$const_RIPEMD160 = "RIPEMD160"
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{ InitialDirectory = [Environment]::GetFolderPath('Desktop') }
$choosePathOption = Read-Host -Prompt "Pfad einfügen oder '1' für Datei-Explorer"
if($choosePathOption -match '1'){
$null = $FileBrowser.ShowDialog()
$pathToFile = $FileBrowser.FileName
}
else{
$pathToFile = $choosePathOption
}
$ChooseAlgorithmToUse = Read-Host -Prompt "Welchen Algorithmus (0-6)? $const_sha1 (0), $const_sha256 (1), $const_sha384 (2), $const_sha512 (3), $const_MACTripleDES (4), $const_md5 (5), $const_RIPEMD160 (6)"
switch ( $ChooseAlgorithmToUse )
{
0 { $AlgorithmToUse = "sha1" }
1 { $AlgorithmToUse = "sha256" }
2 { $AlgorithmToUse = "sha384" }
3 { $AlgorithmToUse = "sha512" }
4 { $AlgorithmToUse = "MACTripleDES" }
5 { $AlgorithmToUse = "md5" }
6 { $AlgorithmToUse = "RIPEMD160" }
}
$pathToFile = $pathToFile -replace ('"', '')
$hashExpected = Read-host -Prompt "Erwarteter Hash (z.B. auf Webseite angegeben) zur Kontrolle"
Write-Host "Berechne Hash und vergleiche... bitte warten"
$hashFromFile = get-filehash -path $pathToFile -Algorithm $AlgorithmToUse | Select -ExpandProperty "Hash"
if($hashExpected -match $hashFromFile){
Write-Host "Vergleich positiv" -ForegroundColor Green
Write-host $hashExpected.ToLower()
Write-Host $hashFromFile.ToLower()
Restart
}
Write-Host "Vergleich negativ" -ForegroundColor Red
Write-host $hashExpected.ToLower()
Write-Host $hashFromFile.ToLower()
Restart
}
HashCompare
Fügen Sie ihn mit Ctrl+V (Strg+V) ins Notepad-Fenster ein. Gehen Sie in Notepad via Datei zu Speichern unter. Wählen Sie als Dateityp «Alle Dateien» und bei der Kodierung ANSI. Für den Dateinamen wählen Sie HashCompare.ps1 und als Speicherort wählen Sie Ihren Dokumente-Ordner.
Selbiges nun mit der Batch-Datei. Hier sind es nur diese zwei Zeilen:
powershell -executionpolicy bypass -File "%userprofile%\Documents\HashCompare.ps1"
pause
Speichern Sie diese Datei mit dem Dateinamen HashCompareStart.bat ebenfalls in Ihrem Dokumente-Ordner, ebenfalls mit dem Dateityp «Alle Dateien» und mit der Codierung ANSI. Erstellen Sie nun – wie auf der vorherigen Seite erwähnt – eine Verknüpfung zur .bat-Datei, passen Sie diese an und legen Sie diese in die Taskleiste.
Für Fortgeschrittene dürfte die Nutzung des Skripts mehr oder weniger selbsterklärend sein; ansonsten blättern Sie auch hierfür kurz auf Seite 1 dieses Artikels zurück. (PCtipp-Forum)