Автоматическая смена паролей пользователей Windows

16 Янв
2012

Доброе время суток, Блог!

Давным — давно, на одном из серверов обслуживаемой мной организации, появилась необходимость автоматической смены паролей терминальный пользователей. Ну я как заядлый unixойд, решил погуглить что-нибудь бесплатное на эту тему. К сожалению ничего дельного так и не нашлось, поэтому я решил написать сам. В качестве языка выбрал python — быстро и сердито.

Вот собственно сам код:

Copy Source | Copy HTML
# -*- coding: utf-8 -*-
import os
import csv
import smtplib
from random import Random
import time
rng = Random()
chars = 'QqWwEeRrTtAaSsDdFfGgZzXxCcVvBbYyUuiPpHhJjKkLNnMm'
digits = '23456789'
symbols = '!@#$%^*()'
me = 'admin@mydomain.ru'
s = smtplib.SMTP('smtp.mydomain.ru')
s.login('admin@mydomain.ru', 'mypassword')
u = csv.reader(open('users.csv', 'rU'))
n = csv.writer(open('newpasswd.csv', 'wb'))
def passwordGenerator():
p = ''
for i in range(4):
p += rng.choice(chars)
p += rng.choice(digits)
p += rng.choice(symbols)
return p
def sendPassword(you, login, password):
msg = ("From: %s\r\nSubject: %s\r\nTo: %s\r\n\r\n" % (me, 'Password', you))
msg += 'login: %s\npassword: %s\n' % (login, password)
s.sendmail(me, [you], msg)
for row in u:
login = row[ 0]
you = row[1]
c = 1
while c != 0:
password = passwordGenerator()
print '-' * 33
print 'login: %s' % login
c = os.system('net user %s %s' % (login, password))
n.writerow([login, password])
sendPassword(you, login, password)
s.quit()


Помимо настройки почтовой учетки админа в скрипте, необходимо создать файл users.csv со списком логинов и почтовых ящиков разделенных запятыми.

Пример:

boss,darthvader@gmail.com
manager1,born2rock@yandex.ru


Принцип действия возможно банален, но в тот момент я об этом не думал, нужно было быстро решить вопрос.
Скрипт перебирает список пользователей, генерирует 9-значный пароль (4 цифры, 4 буквы и символ), затем подставляет переменные в командную строку, меняет пароль с помощью net user и при успешном выполнении высылает пароль на почту. Так же все пароли записываются в файл newpasswd.csv, на случай проблем с почтой.

Запускать скрипт можно вручную или настроить в планировщике заданий.

Данный скрипт успешно работает на платформе Windows 2008 R2 на системных учетках. С Active Directory не баловался, но возможно и там заработает.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх