Trong nội bộ, Samba lưu trữ các băm LM và NT giống như Windows và được sử dụng để xác thực NTLM.
Hàm băm NT sử dụng thuật toán MD4, được áp dụng cho mật khẩu trong mã hóa UTF-16 Little Endian. Bạn có thể sử dụng các công cụ thông thường để tính toán, ví dụ:
#!/usr/bin/env perl
use Digest::MD4 qw(md4_hex);
use Encode qw(encode);
chomp(my $pw = <STDIN>);
print md4_hex(encode("UTF-16LE", $pw)), "\n";
hoặc OpenSSL:
printf '%s' "$pw" | iconv -t utf16le | openssl md4
Băm LM có thể bị bẻ khóa trong vài giây. Không ai sử dụng nó nữa. Đừng sử dụng nó. Các phiên bản Windows hiện đại, cũng như (hy vọng) Samba, chỉ lưu trữ hàm băm LM của mật khẩu 'trống', bất kể đầu vào.
Tuy nhiên, bao gồm cả băm như một phần của tập lệnh của bạn là một ý tưởng rất tồi, không tốt hơn nhiều so với việc giữ mật khẩu. Hàm băm MD4 không được mã hóa rất dễ bị bẻ khóa nếu người ta muốn lấy mật khẩu ban đầu và ngay cả khi không có, hàm băm này tương đương với mật khẩu - bất kỳ ai có hàm băm đều có thể thực hiện xác thực NTLM mà không cần mật khẩu. (Windows không cho phép bất kỳ ai, kể cả quản trị viên truy cập trực tiếp vào SAM, do đó, muối ban đầu được cho là không cần thiết.)
smbpasswd
? Lộn xộn với lưu trữ dữ liệu Samba nội bộ không thực sự được khuyến khích.