Prüfsumme von Dateien mit PowerShell ermitteln

Aus Falkner's Computer Wiki

Möchte man die Prüfsumme einer Datei erreichnen, kann man auf Zusatzprogramme wie z.B. HashTab zurückgreifen. Damit kann man nachprüfen, ob es sich bei der kopierten oder heruntergeladenen Datei um ein und die selbe handelt. Ist der Hash-Wert der gleiche, ist die Datei auch identisch. Ist der Hash-Wert nicht der selbe, muss man die Datei neu kopieren.

Ab PowerShell Version 4, die seit Windows 8 / Windows Server 2012 mit dabei ist, gibt es auch eine eigenes cmdlet namens Get-Filehash. Mittels dem Parameter -Algorithm lässt sich auch noch den gewünschten Algorithmus wählen.

Beschreibung

Das Cmdlet "Get-FileHash" berechnet den Hash-Wert für eine Datei mithilfe eines angegebenen Hash-Algorithmus. Ein Hashwert ist ein eindeutiger Wert, der dem Inhalt der Datei entspricht. Anstatt den Inhalt einer Datei anhand des Dateinamens, der Erweiterung oder einer anderen Bezeichnung zu kennzeichnen, weist ein Hash dem Inhalt einer Datei einen eindeutigen Wert zu. Dateinamen und Erweiterungen können ohne Änderung des Inhalts der Datei und ohne Änderung des Hash-Wertes geändert werden. Ebenso kann der Inhalt der Datei geändert werden, ohne den Namen oder die Erweiterung zu ändern. Wenn Sie jedoch auch nur ein einziges Zeichen im Inhalt einer Datei ändern, ändert sich der Hash-Wert der Datei.

Der Zweck von Hash-Werten ist es, eine kryptographisch sichere Methode zu bieten, um zu überprüfen, ob der Inhalt einer Datei nicht verändert wurde. Während einige Hash-Algorithmen, einschließlich MD5 und SHA1, nicht mehr als sicher gegen Angriffe gelten, besteht das Ziel eines sicheren Hash-Algorithmus darin, es unmöglich zu machen, den Inhalt einer Datei zu ändern - sei es versehentlich oder durch einen böswilligen oder nicht autorisierten Versuch - und den gleichen Hash-Wert beizubehalten. Sie können auch Hash-Werte verwenden, um festzustellen, ob zwei verschiedene Dateien exakt denselben Inhalt haben. Wenn die Hash-Werte zweier Dateien identisch sind, ist auch der Inhalt der Dateien identisch.

Standardmäßig verwendet das Cmdlet "Get-FileHash" den SHA256-Algorithmus, obwohl jeder vom Zielbetriebssystem unterstützte Hash-Algorithmus verwendet werden kann.[1]

Benutzung

MD5 Hash berechnen

Möchte man z.B. den MD5 Hash der ISO-Datei Windows 10_21H1_x64.iso errechnet haben verwendet man folgenden Befehl:

Get-FileHash -Path C:PfadzurDatei.exe -Algorithm MD5

Hinter dem Parameter „-Path“ muss der Pfad zur gewünschten Datei angegeben werden, sowie der gewünschte Algorithmus hinter dem Parameter „-Algorithm“. In diesem Beispiel wurde ein Windows 10 IOS-Datei verwendet.

Aus Sicherheitsgründen sollten MD5 und SHA1, die nicht mehr als sicher betrachtet werden, nur für eine einfache Änderungsvalidierung verwendet werden und sollten nicht verwendet werden, um Hashwerte für Dateien zu erzeugen, die Schutz vor Angriffen oder Manipulationen erfordern.

Hash berechnen

Möchte man den Hash-Wert einer Datei berechen, kann man folgenden befehl benutzen:

Get-FileHash -Path C:PfadzurDatei.exe | Format-List

Dieser Befehl verwendet wieder das Cmdlet Get-FileHash und den Standard SHA256-Algorithmus, um den Hashwert der ISO-Date zu berechnen.

Prüfsummen vergleichen

Möchte man den errechneten Hash-Wert mit einem vorhanden Hash überprüfen, kann man folgenden BEfehl verwenden:

Get-FileHash -Path C:PfadzurDatei.exe | Compare-Object -ReferenceObject "Hash-Wert" -DifferenceObject {$_.Hash}

Bei "Hash-Wert" muss dan der zu Vergleichende Hash-Wert eingetragen werden.

Hier kann man sehen, dass die Werte nicht übereinstimmen mit dem Orginal. Sollte keine solche Ausgabe erscheinen, heißt dies, dass die Hashes übereinstimmen.

Einzelnachweise