#!/usr/bin/env perl ## ## This script was created to be used in conjunction with Hashcat mode 29700 (Keepass in keyfile only mode). ## This can be useful if you have a partition and forgot which of the files was used as the keyfile. ## ## Example use (if your target drive is mounted to /mnt/sda1 and (optionally) another one to /mnt/sda2): ## ## $ perl recursivefiles2sha256sum /mnt/sda1 /mnt/sda2 > wordlist.dict ## $ ./hashcat kdbxdb.hash wordlist.dict ## ## Note that the redirection operator > also works on Windows cmd.exe. ## To run perl in Windows use strawberry perl use strict; use warnings; use File::Find; use Digest::SHA; my $sha = Digest::SHA->new ("sha256"); my @folders = @ARGV; if (scalar @folders == 0) { die ("use: $0 folder1 folder2...\n"); } find (\&handlefile, @folders); sub handlefile { my $file = $_; return unless -f $file; return unless -r $file; my $sha_copy = $sha->clone; $sha_copy->addfile ($file); my $digest = $sha_copy->hexdigest; print "$digest\n"; }