Шифрование паролей
Привет всем.
Как из перл сценария закриптовать пароль так как в /etc/shadow?
За последние 60 дней ни разу не выходила
Сайт листа:
http://www.linuxrsp.ru
Открыт:
25-07-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.linux.discuss-list@subscribe.ru
Адрес
модератора: comp.soft.linux.discuss-owner@subscribe.ru
Привет всем.
Как из перл сценария закриптовать пароль так как в /etc/shadow?
Alesha wrote:
= crypt($password,$salt)
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 11786; Возраст листа: 429; Участников: 1269
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/235361
-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss
http://subscribe.ru/ http://subscribe.ru/feedback
Забыл указать очень важную деталь..эти пароли потом должны попасть в файл
аутентификации для proftpd.То есть должны получаться точно такие же хеши как
в shadow.
On Понедельник 27 Сентябрь 2004 16:22, Alesha wrote:
Тогда подставьте в salt криптованный пароль из shadow.
Тогда если пароли совпадают, то вы получите в точности то же, что
и в shadow (что можно получить гораздо проще :-)
Alesha wrote:
Если пароли в MD5, можно использовать MD5 - Perl interface to the MD5
Message-Digest Algorithm
http://www.xav.com/perl/site/lib/MD5.html
Анатолий Виргуш.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 11793; Возраст листа: 429; Участников: 1269
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/235665
-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss
http://subscribe.ru/ http://subscribe.ru/feedback
В Пнд, 27.09.2004, в 15:48, Anatoly V Virgush пишет:
MD5 использовать не рекомендую.
http://www.osrc.info/news.php?extend.294
--
Всех благ!
Роман.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 11796; Возраст листа: 429; Участников: 1269
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/235681
-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss
http://subscribe.ru/ http://subscribe.ru/feedback
Я понятия не имею по какому алгоритму шифруются пароли в shadow.Именно поэтому
к вам обратился.Приведите пожалуста кусок кода который зашифрует matriza
как $1$blNmun5l$dCSC.r2Wq04yQ74ODt5iv1 .Основная задача это чтоб эти пароли
понимал proftpd....помогите плииз.
On Вторник 28 Сентябрь 2004 17:17, Alesha wrote:
[xbatob@sagittarius xbatob]$ perl -e 'print crypt ("matriza",
"\$1\$blNmun5l\$dCSC.r2Wq04yQ74ODt5iv1"), "\n"'
$1$blNmun5l$dCSC.r2Wq04yQ74ODt5iv1
Кстати, это шифрование по md5, так как salt начинается с "$1$
Спасибо..вроде разобрался.
On Mon, 27 Sep 2004 14:39:53 +0400
Alesha <leham***@m*****.ru> wrote:
|Привет всем.
|Как из перл сценария закриптовать пароль так как в /etc/shadow?
|--
|<*******>
|Kill Bill....Gates....
|Registered Linux User No363652
|Алексей lehamag@мыло.ру ICQ 232261443
Вот прога NCSA AUTH которая читает с консоли логин и пароль и выдает OK или ERR
при правильном пароле, который читает из файла. Думаю тут не сложно разобраться.
/*
* ncsa_auth.c
*
* AUTHOR: Arjan de Vet <Arjan.deV***@a*****.nl>
*
* Example authentication program for Squid, based on the original
* proxy_auth code from client_side.c, written by
* Jon Thackray <jr***@u*****.com>.
*
* Uses a NCSA httpd style password file for authentication with the
* following improvements suggested by various people:
*
* - comment lines are possible and should start with a '#';
* - empty or blank lines are possible;
* - extra fields in the password file are ignored; this makes it
* possible to use a Unix password file but I do not recommend that.
*
*/
#include "config.h"
#if HAVE_STDIO_H
#include <stdio.h>
#endif
#if HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
#if HAVE_STRING_H
#include <string.h>
#endif
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#if HAVE_CRYPT_H
#include <crypt.h>
#endif
#include "util.h"
#include "hash.h"
static hash_table *hash = NULL;
static HASHFREE my_free;
typedef struct _user_data {
/* first two items must be same as hash_link */
char *user;
struct _user_data *next;
char *passwd;
} user_data;
static void
my_free(void *p)
{
user_data *u = p;
xfree(u->user);
xfree(u->passwd);
xfree(u);
}
static void
read_passwd_file(const char *passwdfile)
{
FILE *f;
char buf[8192];
user_data *u;
char *user;
char *passwd;
if (hash != NULL) {
hashFreeItems(hash, my_free);
}
/* initial setup */
hash = hash_create((HASHCMP *) strcmp, 7921, hash_string);
if (NULL == hash) {
fprintf(stderr, "ncsa_auth: cannot create hash table\n");
exit(1);
}
f = fopen(passwdfile, "r");
if (NULL == f) {
fprintf(stderr, "%s: %s\n", passwdfile, xstrerror());
exit(1);
}
while (fgets(buf, 8192, f) != NULL) {
if ((buf[0] == '#') || (buf[0] == ' ') || (buf[0] == '\t') ||
(buf[0] == '\n'))
continue;
user = strtok(buf, ":\n");
passwd = strtok(NULL, ":\n");
if ((strlen(user) > 0) && passwd) {
u = xmalloc(sizeof(*u));
u->user = xstrdup(user);
u->passwd = xstrdup(passwd);
hash_join(hash, (hash_link *) u);
}
}
fclose(f);
}
int
main(int argc, char **argv)
{
struct stat sb;
time_t change_time = 0;
char buf[256];
char *user, *passwd, *p;
user_data *u;
setbuf(stdout, NULL);
if (argc != 2) {
fprintf(stderr, "Usage: ncsa_auth <passwordfile>\n");
exit(1);
}
if (stat(argv[1], &sb) != 0) {
fprintf(stderr, "cannot stat %s\n", argv[1]);
exit(1);
}
while (fgets(buf, 256, stdin) != NULL) {
if ((p = strchr(buf, '\n')) != NULL)
*p = '\0'; /* strip \n */
if (stat(argv[1], &sb) == 0) {
if (sb.st_mtime != change_time) {
read_passwd_file(argv[1]);
change_time = sb.st_mtime;
}
}
if ((user = strtok(buf, " ")) == NULL) {
printf("ERR\n");
continue;
}
if ((passwd = strtok(NULL, "")) == NULL) {
printf("ERR\n");
continue;
}
rfc1738_unescape(user);
rfc1738_unescape(passwd);
u = hash_lookup(hash, user);
if (u == NULL) {
printf("ERR\n");
} else if (strcmp(u->passwd, (char *) crypt(passwd, u->passwd))) {
printf("ERR\n");
} else {
printf("OK\n");
}
}
exit(0);
}
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 11847; Возраст листа: 433; Участников: 1276
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/237689
-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss
http://subscribe.ru/ http://subscribe.ru/feedback
On Понедельник 27 Сентябрь 2004 14:39, Alesha wrote:
crypt ('password', '\$1$any-salt');
salt можно получить с помощью rand() или из /dev/urandom (не
напрямую :-)
Где-то я на это уже отвечал на прошлой неделе, только не помню
где. :-)