Welcome to mirror list, hosted at ThFree Co, Russian Federation.

readme.txt - github.com/Tim55667757/pwd_brut.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a3700889f1f7dabfb8ad933f251d1fb136c03239 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
Password Bruter - программа, написанная на Python 3.2., для многопоточного подбора учетных данных вида {логин/пароль}
к страничкам с form-based авторизацией.

Предварительные настройки:
1. Установленный Python 3.2.
2. Установленный и настроенный пакет Selenium WebDriver для Python 3.2.:
   http://forworktests.blogspot.com/p/selenium-web-driver.html

Особенности:
1. Универсальность применения. Bruter подходит для большинства html-форм авторизации, так как поля логина, пароля,
   кнопки подтверждения входа, условия успешной и неуспешной авторизаций задаются в файле конфигурации через
   xPath-адресацию: http://forworktests.blogspot.com/p/xpath-web.html
2. Многопоточный перебор. Учетные данные перебираются в отдельных потоках.
3. Имитация действий пользователя. Атака фактически осуществляется в браузерах, запущенных Selenium WebDriver.
4. Предварительное разбиение множества паролей по отдельным потокам.
5. Возможность случайного перебора вместо последовательного, для повышения вероятности нахождения
   валидных учетных данных.
6. Генератор для создания файла со списком псевдослучайных строк, состоящих из выбранных символов различных алфавитов.
7. Настройка большинства параметров запуска программы как через командную строку, так и через файл конфигурации.
8. Предварительная оценка времени работы, ведение подробного лога, формирование отчета о фактическом времени работы,
   результатах перебора в отдельных потоках, и прочее.

Password Bruter можно запустить без параметров, в этом случае он начнет подбирать учетные данные согласно
настройкам по умолчанию, заданным в файле конфигурации config.py. Все параметры содержат комментарии.
Рекомендуется не изменять имена переменных-параметров.

Параметры для консольного запуска программы представлены ключами:
Ключ  Слово        Описание
-h    --help       Показать подсказку по опциям.
-t    --target     Целевой URL для программы, указывающий на страничку с form-based авторизацией.
                   Примеры: --target=http://mysite.com/admin/    t http://site.ru/
-b    --browser    Строка браузера (*firefox, *chrome, *ie), показывающая, в каком браузере запустить перебор.
                   По умолчанию, запускается firefox.
                   Примеры: --browser=*chrome    -b *ie
-r    --random     Если ключ равен True, тогда программа использует случайные учетные данные при переборе.
                   Примеры: --random=True    -r False
-T    --threads    Число потоков, в которых будет запущен перебор.
                   Примеры: --threads=5    -T 10
-w    --wait       Ожидание успешного завершения операций в браузере, сек.
                   Примеры: --wait=2    -w 1
-p    --period     Период, в течении которого следует запустить все потоки. Ориентировочно +5 сек. на поток.
                   Примеры: --period=10    -p 5
-L    --logins     Путь к текстовому файлу со списком логинов. По умолчанию, dict/users.txt.
                   Примеры: --logins=my_logins.txt    -L dict/123/my_logins.txt
-P    --passwords  Путь к текстовому файлу со списком паролей. По умолчанию, dict/pwd.txt.
                   Примеры: --passwords=my_pass.txt    -P dict/123/my_passwords.txt
-R    --results    Путь к текстовому файлу для вывода результатов. По умолчанию, result.txt.
                   Примеры: --results=res.log    -R results/res.log
-g    --generator  Генератор псевдослучайных строк, выходной файл: dict/rnd_<date_time>.txt.
                   На вход подаётся список чисел [1,2,3,4,5,6,7,8], в котором: 1 число - количество случайных строк,
                   2 число - длина генерируемых строк, 3 цифра - {0, 1} - использовать или нет цифры при генерации,
                   4 цифра - {0, 1} - использовать (0) или нет (1) большие символы латинского алфавита,
                   5 цифра - {0, 1} - использовать (0) или нет (1) маленькие символы латинского алфавита,
                   6 цифра - {0, 1} - использовать (0) или нет (1) большие символы русского алфавита,
                   7 цифра - {0, 1} - использовать (0) или нет (1) маленькие символы русского алфавита,
                   8 цифра - {0, 1} - использовать (0) или нет (1) специальные символы: !@#$%^&*()-_+=.,<>[]{}\|/`~"\':;
                   Пример: '--generator=[100,8,1,1,1,0,0,0]' - сгенерировать 100 случайных строк, длины 8, состоящих
                   только из цифр, больших и маленьких символов латинского алфавита.

Находясь в корне проекта для запуска программы можно использовать команду:
python pwd_brut.py [options]

[options] - необязательные параметры командной строки, так как все настройки могут быть заданы в config.py.

Примеры:
    python pwd_brut.py --target=http://mysite.com/admin/ # Запуск брутфорса на целевую страничку. Браузер Mozilla по умолчанию.
    python pwd_brut.py -L my_logins.txt -P my_passs.txt -R res.log # Запуск программы с измененными словарями и файлом для результатов.
    python pwd_brut.py -w 2 -r True -T 10 # Установить время ожидания операций в 2 сек., выбирать случайные учетные данные из списков, запустить 10 потоков.
    python pwd_brut.py -g [10,5,1,0,0,0,0,0] # Сгенерировать 10 случайных строк, длины 5, состоящих только из цифр. Результат будет выведен в файл: dict/rnd_<текущие_дата_время>.txt

Настройка программы через файл конфигурации config.py
Параметры для цели:
target = 'http://mysite.com/admin/' # Целевая страничка с form-based авторизацией.
xPathLogin = "//input[@name='login']" # xPath для поля логина.
xPathPassword = "//input[@name='password']" # xPath для поля пароля.
xPathAcceptButton = "//input[@type='submit']" # xPath для кнопки подтверждения входа.
xPathSuccessAuth = "//a[@id='loginLink']" # xPath для условия успешной авторизации.
xPathFailAuth = "//div[@id='error']" # xPath для условия провала авторизации.
selBrowserString = '*firefox' # Строка браузера показывает Selenium WebDriver какой браузер нужно запустить: *firefox, *chrome, *ie.
selFFProfile = 'ff_profile' # Профиль Mozilla. Этот параметр используется только ff. Это относительный путь до директории с профилем.
Параметры для брутфорсера:
usersFile = 'dict/users.txt' # Путь к файлу со списком логинов.
passwordsFile = 'dict/pwd.txt' # Путь к файлу со списком паролей.
resultFile = 'result.txt' # Путь к файлу для вывода результатов.
brutThreads = 1 # Число потоков для запуска брутфорса.
rumpUpPeriod = brutThreads * 5 # Период в секундах, показывающий когда все потоки будут запущены.
timeout = 1 # Таймаут операций в сек. Требует особого подбора. Если поставить слишком маленький, есть шанс пропустить успешную авторизацию.
randomCredentials = False # Если ключ равен True, тогда Bruter использует случайные учетные данные, а не по порядку, как указано в файлах с логинами и паролями.
Параметры генератора псевдослучайных строк:
randomGeneratorParameter = [100, 8, 1, 1, 1, 0, 0, 0] # В конфигурации можно указывать список с пробелами. В командной строке - числа могут разделяться только знаками препинания.

Структура проекта
pwd_brut             - корень проекта.
    /browser_drivers - каталог с Windows-драйверами для chrome и ie.
    /ff_profile      - каталог для индивидуального профиля мозиллы (пустой по умолчанию).
    /dict            - каталог по умолчанию для словарей со списками учетных данных.
        pwd.txt      - текстовый файл по умолчанию для списка паролей.
        users.txt    - текстовый файл по умолчанию для списка логинов.
    pwd_brut.py      - основной модуль для многопоточного запуска брутфорса.
    bruter_lib.py    - библиотека функций брутфорсера.
    config.py        - файл с переменными для конфигурации программы.
    readme.txt       - актуальная информация по проекту.
    result.txt       - текстовый файл по умолчанию для вывода результатов брутфорса.

Содержимое модуля pwd_brut.py
Main() # Инициализация параметров, создание и сопровождение потоков, открытие браузеров, запуск брутфорса в потоках.

Содержимое модуля bruter_lib.py
Основные глобальные переменные:
workDir = os.path.abspath(os.curdir) # Рабочая директория проекта, относительно которой строятся другие пути.
threads = [] # Список потоков.
browsers = [] # Список запущенных браузеров. Каждый браузер в отдельном потоке.
Основные функции:
ParseArgs() # Парсер аргументов командной строки.
EstimateTime(numLogins, numPasswords, waitInSec, rumpUp, treadsNum) # Функция расчета ожидаемого времени работы.
DurationOperation(func) # Декоратор для оценки времени работы функций.
StringOfNumToNumsList(string) # Конвертер строки чисел с разделителями в список чисел.
GetListFromfile(file) # Получение списка строк из файла.
SeparateListByPieces(fullList, piecesNum) # Возвращает список списков, полученных разбиением входного списка на указанное число "кусков".
Reporting(instance, file, creds, users, passwords, actualTime) # Репортер для брутфорсера.
OpenBrowser(instance, opTimeout, browserString, ffProfile) # Открытие и подготовка браузера к работе.
GoingToTarget(instance, opTimeout, targetURL, loginField, passwordField, acceptButton) # Переход к целевой страничке.
CloseBrowser(instance=0) # Завершение работы браузера.
Cleaner() # Функция для корректного завершения всех операций и потоков программы.
GenerateRandomString(length, useNum, useEngUp, useEngLo, useRuUp, useRuLo, useSpecial) # Генерация псевдослучайной строки указанной длины, состоящей из символов указанных алфавитов.
GenerateListOfRandomStrings(numbers, length, useNum, useEngUp, useEngLo, useRuUp, useRuLo, useSpecial) # Генерация листа с указанным числом псевдослучайных строк.
GenerateFileWithRandomStrings(par) # Генерация файла со списком псевдослучайных строк.
Bruter(instance, opTimeout, loginField, passwordField, acceptButton, successAuth, failAuth, users=None, passwords, randomization, result) # Основная функция для перебора учётных данных.

В ходе работы, программа выводит в консоль подробные логи о выполняемых действиях и расчетное время операций подбора.
Результаты программы выводятся по умолчанию в файл result.txt в следующем виде.

Пример сообщения о найденных учётных данных:
18:15:18 24.09.2012 - Thread #0, Bruter finished check for
users = ['admin', ..., 'guest'], 4 items,
passwords = ['', ..., 'qwerty'], 9 items.
Actual time worked: 0:00:28.369000
Suitable credentials: {'admin': ''}

Пример сообщения о невозможности подобрать учетные данные:
18:18:25 24.09.2012 - Thread #0, Bruter finished check for
users = ['admin', ..., 'guest'], 4 items,
passwords = ['admin', ..., 'qwerty'], 8 items.
Actual time worked: 0:01:28.557000
Bruter can't find suitable credentials.