Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
network-monitor — Инструмент мониторинга сетевых подключений в реальном времени, созданный на Rust и GTK4, отображающий активные подключения с живой статистикой ввода/вывода в современном графическом интерфейсе. | Kitploit
Инструменты/GitHubGitHub/grigio/network-monitor
Утилиты общего назначенияСниффинг и анализ пакетовКартирование сетиСбор информацииКонфиденциальность
GitHubgrigio/network-monitor

network-monitor

Инструмент мониторинга сетевых подключений в реальном времени, созданный на Rust и GTK4, отображающий активные подключения с живой статистикой ввода/вывода в современном графическом интерфейсе.

Репозиторий
2845442 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
# Network Monitor

![Демонстрация Network Monitor в GNOME Desktop на Linux](https://assets.kitploit.com/production/public/readmes/9883/ee8f839c4064b139e19ba818961f4ce859b5461a5eccf2d321c9a184533976b8.gif)

Инструмент мониторинга сетевых соединений в реальном времени, созданный на Rust и GTK4, отображающий активные соединения с живой статистикой ввода-вывода в современном графическом интерфейсе.

[![rust](https://github.com/grigio/network-monitor/actions/workflows/rust.yml/badge.svg)](https://github.com/grigio/network-monitor/actions/workflows/rust.yml)
[![dependency status](https://deps.rs/repo/github/grigio/network-monitor/status.svg)](https://deps.rs/repo/github/grigio/network-monitor)


## Возможности

- **Мониторинг в реальном времени**: Непрерывно отслеживает активные сетевые соединения
- **Статистика ввода-вывода**: Показывает живые скорости загрузки/отдачи для каждого соединения
- **Идентификация процессов**: Отображает программу и PID, связанные с каждым соединением
- **Действия с процессами**: Правый клик по строке для копирования её значения/команды или завершения процесса,
  владеющего соединением (Terminate или Force Kill, с подтверждением)
- **Сохранение выделения**: Выделенная строка сохраняет подсветку между обновлениями и отображается в
  строке состояния
- **Современный интерфейс GTK4**: Чистый, отзывчивый графический интерфейс в стиле Libadwaita
- **Терминальный интерфейс (TUI)**: Интерактивный терминальный интерфейс с теми же возможностями мониторинга
- **Разрешение адресов**: Упрощает распространённые адреса (localhost, any, mDNS)
- **Фильтрация соединений**: Отфильтровывает соединения localhost для более чистого вывода
- **Интеграция с GNOME**: Правильная поддержка WM class для закрепления в доке и интеграции с рабочим столом
- **Двойная установка**: Поддерживает как локальную для пользователя, так и общесистемную установку
- **Надёжная обработка ошибок**: Комплексное восстановление после ошибок с понятными инструкциями по настройке
- **Оптимизация производительности**: Кэширование процессов и компоновки для улучшенной отзывчивости

## Требования

- Rust 1.70+ (редакция 2021)
- Библиотеки разработки GTK4
- Библиотеки разработки Libadwaita
- Система Linux с файловой системой `/proc`
- Linux 5.8+ (для гранулярных возможностей eBPF)
- Nightly Rust и `bpf-linker` (для компиляции eBPF)

### Установка на Ubuntu/Debian:
```bash
sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev
```

### Установка на Fedora:
```bash
sudo dnf install gtk4-devel libadwaita-devel
```

## Установка

### Способ 1: Установка из исходников с интеграцией в рабочий стол

1. Клонируйте репозиторий:
```bash
git clone <repository-url>
cd network-monitor
```

2. Установите локально (без sudo):
```bash
./scripts/install.sh
```

3. Или установите общесистемно (требуется sudo):
```bash
sudo ./scripts/install.sh
```

Скрипт установки выполнит:
- Сборку бинарников GTK4 и TUI (debug для локальной, release для общесистемной установки)
- Установку бинарников в `~/.local/bin/` (локально) или `/usr/local/bin/` (общесистемно)
- Установку desktop-файла с правильным WM class для закрепления в доке GNOME
- Установку иконок в соответствующие каталоги иконок
- Обновление кэша иконок и базы данных рабочего стола
- Обеспечение возможности закрепления приложения в доке/панели GNOME

### Способ 2: Сборка и запуск напрямую

1. Клонируйте репозиторий:
```bash
git clone <repository-url>
cd network-monitor
```

2. Соберите и запустите:
```bash
cargo run
```

Или соберите в режиме release:
```bash
cargo build --release
./target/release/network-monitor
```

### Способ 3: Сборка и запуск версии TUI

1. Клонируйте репозиторий:
```bash
git clone <repository-url>
cd network-monitor
```

2. Соберите и запустите TUI:
```bash
cargo build --bin nmt
./target/debug/nmt
```

Или соберите в режиме release:
```bash
cargo build --release --bin nmt
./target/release/nmt
```

## Удаление

### Удаление установленной версии

Удаление локальной установки:
```bash
./scripts/uninstall.sh
```

Общесистемное удаление (требуется sudo):
```bash
sudo ./scripts/uninstall.sh
```

Скрипт удаления удалит бинарник, desktop-файл и иконки из соответствующих мест и обновит все необходимые кэши.

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

### Графический интерфейс GTK4

Запустите приложение мониторинга сети:
```bash
cargo run
```

Приложение откроет окно GTK4, отображающее:
- **Process(ID)**: Имя процесса и PID с точным сопоставлением сокета процессу
- **Protocol**: Протокол TCP/UDP
- **Source**: Локальная конечная точка (в читаемом формате)
- **Destination**: Удалённая конечная точка (в читаемом формате)
- **Status**: Состояние соединения (ESTABLISHED, LISTEN и т.д.)
- **TX**: Скорость отдачи, рассчитанная по статистике ввода-вывода процесса
- **RX**: Скорость загрузки, рассчитанная по статистике ввода-вывода процесса
- **Path**: Полный путь команды и аргументы из `/proc/[pid]/cmdline`

**Действия со строками**

- **Левый клик**: выбрать строку (также отображается в нижней строке состояния)
- **Правый клик**: открыть контекстное меню с *Copy Value*, *Copy Command* и
  *Kill "process" (PID)*, которое спрашивает, выполнить Terminate (SIGTERM) или Force Kill (SIGKILL)
- **Delete**: завершить текущую выделенную строку (тот же диалог подтверждения)
- **Ctrl+C**: скопировать содержимое ячейки
- **Кнопка Refresh** в заголовке окна: обновить немедленно (список также обновляется каждые 3 с)

### Терминальный интерфейс (TUI)

![nmt tui of network-monitor](https://assets.kitploit.com/production/public/readmes/9883/47e8eb45b8c8f16826d39677c6c81c38a0fd1a48bf59d28a070994f93e437a2c.png)

Запустите терминальный интерфейс:
```bash
cargo run --bin nmt
```

TUI предоставляет те же возможности мониторинга в интерактивном терминальном интерфейсе:

**Управление с клавиатуры:**
- `q` - Выйти из приложения
- `r` - Переключить разрешение имён хостов
- `R` - Обновить соединения вручную
- `a` - Переключить автообновление (интервал 2 секунды)
- `↑/↓` - Навигация по соединениям
- `←/→` - Горизонтальная прокрутка таблицы
- `k` / **правый клик** - Открыть меню завершения для строки (Terminate / Force Kill / Cancel)
- `1-8` - Сортировка по столбцам (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)

Мышь: левый клик выбирает строку, правый клик выбирает её и открывает меню завершения.

**Возможности:**
- Мониторинг соединений в реальном времени с автообновлением
- Сортируемые столбцы с визуальными индикаторами
- Горизонтальная прокрутка для широких таблиц
- Умный подбор ширины столбцов - последний столбец занимает всю оставшуюся ширину
- Цветовая кодировка протоколов (TCP/TCP6 зелёным, UDP/UDP6 жёлтым)
- Подсветка активного соединения
- Информация о процессе и PID
- Отображение скорости ввода-вывода в реальном времени
- Тот же порядок столбцов, что и в версии GTK4, для единообразия

### Разрешение адресов

Распространённые адреса упрощаются для читаемости:
- `0.0.0.0:*` или `*:*` → `ANY`
- `127.0.0.1:*` или `[::1]:*` → `LOCALHOST`
- `224.0.0.251:*` → `MDNS`

## Как это работает

### Бэкенд eBPF (событийно-ориентированный)

Приложение использует kprobes уровня ядра (`tcp_v4_connect`, `tcp_v6_connect`, `tcp_close`,
`inet_csk_accept`) вместо опроса `/proc/net`. Это обеспечивает:

- **Событийно-ориентированность**: Доставка событий менее чем за миллисекунду, без накладных расходов на опрос (~1-3% CPU)
- **Прямой PID**: Захватывается в точке пробы через `bpf_get_current_pid_tgid()`, без сканирования inode
- **Короткоживущие соединения**: Никогда не пропускаются между интервалами опроса

### Режим eBPF

Бэкенд eBPF обеспечивает **событийно-ориентированный** мониторинг соединений с меньшими накладными
расходами и событиями в реальном времени по сравнению с подходом опроса `/proc/net` по умолчанию. Он может
захватывать короткоживущие соединения, которые опрос может пропустить.

**Предварительные требования:**
```bash
rustup toolchain install nightly
cargo install bpf-linker
```

**Сборка и запуск:**
```bash
cargo build
```

**Запуск от обычного пользователя** (требуется ядро 5.8+):

Один раз предоставьте бинарнику необходимые возможности Linux:
```bash
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor
```

Или для версии TUI:
```bash
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt
```

Для release-сборок скорректируйте путь соответствующим образом:
```bash
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor
```

Приложение завершится с сообщением о настройке, если eBPF недоступен (отсутствуют возможности или
неподдерживаемое ядро).

## Архитектура
- **GTK4**: Современный кроссплатформенный GUI-фреймворк
- **Libadwaita**: UI-компоненты в стиле GNOME
- **Tokio**: Асинхронная среда выполнения для параллельных операций
- **Aya + eBPF**: Трассировка соединений на уровне ядра с помощью kprobes для событий в реальном времени
- **Прямой PID**: Идентификация процесса через `bpf_get_current_pid_tgid()` в точке пробы
- **Системные вызовы**: Прямое чтение `/proc/[pid]/io` для статистики ввода-вывода
- **Обработка ошибок**: Комплексные типы ошибок с корректным восстановлением с помощью `thiserror`
- **Кэширование производительности**: Кэширование компоновки UI для оптимальной производительности

## Пакеты Linux

[![Packaging status](https://repology.org/badge/vertical-allrepos/network-monitor.svg)](https://repology.org/project/network-monitor/versions)


## Пожертвования

Если вы находите этот проект полезным, пожалуйста, рассмотрите возможность сделать пожертвование для поддержки его разработки.

- **Monero**: `88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSv`
- **Bitcoin**: `bc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025`

## Лицензия

Этот проект с открытым исходным кодом. Подробности см. в файле LICENSE.
Скачать инструмент