Макс

Родной город: Омск

Фото галерея: смотреть

Контакты: написать

О себе:

Интересы:

- программирование

- интернет

- психология

- менеджмент

- автоматизация

Погляди
Голосование

Нравиться ли вам блог

  Да
  Нет
  Я тут случайно

 

ГлавнаяКарта сайтаПечать страницы

Смена пароля пользователя (CentOS, RedHat, Perl)

Как то мне понадобилось из консоли/perl-скрипта изменить пароль пользователя в MD5 формате.

Для начало у нас должна быть библиотека для перла, ее можно установить через репозитарий

#yum install perl-Crypt-PasswdMD5

Далее для генерации я использовал консольную команду:

#perl -e 'use Crypt::PasswdMD5; printf unix_md5_crypt("password", "salt")." ";'

где password - это пароль, salt - это соль, восемь символов, желательно буквы и цифры

далее мне скрипт выдал набор:

$1$12345678$ZSWdHfiacAnYQqgmW9hsd.

данный набор надо поместить в файл /etc/shadow вместо старого шифрованного пароля, он идет после имени (разделитель ":")

Пример программы на Perl:

#!/usr/bin/perl
use strict;
use Crypt::PasswdMD5 qw(unix_md5_crypt);
my @salt = ( '.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z' );
my %encrypted;

# генерация соли
sub gensalt { 
my $count = shift;

my $salt;
for (1..$count) {
$salt .= (@salt)[rand @salt];
}

return $salt;
} # end gensalt

# генерация пароля
sub get_encryptedpw {
my $unencrypted="$_[0]";

$encrypted{des} = crypt( $unencrypted, gensalt(2) );
$encrypted{md5} = unix_md5_crypt( $unencrypted, gensalt(8) );

return %encrypted;
}

print "Enter password : ";
my $password = <STDIN>;
chomp $password;

get_encryptedpw($password);

print "Plaintext ".$password." = MD5 Hash: ".$encrypted{md5}." ";

print "Plaintext ".$password." = MD5 Hash: ".$encrypted{des}." ";