netcat
netcat (англ. net мережа + cat) — утиліта Unix, що дозволяє встановити з'єднання TCP та UDP, отримувати та передавати звідти дані. Незважаючи на простоту та користь, ця утиліта не включена до жодного стандарту.
Тип | мережева утиліта (TCP, UDP) |
---|---|
Розробник | Hobbit |
Стабільний випуск | 0.7.1 (11 січня 2004) |
Платформа | Microsoft Windows |
Операційна система | UNIX |
Мова програмування | C |
Ліцензія | GPL |
Вебсайт | netcat.sourceforge.net |
Використання
Зазвичай netcat викликається так:
nc host port
Це призводить до створення TCP-з'єднання зі вказаними реквізитами та переключення стандартного вводу на мережевий вивід і навпаки. Функціональність програми нагадує команду cat, що й зумовило вибір назви. При неможливості з'єднання програма виводить помилку на stderr.
Утиліта розпізнає такі параметри:
-h | Довідка; нічого не робиться |
-v | Детальний вивід даних (англ. verbose) |
-o файл_виходу | Записує дамп даних у файл |
-i число | Затримка між даними, що надсилаються (у секундах) |
-t | Сумісність із Telnet |
-z | Не надсилати дані (сканування портів) |
-u | Підключатись за допомогою UDP (замість TCP) |
-l | Пасивний режим (прослуховування порту) |
-p число | Локальний номер порту (для -l) |
-s хост | Використовувати задану локальну («свою») IP-адресу |
-n | Вимкнути DNS та пошук номерів портів у /etc/services |
-w число | Задати тайм-аут (у секундах) |
-q число | Задати час очікування після EOF на вході (у секундах) |
-e виконуваний_файл | ! Запустити вказану програму для обміну даними з мережею (замість стандартних потоків) |
-с команда | ! Теж саме, у вигляді команди для /bin/sh |
! — потрібна спеціальна збірка (оскільки створює мережеву уразливість), у бінарних файлах, що зазвичай постачаються, відсутня.
Застосування
- Тестування і ручна робота з мережевими протоколами;
- Перевірка доступності портів;
- Мережевий інтерфейс для оболонки UNIX (втім, деякі версії bash можуть підключатись за допомогою TCP та UDP самостійно);
- (З параметром -l) створення простих серверів, зазвичай тестових;
- (Сумісно з inetd) перенаправлення портів.
Приклади
Відображення тестової HTML-сторінки клієнту зі звичайним браузером однією командою (порт 8080):
(echo -e "HTTP/1.1 200 OK\nContent-Type: text/html\n\n Hello World";) | nc -vv -l -p 8080
Передавання файлу клієнтові зі звичайним браузером (порт 8080):
(echo -e "HTTP/1.1 200\nContent-Disposition: attachment; filename=ім'я, що побачить клієнт\nContent-Type: application/octet-stream\nConnection: close\n"; cat ім'я файлу на диску ) | nc -vv -l -p 8080
Інші імена
nc, netcat, ncat, pnetcat.