Pcap
Pcap — API для захвата сетевого трафика в сфере администрирования компьютерных сетей. Название происходит от «packet capture» («захват пакетов»), однако формально API так не называется. В Unix-подобных системах стандартная реализация доступна как библиотека libpcap; для Windows существуют адаптации: устаревшая и более не развиваемая WinPcap и поддерживаемая для Windows 7 и новее Npcap.
Любое программное обеспечение для мониторинга может использовать libpcap, WinPcap или Npcap для захвата сетевых пакетов, пересылаемых по компьютерной сети, а также для передачи пакетов (в новых версиях — на канальном уровне) и получения списка доступных сетевых интерфейсов для последующей работы.
API pcap написан на C, поэтому для других языков, таких как Java, .NET, скриптовый язык, обычно применяются обёртки; сами libpcap и WinPcap такие адаптации не предоставляют. Программы на C++ могут работать с C API напрямую либо использовать объектно-ориентированные обёртки.
Что важно знать
| libpcap | |
|---|---|
| Тип | библиотека для захвата пакетов |
| Разработчик | The Tcpdump team |
| Написана на | C |
| Операционные системы | Linux, Solaris, FreeBSD, NetBSD, OpenBSD, macOS, другие Unix-подобные системы |
| Последняя версия | 1.10.3 (12 января 2023) |
| Репозиторий | github.com/the-tcpdump-g… |
| Лицензия | BSD[1] |
| Сайт | tcpdump.org |
| WinPcap | |
|---|---|
| Тип | библиотека для захвата пакетов |
| Разработчик | Riverbed Technology |
| Написана на | Си |
| Операционная система | Windows |
| Последняя версия | 4.1.3 (8 марта 2013) |
| Состояние | поддержка прекращена |
| Лицензия | бесплатная программа |
| Сайт | winpcap.org |
| Npcap | |
|---|---|
| Тип | библиотека для захвата пакетов |
| Разработчик | проект Nmap |
| Написана на | Си |
| Операционная система | Windows |
| Последняя версия | 1.71 (19 августа 2022) |
| Лицензия | BSD |
| Сайт | npcap.com |
Возможности
libpcap, WinPcap и Npcap используются как движки захвата и фильтрации пакетов во множестве открытых и коммерческих сетевых инструментах, среди которых — протокол-анализаторы (снифферы), системы сетевого мониторинга, системы обнаружения вторжений, генераторы трафика и сетевые тестеры.
Библиотеки libpcap, WinPcap и Npcap поддерживают запись перехваченных пакетов в файл и чтение файлов с сохранёнными пакетами. Их формат позволяют разрабатывать приложения для онлайн-анализа сетевого трафика либо для чтения снятых ранее дампов с последующим анализом тем же программным кодом. Дамп-файлы, записанные в формате, поддерживаемом этими библиотеками, можно открыть в таких программах, как tcpdump, Wireshark, CA NetMaster, Microsoft Network Monitor 3.x и других.
Для файлового формата, используемого этими библиотеками, MIME-тип — application/vnd.tcpdump.pcap. Обычно файлы имеют расширение .pcap, также распространены .cap и .dmp.
История
libpcap была изначально разработана группой tcpdump в Сетевой исследовательской группе Лоуренс Беркли Лаборатории. Код низкоуровневого захвата пакетов, чтения и записи файлов был выделен из tcpdump в самостоятельную библиотеку, на которую теперь и опирается сам tcpdump[2]. В настоящее время pcap поддерживается тем же коллективом tcpdump.org, который занимается развитием tcpdump[3].
Платформы и совместимость
Хотя изначально libpcap была разработана для Unix-подобных ОС, для Windows создана успешная адаптация под названием WinPcap. С 2013 года проект более не поддерживается[4], а для новых версий Windows появился ряд форков-конкурентов с более широким функционалом.
WinPcap включает в себя:[5]
- Драйверы для семейства Windows NT (x86 и x86-64) (Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows 8, Windows 10), использующие NDIS 5.x для прямого доступа к сетевым пакетам через контроллер сетевого интерфейса;
- Библиотеки более низкого уровня для взаимодействия с этими драйверами;
- Имплементацию API libpcap с использованием соответствующей низкоуровневой библиотеки.
Оригинальный код был написан в Политехническом университете Турина. С 2008 года продукт развивала и поддерживала компания CACE Technologies, основанная частью разработчиков. 21 октября 2010 она была приобретена Riverbed Technology[6].
Поскольку WinPcap использует устаревшие API NDIS 5.x, он не работает или не рекомендуется к использованию на некоторых сборках Windows 10, где поддержка этих API прекращена в пользу NDIS 6.x. Среди ограничений — невозможность захвата 802.1Q VLAN-меток в Ethernet-кадрах.
Разработка WinPcap и WinDump прекращена. Последняя официальная версия WinPcap — 4.1.3, выпущенная 8 марта 2013 года[7].
Npcap — библиотека для захвата пакетов под Windows от проекта Nmap[8]. Npcap основан на WinPcap, но реализован с использованием улучшенной сетевой архитектуры NDIS 6, что снижает нагрузку по сравнению с прототипом NDIS 5 (WinPcap)[9]. В обновлениях Npcap версия встроенной libpcap регулярно синхронизируется с последней доступной версией, позволяя разработчикам использовать современные API-функции[10]. Большинство программ, использующих WinPcap, могут быть легко переведены на использование Npcap[11].
Npcap реализует ряд возможностей, отсутствующих в WinPcap:
- возможность разрешить захват пакетов только администраторам[12];
- поддержка захвата и инъекции loopback-пакетов между службами на одной машине с использованием Windows Filtering Platform[13];
- возможность захватывать Wi-Fi-кадры IEEE 802.11 на популярных адаптерах[14].
Отдельная реализация Win10Pcap также построена на драйверной модели NDIS 6 и поддерживает работу в Windows 10 без известных сбоев[15], однако с 2016 года проект не развивается[16].
Технические особенности
- Bit-Twist — генератор и редактор Ethernet-пакетов для BSD, Linux и Windows.
- Cain and Abel — снятая с разработки программа для восстановления паролей для Microsoft Windows.
- EtherApe — графическое средство мониторинга сетевого трафика и использования полосы пропускания.
- Firesheep — прекращённое расширение для Firefox, осуществлявшее захват пакетов и угон сессий.
- iftop — инструмент отображения использования полосы пропускания (аналог top для сетевого трафика).
- Kismet — инструмент для беспроводных сетей 802.11.
- L0phtCrack — средство проверки качества и восстановления паролей.
- McAfee ePolicy Orchestrator (компонент Rogue System Detection).
- ngrep — утилита, показывающая искомые строки в пакетах, выводит данные пакетов в человекочитаемой форме.
- Nmap — утилита для сканирования портов и идентификации стеков.
- Pirni — сетьвая утилита для взломанных iOS-устройств (не развивается).
- Scapy — инструмент манипуляции пакетами для Python, автор — Филипп Биони.
- Snort — система обнаружения вторжений.
- Suricata — платформа предотвращения атак и анализа сетевого трафика.
- Symantec Data Loss Prevention — платформа DLP, отслеживает и предотвращает утечку конфиденциальных данных.
- tcpdump — анализатор пакетов; WinDump — порт для Windows.
- Zeek — IDS/платформа мониторинга сетей.
- URL Snooper — средство поиска URL для скачивания медиафайлов.
- WhatPulse — статистическая утилита (учёт нажатий, сетевого трафика, аптайма).
- Wireshark (бывш. Ethereal) — графическая программа для перехвата и анализа сетевых пакетов.
- XLink Kai — эмуляция LAN для сетевых игр на консолях.
- Xplico — утилита сетевой судебной экспертизы (NFAT).
- C++: Libtins, Libcrafter, PcapPlusPlus
- Perl: Net::Pcap
- Python: python-libpcap, Pcapy, WinPcapy
- Ruby: PacketFu
- Rust: pcap
- Tcl: tclpcap, tcap, pktsrc
- Java: jpcap, jNetPcap, Jpcap, Pcap4j, Jxnet
- .NET: WinPcapNET, SharpPcap, Pcap.Net
- Haskell: pcap
- OCaml: mlpcap
- Chicken Scheme: pcap
- Common Lisp: PLOKAMI
- Racket: SPeaCAP
- Go: pcap (Андреас Креннмайр), pcap (Мик Гибен), pcap (gopacket).
- Erlang: epcap
- Node.js: node_pcap
Примечания
Ссылки
- https://tcpdump.org — libpcap, tcpdump
- https://npcap.com — Npcap
- https://www.winpcap.org/ — WinPcap, WinDump
- Перечень публично доступных pcap-файлов


