Crypt-SmbHash
view release on metacpan or search on metacpan
import Encode;
$HaveUnicode = 1;
}
}
# lmhash PASSWORD
# Generates lanman password hash for a given password, returns the hash
#
# Extracted and ported from SAMBA/source/libsmb/smbencrypt.c:nt_lm_owf_gen
sub lmhash($;$) {
my ( $pass, $pwenc ) = @_;
my ( @p16 );
$pass = "" unless defined($pass);
$pass = uc($pass);
if (!$HaveUnicode) {
if (defined($pwenc)) {
croak "Encode module not found: no encoding support";
}
}
$pass = substr($pass,0,14);
@p16 = E_P16($pass);
return join("", map {sprintf("%02X",$_);} @p16);
}
# nthash PASSWORD
# Generates nt md4 password hash for a given password, returns the hash
#
# Extracted and ported from SAMBA/source/libsmb/smbencrypt.c:nt_lm_owf_gen
sub nthash($) {
my ( $pass ) = @_;
my ( $hex );
my ( $digest );
$pass = substr(defined($pass)?$pass:"",0,128);
if (!$HaveUnicode) {
# No unicode support: do a really broken to ucs2 convert
$pass =~ s/(.)/$1\000/sg;
}
else {
$pass = encode('ucs2', $pass);
( run in 0.719 second using v1.01-cache-2.11-cpan-65fba6d93b7 )