From 6cab3cca1801d75581c7a81c7b9a29f6ba2273e9 Mon Sep 17 00:00:00 2001 From: James Rouzier Date: Wed, 18 Sep 2024 20:18:52 +0000 Subject: [PATCH] Use a faster library for calculating pbkdf2 --- lib/pf/util/wpa.pm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/pf/util/wpa.pm b/lib/pf/util/wpa.pm index b8b5db5bc064..69cdec1dde43 100644 --- a/lib/pf/util/wpa.pm +++ b/lib/pf/util/wpa.pm @@ -7,6 +7,7 @@ use List::Util qw(minstr maxstr); use pf::log; use Crypt::PBKDF2; use Digest::SHA qw(hmac_sha1); +use Crypt::KeyDerivation qw(pbkdf2); use bytes; my $PKE = "Pairwise key expansion"; @@ -39,7 +40,7 @@ sub bytes_range { return substr($str, $start, $size); } -sub calculate_pmk { +sub calculate_pmk_slow { my ($ssid, $psk) = @_; my $pbkdf2 = Crypt::PBKDF2->new( iterations => 4096, @@ -52,6 +53,13 @@ sub calculate_pmk { return $pmk; } +sub calculate_pmk { + my ($ssid, $psk) = @_; + my $pmk = pbkdf2($psk, $ssid, 4096, 'SHA1', 32); + get_logger->debug("PTK is ".unpack("H*", $pmk)); + return $pmk; +} + sub calculate_ptk { my ($pmk, $mac_ap, $mac_cl, $anonce, $snonce) = @_; my $key_data = minstr($mac_ap, $mac_cl) . maxstr($mac_ap, $mac_cl) . minstr($anonce,$snonce) . maxstr($anonce,$snonce);