blob: d6eaee77a65aee81ac3128371db3fde050734afe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/usr/bin/perl -w
# Apache $apr1$ to OpenLDAP {APR1} hash converter
# (C) 2011 Devin J. Pohly
# You may use this code freely. It would be nice to be credited.
use MIME::Base64;
while (<>) {
($user, $hash) = split(/:/, $_);
unless ($hash =~ /^\$apr1\$/) {
print STDERR "Not an Apache MD5 hash\n";
exit 1;
}
chomp $hash;
($_,$_,$salt,$hash) = split(/\$/, $hash);
$hash =~ tr|./0-9A-Za-z|A-Za-z0-9+/|;
$hash .= "AA";
$hash =~ s/(.)(.)(.)(.)/$4$3$2$1/gs;
$hash = decode_base64($hash);
$hash =~ s/(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)..(.)/$1$4$7$10$13$15$2$5$8$11$14$16$3$6$9$12/s;
$hash .= $salt;
$hash = encode_base64($hash);
chop $hash;
print "$user:{APR1}$hash\n";
}
|