Mawia się, że potrzeba matką wynalazków, tak więc potrzebą moją było znalezienie na dysku pewnego pliku o określonej sumie kontrolnej. Pewnie są do tego narzędzia, pewnie nawet za darmo, ale jakoś tak bardzo nie chciało mi się szukać po Internecie, że napisałem sobie jednolinijkowca w PowerShellu.
Wygląda jak poniżej:
Get-Childitem -File -Recurse -LiteralPath "c:\Windows\System32" -Force -ErrorAction SilentlyContinue | ForEach {if ((get-filehash -path $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash -eq "5DA8C98136D98DFEC4716EDD79C7145F") {Write-Host "This file has searched control sum:" $_.FullName}}
Miejsca zaznaczone na czerwono można dopasować do własnych potrzeb, czyli:
- ścieżkę folderu do przeszukania (działa rekursywnie). Można też podać cały dysk, ale wtedy będzie odpowiednio dłużej.
- algorytm. W powyższym przykładzie jest to MD5, ale można wybrać jeden z poniższych:
- SHA1,
- SHA256,
- SHA384,
- SHA512,
- suma kontrolna poszukiwanego pliku.
Powyższy kawałek kodu nie sprawdzi plików, które są otworzone, bądź zablokowane.