The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как проверить пароль по /etc/shadow?, !*! chainik, 03-Апр-06, 10:13  [смотреть все]
Есть
char *login, *passwd;
, в которых забиты логин и пароль (все - нешифрованное). Как проверить правильность логина/пароля по файлу /etc/shadow?
  • Как проверить пароль по /etc/shadow?, !*! BigShadow, 13:05 , 03-Апр-06 (1)
    >Есть
    >char *login, *passwd;
    >, в которых забиты логин и пароль (все - нешифрованное). Как проверить
    >правильность логина/пароля по файлу /etc/shadow?


    зашифровать passwd
    вытащить по login из /etc/shadow зашифрованный пароль
    сравнить

    возьмите исходники /bin/login
    там все это есть

  • Как проверить пароль по /etc/shadow?, !*! jd, 15:30 , 03-Апр-06 (2)
    >Есть
    >char *login, *passwd;
    >, в которых забиты логин и пароль (все - нешифрованное). Как проверить
    >правильность логина/пароля по файлу /etc/shadow?

    man shadow(3), crypt(3)
    вместо shadow(3) возможно будет ман getspnam(3)...

    • Как проверить пароль по /etc/shadow?, !*! chainik, 17:38 , 03-Апр-06 (3)
      >>Есть
      >>char *login, *passwd;
      >>, в которых забиты логин и пароль (все - нешифрованное). Как проверить
      >>правильность логина/пароля по файлу /etc/shadow?
      >
      >man shadow(3), crypt(3)
      >вместо shadow(3) возможно будет ман getspnam(3)...

      А как компилить?

      Я пробовал
      с флагами -lshadow и -L/usr/lib/libshadow.a, но при компиляции получается:

      ...
      main.o(.text+0x59): In function `main':
      : undefined reference to `getspnam(char const*)'

      Где эта getspnam?

      • Как проверить пароль по /etc/shadow?, !*! jd, 21:30 , 03-Апр-06 (4)
        >main.o(.text+0x59): In function `main':
        >: undefined reference to `getspnam(char const*)'
        >
        >Где эта getspnam?

        У меня она в glibc (то есть никаких дополнительных ключей не требуется), а где у вас - не знаю. Что за система-то хоть?

        В мане нет упоминаний о каких-либо стандартах, так что возможно она есть не во всех системах. Но в Linux и SunOS вроде есть. В SunOS, насколько я понял, тоже в libc.

        • Как проверить пароль по /etc/shadow?, !*! chainik, 21:49 , 03-Апр-06 (5)
          >>main.o(.text+0x59): In function `main':
          >>: undefined reference to `getspnam(char const*)'
          >>
          >>Где эта getspnam?
          >
          >У меня она в glibc (то есть никаких дополнительных ключей не требуется),
          >а где у вас - не знаю. Что за система-то хоть?

          Да Slackware 10.2 обычная, ну и glibc вроде стоит последняя...

          Я ее еще поищу. Чем можно посмотреть, какие функции в библиотеке наличисвуют?

          • Как проверить пароль по /etc/shadow?, !*! chainik, 23:39 , 03-Апр-06 (6)
            Видно, что-то мне на работе мешало ;) Все работает, а из дополнительных библиотек нужна только -lcrypt. По крайней мере, /etc/shadow проверяется такой вот програмкой:

            -------------8<----------------------------------------------------------------
            // Проверялось на Slackware 10.2, где, правда, ядро и многое другое обноовлено
            #include <string.h>
            #include <stdio.h>
            #include <shadow.h>
            #include <pwd.h>
            int shadow_check(char *user, char *passwd)
            {
              struct passwd *pw = getpwnam(user);
              if (pw == NULL || pw->pw_passwd == '\0') {
                return (0);
              }
              struct spwd *spwd;
              spwd = getspnam(user);
                char *epasswd = (char*)crypt(passwd, spwd->sp_pwdp);
              if (strcmp(epasswd, spwd->sp_pwdp) != 0) {
                return (0);
              }
              return (-1);
            }

            int main(int argc, char **argv)
            {
              printf("%d\n", shadow_check("snm", "mnyammhrumm"));
              return 0;
            }
            -------------8<----------------------------------------------------------------
            Спасибо за помощь.

            • Как проверить пароль по /etc/shadow?, !*! имя, 23:47 , 03-Апр-06 (7)
              >Видно, что-то мне на работе мешало ;) Все работает, а из дополнительных
              >библиотек нужна только -lcrypt. По крайней мере, /etc/shadow проверяется такой вот
              >програмкой:
              >
              >-------------8<----------------------------------------------------------------
              >// Проверялось на Slackware 10.2, где, правда, ядро и многое другое обноовлено
              >
              >#include <string.h>
              >#include <stdio.h>
              >#include <shadow.h>
              >#include <pwd.h>
              >int shadow_check(char *user, char *passwd)
              >{
              >  struct passwd *pw = getpwnam(user);
              >  if (pw == NULL || pw->pw_passwd == '\0') {
              >    return (0);
              >  }
              >  struct spwd *spwd;
              >  spwd = getspnam(user);
              >    char *epasswd = (char*)crypt(passwd, spwd->sp_pwdp);
              >  if (strcmp(epasswd, spwd->sp_pwdp) != 0) {
              >    return (0);
              >  }
              >  return (-1);
              >}
              >
              >int main(int argc, char **argv)
              >{
              >  printf("%d\n", shadow_check("snm", "mnyammhrumm"));
              >  return 0;
              >}
              >-------------8<----------------------------------------------------------------
              >Спасибо за помощь.


              а может в даном случе стоит использовать PAM?

              • Как проверить пароль по /etc/shadow?, !*! chainik, 23:56 , 03-Апр-06 (8)
                >а может в даном случе стоит использовать PAM?

                А чем он лучше?

                Честно говоря, я не великий специалист, поэтому пока не осознаю его преимущества. В моем случае решение принимает cgi-программа (apache, ssl-соединение) на основе файла /etc/shadow и данных, которые пользователь ввел в форму.

                Я бы и pam попробовал. Если у вас есть коротенький примерчик, с удовольствием его применю...

                • Как проверить пароль по /etc/shadow?, !*! chip, 11:54 , 04-Апр-06 (9)
                  >>а может в даном случе стоит использовать PAM?
                  >
                  >А чем он лучше?

                  Pluggable Authentication Module Library

                  Своей модульностью. Например, если в дальнейшем понадобится еще авторизовывать клиентов по mysql, ldap будет достаточно добавить модуль к pam. Сам же код приложение не изменится. В остальном (для примеров) достаточно обратить внимание на любой мало-мальски популярный сетевой продукт.

                  • Как проверить пароль по /etc/shadow?, !*! chainik, 12:01 , 04-Апр-06 (10)
                    >ldap будет достаточно добавить модуль к pam. Сам же код приложение
                    >не изменится. В остальном (для примеров) достаточно обратить внимание на любой
                    >мало-мальски популярный сетевой продукт.

                    А можете посоветовать какой-нибудь продукт с минимальным, но достаточным количеством кода? - в длинных программах трудно выискивать.

                    • Как проверить пароль по /etc/shadow?, !*! имя, 15:32 , 04-Апр-06 (11)
                      >>ldap будет достаточно добавить модуль к pam. Сам же код приложение
                      >>не изменится. В остальном (для примеров) достаточно обратить внимание на любой
                      >>мало-мальски популярный сетевой продукт.
                      >
                      >А можете посоветовать какой-нибудь продукт с минимальным, но достаточным количеством кода? -
                      >в длинных программах трудно выискивать.

                      да тот же passwd,login, кажись.., вся система аутентификации unixов держится на этом
                      просто смотрите в исходниках где числится #include <pam.h>, или кеак там у вас.
                      тот фалй и розбирайте, но правильней все таки к документации

            • Как проверить пароль по /etc/shadow?, !*! missKler, 13:57 , 20-Фев-09 (12)
              Как можно проверить пароль и ник?я создала себе почтовый ящик,захожу в чаты и т д пароль и ник не верные!Что посоветуете?



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру