Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from ldap3 import Server, Connection, SIMPLE, SYNC, ASYNC, SUBTREE, ALL, NTLM
- import re
- import datetime
- AD_SERVER = 'srv-dc1.domain.local' # DNS имя сервера Active Directory
- AD_USER = 'domain\\adsync' # Пользователь AD, два \\ обязательно
- AD_PASSWORD = 'Pusswurd' # Пароль
- #AD_SEARCH_TREE = 'DC=domain,DC=local' # Начальное дерево поиска
- AD_SEARCH_TREE = 'OU=Users,DC=domain,DC=local' # Начальное дерево поиска
- server = Server(AD_SERVER) # Строка сервера
- conn = Connection(server, user=AD_USER, password=AD_PASSWORD, authentication=NTLM) # Строка соединения
- if not conn.bind():
- print('ERROR IN BIND', conn.result) # Статус соединения ошибка
- else:
- print('Соединение с DC... - OK') # Статус соединения ОК
- print('') # разрыв строк
- print('') # разрыв строк
- uAC_66048 = 66048 # Атрибут userAccountControl - Учетка Включена, срок действия пароля не ограничен
- uAC_66050 = 66050 # Атрибут userAccountControl - Учетка Отключена, срок действия пароля не ограничен
- uAC_512 = 512 # Атрибут userAccountControl - Учетная запись по умолчанию. Представляет собой типичного пользователя
- uAC_514 = 514 # Атрибут userAccountControl - Учетка Отключена
- #ADUser = input('Введите имя пользователя: ') # вводим нужного пользователя
- #conn.search(AD_SEARCH_TREE, "(&(objectCategory=Person)(sAMAccountName=" + ADUser + "))", SUBTREE, attributes =['cn','sAMAccountName','displayName','pwdLastSet','userAccountControl']) # ищем пользака в AD_SEARCH_TREE, читаем атрибуты
- conn.search(AD_SEARCH_TREE,'(&(objectCategory=Person)(sAMAccountName=*))', SUBTREE, attributes =['cn','sAMAccountName','displayName','pwdLastSet','userAccountControl']) # Ищем всех пользователей в AD_SEARCH_TREE, читаем атрибуты
- for entry in conn.entries:
- if entry.userAccountControl == uAC_66048:
- print('Пользователь:',entry.cn,'| Cрок действия пароля не ограничен')
- print('') # разрыв строк
- elif entry.userAccountControl == uAC_66050:
- print('Пользователь:',entry.cn,'| Учетная запись отключена, срок действия пароля неограничен')
- print('') # разрыв строк
- elif entry.userAccountControl == uAC_514:
- print('Пользователь:',entry.cn,'| Учетная запись отключена')
- print('') # разрыв строк
- else:
- pwdLastSet = re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}',str(entry.pwdLastSet)) # вытаскиваем дату установки пароля
- # год мес день час мин сек
- print('Пользователь:',entry.cn)
- print('Пароль был установлен:',str(pwdLastSet)[2:21]) # отладочное
- date_1 = datetime.datetime.strptime(str(pwdLastSet)[2:21], "%Y-%m-%d %H:%M:%S") # получаем "дату" из pwdLastSet
- end_date = date_1 + datetime.timedelta(days=42) # вычисляем дату окончания действия пароля
- print('Действие пароля закончится:',end_date) # выводим на экран
- print('') # разрыв строк
- i = 0 # подсчитать их количество
- for entry in conn.entries:
- i = i + 1
- print('Всего пользователей:', int(i))
- ''' ВЫЧИСЛЕНИЕ РАЗНИЦЫ ДАТ МЕЖДУ ДАТАМИ ИЗМЕНЕНИЯ ПАРОЛЕЙ
- now_time = datetime.datetime.now()
- print(now_time)
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement