Улучшенный сканер портов с гибкой конфигурацией и множеством режимов сканирования.
- Стандартное сканирование - все порты из конфигурации
- Популярные порты - только наиболее важные порты (14 портов)
- Пользовательский диапазон - сканирование портов от X до Y
- Хорошо известные порты - диапазон 1-1024
- Настраиваемый таймаут соединения
- Регулируемая задержка между сканированием
- Включение/отключение детального вывода
- Множественные попытки подключения
- Настраиваемые диапазоны портов
- Время выполнения сканирования
- Количество просканированных портов
- Сохранение настроек в базу данных
- Структурированные логи
- Обработка Ctrl+C (KeyboardInterrupt) на всех этапах
- Корректное завершение сканирования
- Сохранение частичных результатов
- Информативные сообщения о прерывании
- Клонируйте репозиторий:
git clone https://github.com/Wlwool/port_scanner.git
cd port_scanner- Активируйте виртуальное окружение:
source .venv/bin/activate- Установите зависимости:
pip install -r requirements.txtpython 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 # Документация
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