#1 Python для пентестера. Email-парсер на Python 3. Часть 1.
Здравствуйте, дорогие друзья.
Сегодня я начну повествование создания парсера электронной почты. Атаки по электронной почте являются важнейшим компонентом социальной инженерии.
Вы можете использовать электронную почту, для дальнейшего расширения своей атаки (например, backdoor). Мы можем собрать все электронные ящики, от определенной компании, и отправить backdoor, с ожиданием того, что сотрудники откроют письма, и запустят вредоносную программу на своих машинах.
Мы собираемся создать программу, которая сможет собирать все адреса электронной почты, с определенного доменного имени. Например, мы хотим иметь возможность указать ссылку на конкретный веб-сайт, и наша программа соберет все ящики, которые касаются этого конкретного домена.
Давайте посмотрим, как можно это сделать, с помощью языка программирования Python. Это будет полезная программа, которой Вы сможете пользоваться в повседневности. Я назову файл: «email-scraper.py»:
Теперь начнем импортировать библиотеки, которые нам понадобятся. Сперва импортируем библиотеку «BeautifulSoup»:
Далее импортируем библиотеку запросов: «requests»:
Нам также нужно импортировать запросы, с исключением. Это библиотека «requests.exceptions»:
Еще нам нужно импортировать библиотеку: «urllib.parse»:
Далее, нам нужно импортировать библиотеку: «deque» из «collections»:
И, последняя библиотека, которая нам понадобится – это «re»:
Теперь, когда мы импортировали обычные библиотеки, запросим информацию у пользователей, которая нам нужна, для запуска нашей программы, такую как «url». Я укажу переменную «user_url», и далее, пропишу «input», для того, чтобы пользователь ввел адрес цели. Это выглядит как: «user_url = input(‘[+] Enter Target URL To Scan:’)»:
На всякий случай, преобразуем нашу конструкцию в строковый формат. Нужно просто добавить круглые скобки, в начале и конце строки кода, с указанием типа «str»:
Далее, нам нужно объявить переменную, которую я назову «urls», и пропишем «deque». После этого, откроем круглые скобки, а также внутри квадратные скобки, и укажем url пользователя («user_url»):
Если у Вас не установлены некоторые библиотеки, из начала кода, то рекомендую Вам их установить. Они будут подчеркнуты красной или желтой чертой (в зависимости от редактора кода).
Продолжим нашу программу, и создадим множество «scrapped_urls», которое будет искать шаблоны электронной почты на указанном сайте:
Для каждого шаблона электронного ящика, который нам удастся найти, мы собираемся сохранить его, а затем распечатать. В конце выполнения нашей программы, мы также хотим создать еще одно множество, которое будем равно e-mail-ам:
Теперь мы можем попытаться спарсить электронные ящики, с помощью инструкции «try:», и внутри этого оператора, будем использовать цикл «while»:
Нам нужно создать еще переменную «count», которая будет равна 0: «count = 0», и будет увеличиваться на 1:
Если достигается число счета, равное 100, тогда выходим из цикла. Это просто означает, что мы говорим программе, очистить только первые 100 url-адресов:
Поскольку, все адреса url находятся в «deque», нам необходимо создать переменную «url», и использовать функцию «popleft», для того, чтобы адреса появлялись слева:
Мы можем использовать этот url-адрес, и добавить его с помощью метода «add()», и затем указать «url» в скобках:
В следующей части цикла статей, мы рассмотрим, как можно преобразовать наш url-адрес, и разделить его на базовые части, а затем посмотрим, как создать шаблон, который попытается найти электронные ящики, внутри каждого из url-адресов.