Commit c0787b69 authored by Devin J. Pohly's avatar Devin J. Pohly Committed by Quanah Gibson-Mount
Browse files

ITS#6826 conversion scripts

These were provided as part of the original ITS but not previously committed.
Perl scripts to convert between Apache and OpenLDAP hash formats.
parent 1b06cd93
#!/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";
}
\ No newline at end of file
#!/usr/bin/perl -w
# OpenLDAP {APR1} to Apache $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";
next;
}
chomp $hash;
$hash = decode_base64(substr($hash, 6));
($hash, $salt) = (substr($hash, 0, 16), substr($hash, 16));
$hash = $hash;
$hash =~ s/(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)/$1$7$13$2$8$14$3$9$15$4$10$16$5$11$6\0\0$12/s;
$hash = encode_base64($hash);
chomp $hash;
$hash =~ s/(.)(.)(.)(.)/$4$3$2$1/gs;
unless ($hash =~ /AA$/) {
#print "Problem with hash\n";
next;
}
$hash =~ s/AA$//;
$hash =~ tr|A-Za-z0-9+/|./0-9A-Za-z|;
print "$user:\$apr1\$$salt\$$hash\n"
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment