Skip to content

Cканер портов с гибкой конфигурацией и множеством режимов сканирования

License

Notifications You must be signed in to change notification settings

Wlwool/port_scanner

Repository files navigation

🚀 Сканер портов v2.0

Улучшенный сканер портов с гибкой конфигурацией и множеством режимов сканирования.

✨ Новые возможности v2.0

🎯 Режимы сканирования

  • Стандартное сканирование - все порты из конфигурации
  • Популярные порты - только наиболее важные порты (14 портов)
  • Пользовательский диапазон - сканирование портов от X до Y
  • Хорошо известные порты - диапазон 1-1024

⚙️ Гибкая конфигурация

  • Настраиваемый таймаут соединения
  • Регулируемая задержка между сканированием
  • Включение/отключение детального вывода
  • Множественные попытки подключения
  • Настраиваемые диапазоны портов

📊 Улучшенная отчетность

  • Время выполнения сканирования
  • Количество просканированных портов
  • Сохранение настроек в базу данных
  • Структурированные логи

🛑 Безопасное прерывание

  • Обработка Ctrl+C (KeyboardInterrupt) на всех этапах
  • Корректное завершение сканирования
  • Сохранение частичных результатов
  • Информативные сообщения о прерывании

🛠️ Установка

  1. Клонируйте репозиторий:
git clone https://github.com/Wlwool/port_scanner.git
cd port_scanner
  1. Активируйте виртуальное окружение:
source .venv/bin/activate
  1. Установите зависимости:
pip install -r requirements.txt

🚀 Использование

Базовый запуск

python main.py

Прерывание сканирования

В любой момент сканирования вы можете нажать Ctrl+C для безопасного прерывания:

💡 Нажмите Ctrl+C для прерывания сканирования
--------------------------------------------------
Сканирование портов:  25%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   | 25/100 [00:12<00:37,  2.00s/it]
⏹️  Сканирование прервано пользователем (Ctrl+C)
📊 Просканировано портов: 25/100
--------------------------------------------------
Сканирование завершено за 12.50 секунд
Просканировано портов: 25/100
Найдено открытых портов: 2
⚠️  Сканирование было прервано, результат не сохранен

Пример работы

🚀 Сканер портов v2.0
==================================================
Введите имя сайта без http/https или IP-адрес: google.com

🎯 Выберите режим сканирования:
1. Стандартное сканирование (все порты)
2. Сканирование популярных портов
3. Сканирование диапазона портов
4. Сканирование хорошо известных портов (1-1024)
Введите номер (1-4): 2

⚙️  Настройки сканирования:
Таймаут в секундах (по умолчанию 1.0): 0.5
Задержка между сканированием в секундах (по умолчанию 0.1): 0.05
Показывать детали сканирования? (y/n, по умолчанию y): n

📁 Структура проекта

test_1/
├── config.py              # Конфигурация и настройки
├── main.py                # Главный файл программы
├── src/
│   └── port_scanner.py    # Основной класс сканера
├── database/
│   └── database.py        # Работа с базой данных
├── requirements.txt       # Зависимости
└── README.md             # Документация

⚙️ Конфигурация

Основные настройки (config.py)

class Config:
    # Настройки сканирования
    DEFAULT_TIMEOUT = 1.0      # таймаут в секундах
    SCAN_DELAY = 0.1          # задержка между сканированием
    MAX_RETRIES = 3           # максимальное количество попыток

    # Диапазоны портов
    PORT_RANGES = {
        "well_known": list(range(1, 1025)),      # 1-1024
        "registered": list(range(1025, 49152)),  # 1025-49151
        "dynamic": list(range(49152, 65536))     # 49152-65535
    }

Настройка через код

from src.port_scanner import PortScanner

# Сканер с пользовательскими настройками
scanner = PortScanner(
    host="example.com",
    timeout=0.5,           # быстрый таймаут
    scan_delay=0.05,       # минимальная задержка
    show_details=False,     # без детального вывода
    max_retries=2          # меньше попыток
)

# Сканирование популярных портов
report = scanner.scan_common_ports()

# Сканирование диапазона
report = scanner.scan_port_range(80, 443)

# Сканирование хорошо известных портов
report = scanner.scan_well_known_ports()

🗄️ База данных

Результаты сканирования сохраняются в SQLite базу данных с расширенной информацией:

  • Хост и порт
  • Временная метка
  • Длительность сканирования
  • Общее количество портов
  • Настройки сканирования (таймаут, задержка)

📝 Логирование

Все операции логируются в файл scan_log.txt с временными метками и уровнями логирования.

🔧 Планируется

  • Многопоточность для ускорения
  • Определение сервисов на портах
  • Экспорт в JSON/CSV/HTML
  • Аргументы командной строки
  • Цветной вывод в терминале
  • Сканирование диапазона IP адресов
  • Проверка на уязвимости

📄 Лицензия

MIT License - см. файл LICENSE


Версия: 2.0 Автор: Wlwool Дата: 2025

About

Cканер портов с гибкой конфигурацией и множеством режимов сканирования

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages