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