Основы Python для хакеров: программирование с нуля для начинающих

 

Почему Python важен для кибербезопасности?

Python стал стандартом в индустрии информационной безопасности благодаря своей простоте и мощным библиотекам. От автоматизации рутинных задач до создания сложных инструментов для тестирования на проникновение — Python незаменим для современного специалиста.

$ sudo apt install python3 python3-pip
# Устанавливаем Python и менеджер пакетов в Linux

$ python3 —version
# Проверяем установленную версию
Python 3.9.2

Важное предупреждение: Все примеры в этой статье предназначены исключительно для образовательных целей и тестирования собственных систем. Использование этих знаний для несанкционированного доступа к чужим системам является незаконным.

Переменные и типы данных

Переменные позволяют хранить и обрабатывать данные. В кибербезопасности мы часто работаем с IP-адресами, хешами, логинами и паролями.

# Пример 1: Базовые переменные
target_ip = «192.168.1.1»
scan_port = 80
service_version = «Apache 2.4.41»

print(«Цель:», target_ip)
print(«Порт:», scan_port)
print(«Сервис:», service_version)

# Пример 2: Получение данных от пользователя
target_url = input(«Введите URL для сканирования: «)
timeout = int(input(«Таймаут соединения (секунды): «))

# Форматированный вывод
scan_report = f»Начинаем сканирование {target_url} с таймаутом {timeout}с»
print(scan_report)

Подсказка: Используйте f-строки (форматированные строки) для удобного вывода переменных. Синтаксис f"текст {переменная}" доступен в Python 3.6+.

Условные операторы

Логика принятия решений — основа любого инструмента безопасности. Проверяем условия и реагируем соответствующим образом.

# Пример 1: Проверка доступности порта
port_status = input(«Статус порта 80 (open/closed/filtered): «).lower()

if port_status == «open»:
    print(«[+] Порт 80 открыт. Проверяем веб-сервер…»)
    # Здесь будет код проверки веб-сервера
elif port_status == «filtered»:
    print(«[!] Порт фильтруется фаерволом»)
else:
    print(«[-] Порт закрыт»)

# Пример 2: Проверка сложных условий
vulnerability_score = float(input(«CVSS Score уязвимости (0-10): «))
has_exploit = input(«Есть публичный эксплойт? (yes/no): «).lower() == «yes»

if vulnerability_score >= 7.0 and has_exploit:
    print(«[CRITICAL] Высокоприоритетная уязвимость с эксплойтом!»)
elif vulnerability_score >= 4.0:
    print(«[MEDIUM] Уязвимость среднего приоритета»)
else:
    print(«[LOW] Низкий приоритет»)

Коллекции данных: списки и словари

Для работы с наборами данных (IP-адреса, порты, уязвимости) используем списки и словари.

# Пример 1: Список портов для сканирования
common_ports = [21, 22, 23, 25, 53, 80, 443, 8080, 8443]
print(f»Сканируем {len(common_ports)} общих портов»)
print(«Первый порт:», common_ports[0])
print(«Последний порт:», common_ports[-1])

# Добавляем дополнительные порты
common_ports.extend([3306, 5432, 27017])
print(f»Теперь {len(common_ports)} портов»)

# Пример 2: Словарь для хранения информации об уязвимостях
vulnerability_db = {
    «CVE-2021-44228»: {
        «name»: «Log4Shell»,
        «cvss_score»: 10.0,
        «affected_versions»: [«2.0-beta9», «2.14.1»]
    },
    «CVE-2017-0144»: {
        «name»: «EternalBlue»,
        «cvss_score»: 8.5,
        «affected_versions»: [«Windows 7», «Windows 8.1»]
    }
}

# Доступ к данным в словаре
cve_id = «CVE-2021-44228»
print(f»{cve_id}: {vulnerability_db[cve_id][‘name’]}»)
print(f»CVSS: {vulnerability_db[cve_id][‘cvss_score’]}»)

Автоматизация с помощью циклов

Циклы позволяют автоматизировать массовые операции: сканирование портов, перебор директорий, анализ логов.

# Пример 1: Сканирование диапазона IP-адресов
network_base = «192.168.1.»
active_hosts = []

print(«[*] Начинаем сканирование сети…»)
for host in range(1, 11): # Сканируем .1 — .10
    target_ip = network_base + str(host)

    # Имитация проверки доступности
    import random
    is_active = random.choice([True, False])

    if is_active:
        active_hosts.append(target_ip)
        print(f»[+] {target_ip} — активен»)
    else:
        print(f»[-] {target_ip} — не отвечает»)

print(f»\n[+] Найдено активных хостов: {len(active_hosts)}»)

# Пример 2: Анализ списка паролей
weak_passwords = [«123456», «password», «admin», «qwerty», «welcome»]
user_password = input(«Введите пароль для проверки: «)

is_weak = False
for weak_pass in weak_passwords:
    if user_password == weak_pass:
        is_weak = True
        break # Прерываем цикл при нахождении совпадения

if is_weak:
    print(«[!] Пароль находится в списке слабых паролей!»)
else:
    print(«[✓] Пароль не найден в списке слабых»)

Практическая задача: анализатор логов

Создадим простой анализатор логов, который ищет подозрительную активность.

# Анализатор логов веб-сервера
import re

def analyze_log_file(log_file):
    «»»Анализирует файл логов на наличие подозрительных запросов»»»

    # Шаблоны для поиска подозрительной активности
    suspicious_patterns = [
        r»\.\./», # Directory traversal
        r»(union|select).*from», # SQL injection
        r»<script>», # XSS attempts
        r»\.(php|asp|jsp|py)\?» # Параметризованные запросы
    ]

    suspicious_entries = []

    try:
        with open(log_file, ‘r’) as file:
            for line_num, line in enumerate(file, 1):
                for pattern in suspicious_patterns:
                    if re.search(pattern, line, re.IGNORECASE):
                        suspicious_entries.append({
                            «line»: line_num,
                            «pattern»: pattern,
                            «content»: line.strip()
                        })
                        break # Нашли одно совпадение — переходим к следующей строке

    except FileNotFoundError:
        return f»Файл {log_file} не найден»

    return suspicious_entries

# Пример использования
if __name__ == «__main__»:
    log_file = «access.log»
    results = analyze_log_file(log_file)

    if isinstance(results, list):
        if results:
            print(f»[!] Найдено {len(results)} подозрительных записей:»)
            for entry in results:
                print(f» Строка {entry[‘line’]}: {entry[‘content’][:50]}…»)
        else:
            print(«[✓] Подозрительная активность не обнаружена»)
    else:
        print(results)

Практический совет: Этот скрипт можно расширить для мониторинга логов в реальном времени, отправки уведомлений или интеграции с SIEM-системами.

Практические задания

Задание 1: Валидатор IP-адресов
Напишите функцию, которая проверяет корректность IPv4 адреса. Функция должна возвращать True для корректных адресов и False для некорректных.

# Пример интерфейса:
def is_valid_ip(ip_address):
    # Ваш код здесь
    pass

# Тесты:
print(is_valid_ip(«192.168.1.1»)) # Должно вернуть True
print(is_valid_ip(«256.300.1.1»)) # Должно вернуть False
print(is_valid_ip(«not.an.ip»)) # Должно вернуть False

Задание 2: Генератор безопасных паролей
Создайте программу, которая генерирует безопасные пароли заданной длины. Пароль должен содержать буквы верхнего и нижнего регистра, цифры и специальные символы.

Задание 3: Монитор сетевых соединений
Напишите скрипт, который имитирует мониторинг сетевых соединений и выводит статистику по протоколам (TCP/UDP) и состояниям соединений.

Дальнейшее развитие

Вы освоили основы Python для кибербезопасности! Для дальнейшего развития рекомендуем изучить:

  • Scapy — для работы с сетевыми пакетами
  • Requests и BeautifulSoup — для веб-сканирования
  • Paramiko — для SSH-автоматизации
  • Cryptography — для работы с шифрованием

 

Оцените статью
( Пока оценок нет )
Как и Почему
Добавить комментарий