Sergey
Интересующийся
Offline
|
|
« : 07-03-2012 13:00 » |
|
Подскажите, существует ли WinAPI фукнкция для получения информации о всех зарегистрированных в системе Windows пользователях(аккаунтах) и группах, в которые они входят(администраторы, гости...)? Если нет, то как можно получить данную информацию?
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 07-03-2012 14:01 » |
|
Через запросы ADSI можно. В MSDN есть скриптовый пример: 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
Интересующийся
Offline
|
|
« Ответ #2 : 07-03-2012 14:15 » |
|
Спасибо! Придётся почитать про ADSI. А другие способы существуют?
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #3 : 07-03-2012 15:03 » |
|
Можно воспользоваться API-функцией: NetUserEnum
|
|
|
Записан
|
|
|
|
Sergey
Интересующийся
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
Пол:
|
|
« Ответ #5 : 13-03-2012 20:25 » |
|
Sergey, пароль хранится в хешированном виде и потому проверить его можно только в момент задания, до хеширования. Такая проверка задается политиками домена.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Sla
|
|
« Ответ #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
Интересующийся
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
Интересующийся
Offline
|
|
« Ответ #9 : 14-03-2012 08:28 » |
|
RXL, встречал утилиту, которая проверяет пароли... Но было это так давно, что сложно сказать, правду говорю или нет Есть, например, SAMInside - программа немного другого назначения(подбор паролей), но она сразу показывает, если пароля нет.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #10 : 14-03-2012 08:34 » |
|
Самый действенный способ - установить политику безопасности паролей. Установить галку у пользователей - требуется сменить пароль при следующем входе. И... Сидеть ждать вала телефонных звонков.
Может еще есть какая-нибудь штучка в аудите? Не смотрел.
|
|
« Последнее редактирование: 14-03-2012 08:37 от Sla »
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Sergey
Интересующийся
Offline
|
|
« Ответ #11 : 14-03-2012 08:38 » |
|
Самый действенный способ - установить политику безопасности паролей. Установить галку у пользователей - требуется сменить пароль при следующем входе. И... Сидеть ждать вала телефонных звонков.
Может еще есть какая-нибудь штучка в аудите? Не смотрел.
Это всё понятно Но мне нужно программно проверить уже существующих пользователей.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #12 : 14-03-2012 09:00 » |
|
Проще всего написать утилиту подключения к ресурсам компьютера зная имена пользователей, и провести легкую атаку по взлому пароля (по известным 11111,йцукенг, совпадения с логином, пустой)
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
zubr
Гость
|
|
« Ответ #13 : 14-03-2012 10:44 » |
|
Согласен с Sla. А еще можно воспользоваться функцией NetUserChangePassword для проверки пароля на пустоту.
|
|
|
Записан
|
|
|
|
Sergey
Интересующийся
Offline
|
|
« Ответ #14 : 15-03-2012 06:35 » |
|
Проще всего написать утилиту подключения к ресурсам компьютера зная имена пользователей, и провести легкую атаку по взлому пароля (по известным 11111,йцукенг, совпадения с логином, пустой)
Спасибо за разъяснения Собственно говоря, теперь так и делаю. Просто сначала не совсем понимал что значит "подключение к ресурсам компьютера". С WinAPI знаком недавно да и так, постольку-поскольку: выдергиваю нужные функции, если найду их там Ещё раз спасибо!
|
|
|
Записан
|
|
|
|
Sergey
Интересующийся
Offline
|
|
« Ответ #15 : 18-06-2012 14:40 » |
|
Если вдруг тема проверки логина/пароля ещё кого-нибудь интересует, то я нашел одну интересную статью, где рассматривается использование функции LogonUser, NetUserChangePassword и стандарта SSPI, их преимущества и недостатки. Ссылка на статью: http://www.rsdn.ru/article/qna/baseserv/winauth.xml
|
|
|
Записан
|
|
|
|
|