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].
Платформы и совместимость
pcap-библиотеки для Windows
Хотя изначально libpcap была разработана для Unix-подобных ОС, для Windows создана успешная адаптация под названием WinPcap. С 2013 года проект более не поддерживается[4], а для новых версий Windows появился ряд форков-конкурентов с более широким функционалом.
WinPcap
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
Npcap — библиотека для захвата пакетов под Windows от проекта Nmap[8]. Npcap основан на WinPcap, но реализован с использованием улучшенной сетевой архитектуры NDIS 6, что снижает нагрузку по сравнению с прототипом NDIS 5 (WinPcap)[9]. В обновлениях Npcap версия встроенной libpcap регулярно синхронизируется с последней доступной версией, позволяя разработчикам использовать современные API-функции[10]. Большинство программ, использующих WinPcap, могут быть легко переведены на использование Npcap[11].
Npcap реализует ряд возможностей, отсутствующих в WinPcap:
Win10Pcap
Отдельная реализация Win10Pcap также построена на драйверной модели NDIS 6 и поддерживает работу в Windows 10 без известных сбоев[15], однако с 2016 года проект не развивается[16].
Технические особенности
Программы, использующие или использовавшие libpcap
- 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).
Обёртки для libpcap
- 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
Примечания
- ↑ tcpdump and libpcap license (англ.). tcpdump.org. tcpdump.org. Дата обращения: 2 мая 2020. Архивировано 15 апреля 2012 года.
- ↑ Steve McCanne. libpcap: An Architecture and Optimization Methodology for Packet Capture (англ.). Дата обращения: 27 декабря 2013. Архивировано 5 апреля 2023 года.
- ↑ TCPDUMP/LIBPCAP public repository (англ.). Дата обращения: 27 декабря 2013. Архивировано 10 октября 2019 года.
- ↑ WinPcap News (англ.). Дата обращения: 6 ноября 2017. Архивировано 1 августа 2023 года.
- ↑ WinPcap internals (англ.). Дата обращения: 27 декабря 2013. Архивировано 29 ноября 2016 года.
- ↑ Riverbed Expands Further Into The Application-Aware Network Performance Management Market with the Acquisition of CACE Technologies (англ.), Riverbed Technology (21 October 2010). Архивировано 8 марта 2013 года. Дата обращения: 21 октября 2010.
- ↑ WinPcap · News (англ.). WinPcap (8 марта 2013). Дата обращения: 12 октября 2023. Архивировано 1 августа 2023 года.
- ↑ Npcap (англ.). Дата обращения: 12 октября 2023. Архивировано 3 октября 2023 года.
- ↑ Filter drivers (англ.). Дата обращения: 12 октября 2023. Архивировано 27 июня 2022 года.
- ↑ Release Npcap 1.20 (англ.). Дата обращения: 12 октября 2023. Архивировано 6 апреля 2023 года.
- ↑ Updating WinPcap software to Npcap (англ.). Developing software with Npcap. Дата обращения: 25 февраля 2023. Архивировано 5 августа 2023 года.
- ↑ Graphical installer options (англ.). Npcap Users' Guide. Дата обращения: 25 февраля 2023. Архивировано 5 апреля 2023 года.
- ↑ For software that uses Npcap loopback feature (англ.). Npcap User's Guide. Дата обращения: 25 февраля 2023. Архивировано 5 августа 2023 года.
- ↑ For software that uses Npcap raw 802.11 feature (англ.). Npcap User's Guide. Дата обращения: 25 февраля 2023. Архивировано 5 августа 2023 года.
- ↑ Win10Pcap: WinPcap for Windows 10 (англ.). Дата обращения: 12 октября 2023. Архивировано 28 июня 2018 года.
- ↑ Win10Pcap: WinPcap for Windows 10 (NDIS 6.x driver model): SoftEtherVPN/Win10Pcap (англ.). SoftEther VPN Project (31 декабря 2019). Дата обращения: 9 января 2020. Архивировано 6 апреля 2023 года.
- ↑ Bridget Bevens. Drill 1.11 Released (англ.) (31 июля 2017). Дата обращения: 12 октября 2023. Архивировано 5 апреля 2023 года.
- ↑ apache/drill/Packet.java. GitHub. Архивировано 13 января 2024 года.
- ↑ What Can Read or Save a PCAP? (англ.). What is a PCAP file?. Endace. Дата обращения: 12 октября 2023. Архивировано 6 апреля 2023 года.
Ссылки
- https://tcpdump.org — libpcap, tcpdump
- https://npcap.com — Npcap
- https://www.winpcap.org/ — WinPcap, WinDump
- Перечень публично доступных pcap-файлов