|

Kylix. Против лома нет приема
Xakep, номер #039, стр. 039-073-2
Следующим этапом я загружаю справочники имен и паролей. Справочники нужно подготовить заранее в виде простых текстовых файлов, где каждая строка представляет собой отдельный вариант пароля или имени пользователя. На рисунке 4 ты можешь видеть пример такого файла, в котором записаны четыре варианта имен пользователя. Если ты хочешь подобрать пароль к известному тебе ящику, то запиши в этот файл одну строку, содержащую имя пользователя для ящика. В основном это все, что находится до знака @.
Файл справочника паролей желательно подготовить как можно более разумней. Я не буду здесь останавливаться на этом, потому что правильный набор вариантов паролей тема отдельного разговора.
Далее я передаю компоненту IdPOP адрес почтового сервера и порт, введенные тобой в прогу. Теперь наш компонент готов к подключению и можно начинать перебор.
Брутфорс
Для перебора я запускаю одновременно два цикла по содержимому справочника имен и по справочнику паролей:
for i:=0 to LoginStrings.Count-1 do
for j:=0 to PassStrings.Count-1 do
begin
end;
Это значит, что программа возьмет первое имя из справочника и будет выполнять последующий код между begin и end со всеми вариантами паролей из справочника паролей. Потом будет взято следующее имя, и с ним повторится та же процедура со всеми вариантами паролей.
Между следующими begin и end я произвожу попытки соединения. Но сначала я передаю текущее имя и пароль компоненту IdPOP. Потом произвожу попытку соединения и, если она удачна, вывожу об этом сообщение.
Хочу обратить твое внимание, что я заключил вызов коннекта между словами try ...except ...end. Это очень интересная конструкция. Весь код, написанный между словами try и except, является как бы защищенным от непредвиденных ситуаций.
try
IdPOP.Connect;
except
end;
Если при выполнении кода между try и except (в данном случае попытки соединения) произойдет ошибка, то программа не вылетит и не высветит никаких сообщений, а выполнит код, который написан между except и end. Что? У меня ничего не написано? Значит, ничего не выполнит, а спокойно продолжит работу дальше :).
Вот такая вещь называется исключительной ситуацией. С помощью нее твои проги становятся более защищенными от сбоев, и вероятность появления синего экрана снижается. Вот если бы программеры MS научились пользоваться исключительными ситуациями.... Ну ладно, давай лучше вернемся к нашему коду, а про исключительные ситуации подробней почитаешь на моем сайте.
Дальше я проверяю, существует ли коннект, если да, то показываю найденный пароль в отдельном окне и отключаюсь от сервера.
Disconnect
Я протестировал брут под несколькими ОС, и везде он показал себя очень даже хорошо. Единственное замечание - запускай его отдельно от Delphi. Для этого создай запускной файл с помощью нажатия Ctrl+F9, а потом стартуй получившийся ехе-шник. Если ты запустишь из Delphi, то будешь ловить все ошибки, несмотря на то, что мы используем исключительные ситуации.
Назад на стр. 039-073-1 Содержание Вперед на стр. 039-073-3
|