Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Информация о пользователях Windows  (Прочитано 19284 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sergey
Интересующийся

ru
Offline Offline

« : 07-03-2012 13:00 » 

Подскажите, существует ли WinAPI фукнкция для получения информации о всех зарегистрированных в системе Windows пользователях(аккаунтах) и группах, в которые они входят(администраторы, гости...)? Если нет, то как можно получить данную информацию? 
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 07-03-2012 14:01 » 

Через запросы ADSI можно.

В MSDN есть скриптовый пример:
Код: (Text)
Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
con.Filter = Array("user")
For Each item In con
    debug.print item.Name " &  " of " & item.Class
Next
Там же в MSDN есть примеры и на C++, только другие сценарии работы с ADSI.
« Последнее редактирование: 07-03-2012 14:02 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sergey
Интересующийся

ru
Offline Offline

« Ответ #2 : 07-03-2012 14:15 » 

Спасибо! Придётся почитать про ADSI.
А другие способы существуют?
Записан
zubr
Гость
« Ответ #3 : 07-03-2012 15:03 » 

Можно воспользоваться API-функцией: NetUserEnum
Записан
Sergey
Интересующийся

ru
Offline Offline

« Ответ #4 : 07-03-2012 15:27 » 

Это то, что надо! Спасибо большое!

Добавлено через 6 дней, 2 часа, 12 минут и 49 секунд:
Есть ещё один вопрос: как проверить пароль пользователя на его совпадение с логином, а также есть ли он вообще?
В структуре USER_INFO_1, в которую возвращает информацию функция NetUserEnum есть поле usri1_flags. Правильно ли я понимаю, если пароль не задан, то значение этого поля будет UF_PASSWD_NOTREQD ? Просто проверяю значение этого поля с возможными значениями и ни одно не подходит...
« Последнее редактирование: 13-03-2012 17:40 от Sergey » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 13-03-2012 20:25 » 

Sergey, пароль хранится в хешированном виде и потому проверить его можно только в момент задания, до хеширования. Такая проверка задается политиками домена.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 13-03-2012 20:53 » 

RXL, встречал утилиту, которая проверяет пароли... Но было это так давно, что сложно сказать, правду говорю или нет Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
zubr
Гость
« Ответ #7 : 13-03-2012 21:08 » 

В целях безопасности при вызове NetUserEnum в структуре USER_INFO_1::usri1_password возвращается NULL:
Цитата
usri1_password
Pointer to a Unicode string that specifies the password of the user indicated by the usri1_name member. The length cannot exceed PWLEN bytes. The NetUserEnum and NetUserGetInfo functions return a NULL pointer to maintain password security.
Записан
Sergey
Интересующийся

ru
Offline Offline

« Ответ #8 : 14-03-2012 08:17 » 

В целях безопасности при вызове NetUserEnum в структуре USER_INFO_1::usri1_password возвращается NULL:
Цитата
usri1_password
Pointer to a Unicode string that specifies the password of the user indicated by the usri1_name member. The length cannot exceed PWLEN bytes. The NetUserEnum and NetUserGetInfo functions return a NULL pointer to maintain password security.

Да, это я прочитал на MSDN. Но мне не нужен каждый пароль, лишь проверка: задан он или нет, а также желательна проверка на совпадение пароля с логином.
В структуре USER_INFO_1 есть переменная usri1_flags. Я так подозреваю, что если пароль не задан, то значение этой переменной будет UF_PASSWD_NOTREQD. Но на практике не проходит. Возможно, я что-то не понимаю...
Записан
Sergey
Интересующийся

ru
Offline Offline

« Ответ #9 : 14-03-2012 08:28 » 

RXL, встречал утилиту, которая проверяет пароли... Но было это так давно, что сложно сказать, правду говорю или нет Улыбаюсь
Есть, например, SAMInside - программа немного другого назначения(подбор паролей), но она сразу показывает, если пароля нет.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 14-03-2012 08:34 » 

Самый действенный способ - установить политику безопасности паролей. Установить галку у пользователей - требуется сменить пароль при следующем входе.
И... Сидеть ждать вала телефонных звонков.

Может еще есть какая-нибудь штучка в аудите? Не смотрел.
« Последнее редактирование: 14-03-2012 08:37 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sergey
Интересующийся

ru
Offline Offline

« Ответ #11 : 14-03-2012 08:38 » 

Самый действенный способ - установить политику безопасности паролей. Установить галку у пользователей - требуется сменить пароль при следующем входе.
И... Сидеть ждать вала телефонных звонков.

Может еще есть какая-нибудь штучка в аудите? Не смотрел.
Это всё понятно Улыбаюсь Но мне нужно программно проверить уже существующих пользователей.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 14-03-2012 09:00 » 

Проще всего написать утилиту подключения  к ресурсам компьютера зная имена пользователей, и провести легкую атаку по взлому пароля (по известным 11111,йцукенг, совпадения с логином, пустой)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
zubr
Гость
« Ответ #13 : 14-03-2012 10:44 » 

Согласен с Sla. А еще можно воспользоваться функцией NetUserChangePassword для проверки пароля на пустоту.
Записан
Sergey
Интересующийся

ru
Offline Offline

« Ответ #14 : 15-03-2012 06:35 » 

Проще всего написать утилиту подключения  к ресурсам компьютера зная имена пользователей, и провести легкую атаку по взлому пароля (по известным 11111,йцукенг, совпадения с логином, пустой)
Спасибо за разъяснения Улыбаюсь
Собственно говоря, теперь так и делаю. Просто сначала не совсем понимал что значит "подключение к ресурсам компьютера". С WinAPI знаком недавно да и так, постольку-поскольку: выдергиваю нужные функции, если найду их там Улыбаюсь
Ещё раз спасибо!
Записан
Sergey
Интересующийся

ru
Offline Offline

« Ответ #15 : 18-06-2012 14:40 » 

Если вдруг тема проверки логина/пароля ещё кого-нибудь интересует, то я нашел одну интересную статью, где рассматривается использование функции LogonUser, NetUserChangePassword и стандарта SSPI, их преимущества и недостатки.
Ссылка на статью: http://www.rsdn.ru/article/qna/baseserv/winauth.xml
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines