Форум сайта python.su
0
На моем корпоротивном почтовом сервере много пользователей. Иногда мне надо проверить их валидность. Некоторые умельцы меняют пароли на более легкие, а это не хорошо. Я экспортирую из БД в txt учетные данные типа логин:пароль[/b. Написал скрипт проверки. Вот он:
#!/usr/bin/env python # -*- coding: utf-8 -*- import smtplib gLogin = [] gPass = [] def hello(): print 'Enter the file name with the usernames and passwords' x = raw_input('File name: ') return x def LoadList(NameFile): global gLogin global gPass f = open(NameFile, 'r') for login in f.xreadlines(): i1 = login.find('@') i2 = login.find(':') tmpline = login login = login[0:i1] passw = tmpline[i2+1:len(tmpline)-1] gLogin.append(login) gPass.append(passw) def check(lg, pas): server = smtplib.SMTP('smtp.corpmail.ru:25') server.starttls() server.set_debuglevel(1) server.login(lg, pas) try: print 'Acount', lg + '@corpmail.ru - open access!' server.quit() except: print 'Acount', lg + '@corpmail.ru - access denied...' def main(): global gLogin global gPass fname = hello() LoadList(fname) for i in xrange(len(gLogin)): check(gLogin[i], gPass[i]) return 0 if __name__ == '__main__': main()
try: print 'Acount', lg + '@corpmail.ru - open access!' server.quit() except: print 'Acount', lg + '@corpmail.ru - access denied...'
smtplib.SMTPAuthenticationError: (535, ‘5.7.8 Error: authentication failed: Invalid user or password!’)
Process finished with exit code 1

Отредактировано mark24 (Фев. 8, 2014 05:18:15)
Офлайн
20
У вас:
server.login(lg, pas)
Офлайн
0
noob_saibot
noob_saibotИ то верно, глаз замылися. Ламерская ошибка(((
У вас:
Офлайн
0
Явно что-то делаю не так. Вот что написал:
#!/usr/bin/env python # -*- coding: utf-8 -*- import smtplib import threading import Queue import time import sys gLogin = [] gPass = [] gIndex = 0 def hello(): print 'Enter the file name with the usernames and passwords' x = raw_input('File name: ') return x def LoadList(NameFile): global gLogin global gPass f = open(NameFile, 'r') for login in f.xreadlines(): i1 = login.find('@') i2 = login.find(':') tmpline = login login = login[0:i1] passw = tmpline[i2+1:len(tmpline)-1] gLogin.append(login) gPass.append(passw) if len(gLogin) != len(gPass): print (len(gLogin)), ' x ', (len(gPass)) print 'Error! Check whether the input file! The script is stopped ...' sys.exit() def SaveGood(WriteInf): f = open('good.txt', 'a') f.write(WriteInf) f.close() def check(lg, pas): server = smtplib.SMTP('smtp.corpmail.ru:25') server.starttls() #server.set_debuglevel(1) try: server.login(lg, pas) SaveGood(lg + '@corpmail.ru:' + pas + '\n') print 'Acount', lg + '@corpmail.ru - open access!' server.quit() except: print 'Acount', lg + '@corpmail.ru - access denied...' server.quit() ############################################################# def processing(thread_num, iq): global gIndex while True: n = iq.get() for i in xrange(gIndex): check(gLogin[i], gPass[i]) iq.task_done() ############################################################# def main(): global gLogin global gPass global gIndex fname = hello() LoadList(fname) gIndex = len(gLogin) ####################################################################### num_threads = 4 in_queue = Queue.Queue() for i in xrange(200, 300): in_queue.put(i) ####################################################################### t_start_calc = time.time() for i in xrange(num_threads): worker = threading.Thread(target=processing, args=(i, in_queue)) worker.setDaemon(True) worker.start() in_queue.join() #for i in xrange(len(gLogin)): # check(gLogin[i], gPass[i]) t_end = time.time() print 'Operation time - ', t_end - t_start_calc ,' mS' return 0 if __name__ == '__main__': main()
Офлайн
20
Не понял, что это:
mark24иgIndex = len(gLogin)
mark24def processing(thread_num, iq): global gIndex while True: n = iq.get() for i in xrange(gIndex): check(gLogin[i], gPass[i]) iq.task_done()


Отредактировано noob_saibot (Фев. 10, 2014 09:01:00)
Офлайн
33
1. Пароли в корпоративной системе хранятся в открытом виде - facepalm.
2. На счет ускорения посмотрите http://python.su/forum/topic/23291/
Офлайн