Python, Python для пентестера, Этичный хакинг с Python

#1 Python для пентестера. Email-парсер на Python 3. Часть 1.

Здравствуйте, дорогие друзья.

Сегодня я начну повествование создания парсера электронной почты. Атаки по электронной почте являются важнейшим компонентом социальной инженерии.

Вы можете использовать электронную почту, для дальнейшего расширения своей атаки (например, backdoor). Мы можем собрать все электронные ящики, от определенной компании, и отправить backdoor, с ожиданием того, что сотрудники откроют письма, и запустят вредоносную программу на своих машинах.

Мы собираемся создать программу, которая сможет собирать все адреса электронной почты, с определенного доменного имени. Например, мы хотим иметь возможность указать ссылку на конкретный веб-сайт, и наша программа соберет все ящики, которые касаются этого конкретного домена.

Давайте посмотрим, как можно это сделать, с помощью языка программирования Python. Это будет полезная программа, которой Вы сможете пользоваться в повседневности. Я назову файл: «email-scraper.py»:

email-scraper.py

Теперь начнем импортировать библиотеки, которые нам понадобятся. Сперва импортируем библиотеку «BeautifulSoup»:

beautifulsoup

Далее импортируем библиотеку запросов: «requests»:

Далее импортируем библиотеку запросов: «requests»

Нам также нужно импортировать запросы, с исключением. Это библиотека «requests.exceptions»:

Нам также нужно импортировать запросы, с исключением.  Это библиотека «requests.exceptions»

Еще нам нужно импортировать библиотеку: «urllib.parse»:

Еще нам нужно импортировать библиотеку: «urllib.parse»

Далее, нам нужно импортировать библиотеку: «deque» из «collections»:

Далее, нам нужно импортировать библиотеку: «deque» из «collections»

И, последняя библиотека, которая нам понадобится – это «re»:

И, последняя библиотека, которая нам понадобится – это «re»

Теперь, когда мы импортировали обычные библиотеки, запросим информацию у пользователей, которая нам нужна, для запуска нашей программы, такую как «url». Я укажу переменную «user_url», и далее, пропишу «input», для того, чтобы пользователь ввел адрес цели. Это выглядит как: «user_url = input(‘[+] Enter Target URL To Scan:’)»:

user_url = input(‘[+] Enter Target URL To Scan:’)

На всякий случай, преобразуем нашу конструкцию в строковый формат. Нужно просто добавить круглые скобки, в начале и конце строки кода, с указанием типа «str»:

str

Далее, нам нужно объявить переменную, которую я назову «urls», и пропишем «deque». После этого, откроем круглые скобки, а также внутри квадратные скобки, и укажем url пользователя («user_url»):

user_url

Если у Вас не установлены некоторые библиотеки, из начала кода, то рекомендую Вам их установить. Они будут подчеркнуты красной или желтой чертой (в зависимости от редактора кода).

Продолжим нашу программу, и создадим множество «scrapped_urls», которое будет искать шаблоны электронной почты на указанном сайте:

scrapped_urls

Для каждого шаблона электронного ящика, который нам удастся найти, мы собираемся сохранить его, а затем распечатать. В конце выполнения нашей программы, мы также хотим создать еще одно множество, которое будем равно e-mail-ам:

emails = set()

Теперь мы можем попытаться спарсить электронные ящики, с помощью инструкции «try:», и внутри этого оператора, будем использовать цикл «while»:

try: while len(urls):

Нам нужно создать еще переменную «count», которая будет равна 0: «count = 0», и будет увеличиваться на 1:

count = 0, count += 1

Если достигается число счета, равное 100, тогда выходим из цикла. Это просто означает, что мы говорим программе, очистить только первые 100  url-адресов:

if count == 100 break

Поскольку, все адреса url находятся в «deque», нам необходимо создать переменную «url», и использовать функцию «popleft», для того, чтобы адреса появлялись слева:

url = urls.popleft()

Мы можем использовать этот url-адрес, и добавить его с помощью метода «add()», и затем указать «url» в скобках:

scrapped_urls.add(url)

В следующей части цикла статей, мы рассмотрим, как можно преобразовать наш url-адрес, и разделить его на базовые части, а затем посмотрим, как создать шаблон, который попытается найти электронные ящики, внутри каждого из url-адресов.