URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6808
[ Назад ]

Исходное сообщение
"Перевод из текстового файла в LDIF, MD5 хеш"

Отправлено Heretic , 03-Окт-07 19:41 
Добрый день, алл. Написал на скорую руку перловый скрипт, который и из текстового файла переводит в файл ldif и которое в последствии должно импортироваться в LDAP, с паролями, именами итд. Но сталкнулся с проблемой в том что, MD5 выдает не тот хеш который нужен мне,  чтобы пользователь смог потом пройти аутентификацию.
Собственно сам скрипт:

#!/usr/bin/perl
use Digest::MD5 qw(md5 md5_hex md5_base64);
use Encode qw(encode_utf8);
$i=1008;
open(FILE, "TopHoldingPasswd1.csv") or die "Невозможно открыть файло!!: $!\n";
while ($line = <FILE>) {
    ($username, $password, $name, $famil, $mail) = split(" ", $line);
    $passwd = md5_hex($password);
#    print md5(encode_utf8($password)),"\n";
#    print "username: $username, password: md5{$passwd}, name: $name \n";
    open (FILE1, "> /tmp/ldap/$username.ldif") or die "Невозможно создать файло!!: $!\n";
        print FILE1 "dn: uid=$username,ou=people,dc=example,dc=com \n";
        print FILE1 "homeDirectory: /dev/null \n";
        print FILE1 "loginShell: /bin/bash \n";
        print FILE1 "objectClass: top \n";
        print FILE1 "objectClass: posixAccount \n";
        print FILE1 "objectClass: inetOrgPerson \n";
        print FILE1 "objectClass: person \n";
        print FILE1 "objectClass: organizationalPerson \n";
        print FILE1 "objectClass: shadowAccount \n";
        print FILE1 "uidNumber: $i \n";
        print FILE1 "gidnumber: 1000 \n";
        print FILE1 "uid: $username \n";
        print FILE1 "givenName: $name \n";
        print FILE1 "sn: $famil \n";
        print FILE1 "userpassword: {md5}$passwd \n";
        print FILE1 "mail: $mail \n";
        print FILE1 "cn: $name $famil \n";
    close(FILE1);
    $i++;
};
close(FILE);

Пароль хешируется в {md5}2d9c7g43g1e62f80a4bfce850cb516e9, но в LDAPе хеш находятся такого типа: {md5}Toe2xIjPTDg0l598fajd9z==
Подскажите, в чем косяк и как поправить, если не сложно =)
ЗЫ: как можно увидить перл я знаю не очень хорошо.
ЗЫЫ: Спасибо, за ответ.


Содержание

Сообщения в этом обсуждении
"Перевод из текстового файла в LDIF, MD5 хеш"
Отправлено Heretic , 04-Окт-07 00:05 
Повидимому правильный ответ таков:

#!/usr/bin/perl
use Digest::MD5 qw(md5_base64);
$i=1008;
open(FILE, "TopHoldingPasswd1.csv") or die "Невозможно открыть файло!!: $!\n";
while ($line = <FILE>) {
    ($username, $password, $name, $famil, $mail) = split(" ", $line);
    $passwd = md5_base64($password);
    open (FILE1, "> /tmp/ldap/$username.ldif") or die "Невозможно создать файло!!: $!\n";
        print FILE1 "dn: uid=$username,ou=people,dc=example,dc=com \n";
        print FILE1 "homeDirectory: /dev/null \n";
        print FILE1 "loginShell: /bin/bash \n";
        print FILE1 "objectClass: top \n";
        ...
        print FILE1 "userpassword: {md5}$passwd== \n";
        print FILE1 "mail: $mail \n";
        print FILE1 "cn: $name $famil \n";
    close(FILE1);
    $i++;
};
close(FILE);

Но еще не тестил.