ldapsearch: Как запросить pwdLastSet и чтобы это имело смысл?

Вопрос или проблема

Привет всем, у меня такая же проблема, как здесь: вставьте описание ссылки здесь, но мне нужно это для 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 в более привычный формат.

Если у вас возникнут дополнительные вопросы или вам потребуется помощь в реализации, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...