Вопрос или проблема
Привет всем, у меня такая же проблема, как здесь: вставьте описание ссылки здесь, но мне нужно это для ldapsearch, а не в Powershell.
моя команда:
ldapsearch -LLL -H ldap://<ХОСТ>:<ПОСТ> -D 'CN=<CN>' -w <ПАРОЛЬ> '(samaccountname=<ИМЯ>)' pwdlastset
вывод:
dn: <НЕКОЕ_DN>
pwdLastSet: 131267839972407395
Вы получаете атрибут filetime в ответ на запрос. Он определяется как 100-наносекунд с 1 января 1601 года
.
Вы можете преобразовать это с помощью любого современного языка программирования.
Например, в bash
date -d "1601/1/1+$(expr $filetime / 10000000 )Seconds"
или на Python
datetime(1601,1,1) + timedelta(microseconds=filetime/10)
Ответ или решение
Вопрос: Как сделать запрос к pwdLastSet с помощью ldapsearch?
LDAP (Directory Access Protocol) является стандартом для доступа к информации в каталогах, таких как Active Directory. Одной из распространенных задач, с которой сталкиваются администраторы, является получение информации о последнем изменении пароля пользователей, что можно сделать через атрибут pwdLastSet
. В данном случае я отвечу на ваш вопрос о том, как использовать ldapsearch
для этого и корректно интерпретировать полученные данные.
1. Синтаксис команды ldapsearch
Ваш запрос выглядит следующим образом:
ldapsearch -LLL -H ldap://<HOST>:<PORT> -D 'CN=<CN>' -w <PASSWD> '(samaccountname=<NAME>)' pwdlastset
-LLL
— позволяет использовать более удобный и читаемый формат вывода.-H
— указывает адрес LDAP-сервера.-D
— задает Distinguished Name (DN) учетной записи для аутентификации.-w
— это пароль для учетной записи.- Поиск
(samaccountname=<NAME>)
находит пользователя по имени.
2. Получение результата
После выполнения команды вы получаете вывод, подобный этому:
dn: <SOME_DN>
pwdLastSet: 131267839972407395
Атрибут pwdLastSet
возвращает значение в формате FILETIME, которое представляет собой количество 100-наносекунд, прошедших с 1 января 1601 года.
3. Конвертация FILETIME
Чтобы конвертировать FILETIME в более читаемый формат даты и времени, вы можете использовать несколько подходов. Ниже приведены два примера — на Bash и Python.
Пример на Bash
Команда следующего типа может быть использована для преобразования файла времени в человеческий формат:
date -d "1601/1/1+$(expr $filetime / 10000000) Seconds"
Здесь "$filetime"
— это действительное значение pwdLastSet
, которое вы получили из LDAP.
Пример на Python
Для выполнения той же операции в Python можно использовать следующий код:
from datetime import datetime, timedelta
filetime = 131267839972407395
epoch_start = datetime(1601, 1, 1) # Начало эпохи FILETIME
converted_time = epoch_start + timedelta(microseconds=filetime / 10)
print(converted_time)
Этот код корректно конвертирует значение pwdLastSet
в стандартный формат даты и времени.
4. Заключение
Используя команду ldapsearch
для запроса атрибута pwdLastSet
, вы можете эффективно получать информацию о времени последнего изменения пароля пользователя. Однако важно помнить, что для интерпретации значения атрибута нужно выполнить преобразование из FILETIME в более привычный формат.
Если у вас возникнут дополнительные вопросы или вам потребуется помощь в реализации, не стесняйтесь обращаться за поддержкой.