{"id":31206513,"url":"https://github.com/iwizard7/macportscanner","last_synced_at":"2025-09-20T19:57:05.870Z","repository":{"id":309687191,"uuid":"1037170547","full_name":"iwizard7/MacPortScanner","owner":"iwizard7","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-17T05:35:52.000Z","size":1279,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-17T05:46:23.050Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iwizard7.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-13T07:05:33.000Z","updated_at":"2025-09-17T05:35:55.000Z","dependencies_parsed_at":"2025-08-13T09:25:13.459Z","dependency_job_id":"84329ea6-1df2-4b4f-947d-8688a047dbad","html_url":"https://github.com/iwizard7/MacPortScanner","commit_stats":null,"previous_names":["iwizard7/macportscanner"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/iwizard7/MacPortScanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FMacPortScanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FMacPortScanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FMacPortScanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FMacPortScanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iwizard7","download_url":"https://codeload.github.com/iwizard7/MacPortScanner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FMacPortScanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276150825,"owners_count":25593841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-20T02:00:10.207Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-20T19:57:04.343Z","updated_at":"2025-09-20T19:57:05.862Z","avatar_url":"https://github.com/iwizard7.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MacPortScanner\n\n\u003cdiv align=\"center\"\u003e\n\n![MacPortScanner Logo](https://img.shields.io/badge/MacPortScanner-v1.6.3-blue?style=for-the-badge\u0026logo=apple)\n\n**🚀 Профессиональный сканер портов для macOS с оптимизацией для Apple Silicon**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![macOS](https://img.shields.io/badge/macOS-10.15+-blue.svg)](https://www.apple.com/macos/)\n[![Apple Silicon](https://img.shields.io/badge/Apple%20Silicon-Optimized-green.svg)](https://www.apple.com/mac/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)\n[![Electron](https://img.shields.io/badge/Electron-28+-purple.svg)](https://www.electronjs.org/)\n\n[Скачать](https://github.com/iwizard7/MacPortScanner/releases) • [Документация](#документация) • [Примеры](#примеры-использования) • [Поддержка](#поддержка)\n\n\u003c/div\u003e\n\n## 📦 Установка\n\n### Скачивание\n\n1. Перейдите на страницу [Releases](https://github.com/iwizard7/MacPortScanner/releases)\n2. Скачайте подходящий файл:\n   - **MacPortScanner-X.X.X-arm64.dmg** - для Apple Silicon (M1/M2/M3)\n   - **MacPortScanner-X.X.X.dmg** - для Intel Mac\n\n### Первый запуск\n\n⚠️ **Важно**: При первом запуске macOS Gatekeeper может заблокировать приложение, показав сообщение \"Приложение MacPortScanner повреждено\".\n\n**Полное решение проблемы Gatekeeper:**\n\n#### Способ 1: Через контекстное меню (Рекомендуется)\n1. **Не открывайте** приложение двойным кликом\n2. **Щелкните правой кнопкой** по `MacPortScanner.app` в Finder\n3. Выберите **\"Открыть\"** из контекстного меню\n4. В появившемся диалоге нажмите **\"Открыть\"**\n\n#### Способ 2: Через Системные настройки\n1. Откройте **Системные настройки** → **Защита и безопасность**\n2. В разделе **\"Основные\"** найдите сообщение о заблокированном приложении\n3. Нажмите **\"Все равно открыть\"**\n\n#### Способ 3: Через Терминал (для опытных пользователей)\n```bash\n# Удалите атрибуты карантина\nsudo xattr -rd com.apple.quarantine /Applications/MacPortScanner.app\n\n# Или для конкретного файла\nxattr -cr /Applications/MacPortScanner.app\n```\n\n#### Способ 4: Временное отключение Gatekeeper (НЕ РЕКОМЕНДУЕТСЯ)\n```bash\n# Отключить Gatekeeper (требует sudo)\nsudo spctl --master-disable\n\n# Включить обратно после тестирования\nsudo spctl --master-enable\n```\n\n**Примечание**: Приложение не подписано разработчиком, поэтому macOS блокирует его запуск. Это нормально для open-source проектов без платного аккаунта разработчика Apple.\n\n### Системные требования\n\n- macOS 10.15 (Catalina) или новее\n- Рекомендуется: Apple Silicon для максимальной производительности\n\n## ✨ Особенности\n\n- 🚀 **Оптимизация для Apple Silicon** - До 100 параллельных соединений на M1/M2/M3\n- 🎨 **Нативный macOS интерфейс** - Современный UI в стиле macOS с темной темой\n- ⚡ **Высокая производительность** - Асинхронное сканирование с контролем нагрузки\n- 🔧 **Гибкие настройки** - TCP/SYN/UDP сканирование, настраиваемые таймауты\n- 💾 **Автосохранение** - Сохранение пользовательских настроек\n- 📊 **Экспорт результатов** - JSON и CSV форматы\n- ⌨️ **Горячие клавиши** - Быстрый доступ к функциям\n- 🌐 **Диапазоны IP** - Сканирование одиночных IP и подсетей\n- 🔍 **Детектирование сервисов** - Автоматическое определение сервисов по баннерам\n- 🔒 **Безопасность** - Контекстная изоляция Electron\n\n## 📋 Системные требования\n\n- **macOS**: 10.15 (Catalina) или новее\n- **Архитектура**: Apple Silicon (M1/M2/M3) или Intel\n- **RAM**: Рекомендуется 8 GB\n- **Место на диске**: ~300 MB\n\n## 🚀 Быстрый старт\n\n### Готовые приложения\n\nСкачайте готовое приложение из [Releases](https://github.com/iwizard7/MacPortScanner/releases):\n\n- **Apple Silicon (M1/M2/M3)**: `MacPortScanner-1.6.3-arm64.dmg`\n- **Intel Mac**: `MacPortScanner-1.6.3.dmg`\n\n### Установка\n\n1. Скачайте DMG файл для вашей архитектуры\n2. Откройте DMG и перетащите приложение в папку Applications\n3. Запустите MacPortScanner из Launchpad\n\n### Разработка\n\n```bash\n# Клонирование репозитория\ngit clone https://github.com/iwizard7/MacPortScanner.git\ncd MacPortScanner\n\n# Установка зависимостей\nnpm install\n\n# Запуск в режиме разработки\nnpm run dev\n\n# Сборка приложения\nnpm run build:mac\n```\n\n## 🎯 Использование\n\n### Основные функции\n\n| Функция | Горячая клавиша | Описание |\n|---------|----------------|----------|\n| Быстрое сканирование | `⌘+Q` | Сканирование популярных портов |\n| Полное сканирование | `⌘+F` | Сканирование портов 1-1000 |\n| Остановка | `⌘+S` | Прерывание сканирования |\n| Экспорт | `⌘+E` | Сохранение результатов |\n\n### Методы сканирования\n\n- **TCP Connect** - Стандартное TCP соединение (рекомендуется)\n- **SYN Scan** - Быстрое SYN сканирование (требует sudo)\n- **UDP Scan** - Сканирование UDP портов\n\n### Детектирование сервисов\n\nMacPortScanner автоматически определяет тип сервиса на открытых портах с помощью анализа баннеров и протоколов:\n\n- **HTTP/HTTPS** - Анализ HTTP заголовков, HTML title и автоматическое детектирование на неизвестных портах\n- **SSH** - Парсинг SSH версии и протокола\n- **FTP** - Чтение welcome сообщения\n- **SMTP/POP3/IMAP** - Анализ приветственных сообщений\n- **Базы данных** - Детектирование MySQL, PostgreSQL, Redis, MongoDB\n- **Сетевые сервисы** - DHCP, DNS, NTP, SNMP, LDAP, SMB\n- **Прокси и VPN** - SOCKS, HTTP Proxy\n- **Чат и коммуникации** - IRC, XMPP\n- **И другие** - Поддержка более 40 популярных сервисов\n\n**Пример результатов:**\n```\nPort 22: SSH (SSH-2.0-OpenSSH_8.9p1)\nPort 80: HTTP (nginx/1.21.6)\nPort 443: HTTPS (Apache/2.4.54)\nPort 3306: MySQL (MySQL 8.0.33)\nPort 5000: HTTP (Flask/Python)\nPort 5959: VNC (alternative)\nPort 7000: HTTP (various)\n```\n\n### Настройки\n\n- **Таймаут**: 100-10000 мс (по умолчанию 3000 мс)\n- **Параллелизм**: Автоматически оптимизируется для архитектуры\n- **Порты**: Список через запятую или диапазоны (например: `80,443,8000-8080`)\n\n## 📊 Производительность\n\n### Оптимизации для Apple Silicon\n\nMacPortScanner автоматически определяет архитектуру процессора:\n\n| Архитектура | Параллельные соединения | Производительность |\n|-------------|------------------------|-------------------|\n| Apple Silicon (ARM64) | 100 | 🚀 Максимальная |\n| Intel (x64) | 50 | ⚡ Высокая |\n\n### Бенчмарки\n\n- **Локальная сеть**: ~1000 портов за 10-15 секунд\n- **Интернет**: ~100 портов за 30-60 секунд\n- **Память**: ~50-100 MB во время сканирования\n\n## 🏗️ Архитектура\n\n```\nMacPortScanner/\n├── src/\n│   ├── main.ts          # Главный процесс Electron\n│   ├── preload.ts       # IPC мост\n│   ├── App.tsx          # React приложение\n│   ├── main.tsx         # Точка входа React\n│   ├── components/ui/   # UI компоненты\n│   └── lib/            # Утилиты\n├── build/              # Сборка (игнорируется Git)\n├── package.json        # Конфигурация проекта\n└── README.md          # Документация\n```\n\n### Технологический стек\n\n- **Frontend**: React 18 + TypeScript + Tailwind CSS\n- **Backend**: Electron 28 + Node.js\n- **UI**: Radix UI + shadcn/ui компоненты\n- **Сборка**: Vite + electron-builder\n- **Сканирование**: Node.js net модуль\n\n## 🔒 Безопасность\n\n- **Контекстная изоляция** Electron для защиты от XSS\n- **IPC коммуникация** через безопасные каналы\n- **Валидация входных данных** на всех уровнях\n- **Нет прямого доступа** к Node.js API из рендера\n- **Песочница** для веб-контента\n\n## 📖 Примеры использования\n\n### Сканирование локального сервера\n\n```\nIP: 127.0.0.1\nПорты: 22,80,443,3306,5432\nМетод: TCP Connect\nТаймаут: 1000 мс\n```\n\n### Аудит домашней сети\n\n```\nIP: 192.168.1.1-254\nПорты: 22,23,80,443,8080\nМетод: TCP Connect\nТаймаут: 2000 мс\n```\n\n### Проверка веб-сервера\n\n```\nIP: example.com\nПорты: 80,443,8080,8443,3000\nМетод: TCP Connect\nТаймаут: 5000 мс\n```\n\n## 🛠️ Разработка\n\n### Структура проекта\n\n- **Electron Main Process** - Системные вызовы и сканирование\n- **React Frontend** - Пользовательский интерфейс\n- **IPC Communication** - Безопасная связь процессов\n- **Electron Store** - Сохранение настроек\n\n### Команды разработки\n\n```bash\n# Разработка\nnpm run dev              # Запуск в режиме разработки\nnpm run dev:electron     # Только Electron процесс\nnpm run dev:react        # Только React приложение\n\n# Сборка\nnpm run build           # Полная сборка\nnpm run build:electron  # Сборка Electron\nnpm run build:react     # Сборка React\n\n# Создание приложения\nnpm run build:mac       # Для текущей архитектуры\nnpm run build:mac-arm64 # Только Apple Silicon\nnpm run build:mac-universal # Универсальная сборка\n\n# Тестирование\nnpm run lint           # ESLint\nnpm run type-check     # TypeScript проверка\n./test-app.sh         # Тестирование собранного приложения\n```\n\n### 🤖 CI/CD с GitHub Actions\n\n**Автоматизированные процессы:**\n\n- 🔍 **Build Check** - проверка сборки на каждый push\n- 📦 **Auto Version** - автоматическое версионирование по коммитам  \n- 🚀 **Release** - автоматическая сборка и публикация DMG файлов\n\n```bash\n# Автоматический релиз\ngit commit -m \"✨ feat: add new scanning feature\"\ngit push origin main\n# → Автоматически создается версия и релиз\n\n# Ручной релиз  \n./.dev-scripts/version-bump.sh\ngit push origin v1.2.3\n# → Автоматически собирается и публикуется\n```\n\n**Логика версионирования:**\n- `💥 BREAKING` → Major (1.0.0 → 2.0.0)\n- `✨ feat` → Minor (1.0.0 → 1.1.0)\n- `🐛 fix` → Patch (1.0.0 → 1.0.1)\n\n### Добавление функций\n\n1. **IPC обработчик** в `src/main.ts`\n2. **Типы** в `src/preload.ts`\n3. **UI логика** в `src/App.tsx`\n4. **Компоненты** в `src/components/ui/`\n\n## 📝 Changelog\n\n### v1.4.2 (2025-09-02)\n\n- ✨ Интегрирован PortInput компонент в основное приложение\n- 🔧 Обновлены типы ScanRequest с полями portInput и portCount\n- 🎨 Добавлена валидация портов в реальном времени в UI\n- ⚡ Кнопка сканирования отключается при ошибках валидации\n- 🐛 Исправлены все ошибки TypeScript в App.tsx\n- 💾 Обновлены обработчики сохранения настроек\n- 🌐 Поддержка диапазонов портов теперь полностью интегрирована\n\n## 🤝 Вклад в проект\n\nМы приветствуем вклад в развитие MacPortScanner!\n\n1. Fork репозитория\n2. Создайте feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit изменения (`git commit -m 'Add amazing feature'`)\n4. Push в branch (`git push origin feature/amazing-feature`)\n5. Откройте Pull Request\n\n### Правила разработки\n\n- Используйте TypeScript для типобезопасности\n- Следуйте ESLint правилам\n- Добавляйте тесты для новых функций\n- Обновляйте документацию\n\n## 📄 Лицензия\n\nЭтот проект лицензирован под MIT License - см. файл [LICENSE](LICENSE) для деталей.\n\n## 🆘 Поддержка\n\n### Получить помощь\n\n- 📖 [Документация](https://github.com/iwizard7/MacPortScanner/wiki)\n- 🐛 [Сообщить об ошибке](https://github.com/iwizard7/MacPortScanner/issues)\n- 💡 [Предложить функцию](https://github.com/iwizard7/MacPortScanner/issues)\n- 💬 [Обсуждения](https://github.com/iwizard7/MacPortScanner/discussions)\n\n### FAQ\n\n**Q: Почему приложение не запускается?**\nA: Убедитесь, что у вас macOS 10.15+ и разрешите запуск в System Preferences → Security \u0026 Privacy.\n\n**Q: Можно ли сканировать IPv6?**\nA: В текущей версии поддерживается только IPv4. IPv6 планируется в будущих версиях.\n\n**Q: Безопасно ли использовать приложение?**\nA: Да, приложение использует современные практики безопасности Electron и не собирает личные данные.\n\n## 🙏 Благодарности\n\n- [Electron](https://www.electronjs.org/) - Кроссплатформенные приложения\n- [React](https://reactjs.org/) - UI библиотека\n- [Tailwind CSS](https://tailwindcss.com/) - CSS фреймворк\n- [Radix UI](https://www.radix-ui.com/) - UI компоненты\n- [Vite](https://vitejs.dev/) - Быстрая сборка\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Сделано с ❤️ для macOS сообщества**\n\n[⭐ Поставьте звезду](https://github.com/iwizard7/MacPortScanner) если проект вам понравился!\n\n\u003c/div\u003e\n\n## 📝 Последние изменения\n\n### v1.6.3 - 2025-09-17\n\n🐛 **Исправления стабильности**\n- 🔄 Убрана проблемная многопоточная реализация сканирования\n- 🧹 Возвращена простая последовательная реализация для надежности\n- 📊 Исправлена логика подсчета просканированных портов\n- 🔧 Улучшена стабильность работы с большими диапазонами\n- 🎯 Корректное отображение метрик сканирования\n\n### v1.5.1 - 2025-09-17\n\n🔍 **Расширенное детектирование сервисов**\n- 🎯 Добавлено автоматическое определение HTTP сервисов на неизвестных портах\n- 📋 Расширен словарь портов более чем на 20 новых сервисов (DHCP, NTP, SNMP, LDAP, SMB, IRC, XMPP и др.)\n- ⚡ Улучшена логика детекции для лучшего распознавания веб-сервисов на нестандартных портах\n\n### v1.5.0 - 2025-09-17\n\n✨ **Детектирование сервисов по баннерам**\n- 🔍 Автоматическое определение типа сервиса на открытых портах\n- 📊 Расширенные результаты сканирования с полем banner\n- 🎯 Поддержка HTTP/HTTPS, SSH, FTP, SMTP, POP3, IMAP, MySQL, PostgreSQL, Redis, MongoDB\n- 🔧 Модульная архитектура с выделенным PortScanner классом\n- 🧪 Комплексные unit тесты для PortScanner\n- 📖 Обновленная документация\n\n### v1.4.2 - 2025-09-02\n\n✨ **Интеграция валидации портов**\n- 🎯 Полностью интегрирован PortInput компонент с валидацией в реальном времени\n- 🔧 Обновлены типы для поддержки диапазонов портов и подсчета\n- 🎨 Улучшен пользовательский интерфейс с цветовой индикацией валидации\n- ⚡ Автоматическое отключение кнопки сканирования при ошибках\n- 🐛 Исправлены все TypeScript ошибки в основном приложении\n- 💾 Улучшена система сохранения пользовательских настроек\n\n📋 **Документация:**\n- [Полный changelog](CHANGELOG.md)\n- [Руководство по релизам](RELEASE_GUIDE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwizard7%2Fmacportscanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiwizard7%2Fmacportscanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwizard7%2Fmacportscanner/lists"}