
ngrep — это аналог GNU grep, применённый к сетевому уровню. Это инструмент на основе PCAP, который позволяет задать расширенное регулярное или шестнадцатеричное выражение для сопоставления с данными полезной нагрузки пакетов. Он понимает множество видов протоколов, включая IPv4/6, TCP, UDP, ICMPv4/6, IGMP и Raw, на самых разных типах интерфейсов, а также понимает логику BPF-фильтров так же, как и более распространённые инструменты перехвата пакетов, такие как tcpdump и snoop.
ngrep — это как GNU grep, но применённый к сетевому уровню. Это инструмент на основе PCAP, который позволяет задать расширенное регулярное или шестнадцатеричное выражение для сопоставления с данными (payload) пакетов. Он понимает множество видов протоколов, включая IPv4/6, TCP, UDP, ICMPv4/6, IGMP и Raw, для самых разных типов интерфейсов, а также понимает логику BPF-фильтров так же, как более распространённые инструменты перехвата пакетов, например tcpdump и snoop.
-r)-uDLT_ внутри libpcap (например, DLT_LINUX_SLL)pcap_lookupdev)./configure --disable-tcpkill-d теперь позволяет указывать имя устройства (например, \Device\...)delay_socket в пользу Sleep()build.ps1)Самый простой способ запустить ngrep — через Docker:
docker pull ghcr.io/jpr5/ngrep:latest
docker run --rm --net=host --cap-add=NET_RAW ghcr.io/jpr5/ngrep:latest -q 'GET|POST' tcp port 80
См. DOCKER для подробных инструкций по использованию Docker.
Загрузите готовые бинарные файлы со страницы Releases.
См. INSTALL для инструкций по сборке.
ngrep изначально создавался для:
Кроме того, его можно использовать для сбора учётных данных в открытом виде, как при HTTP Basic Authentication, FTP- или POP3-аутентификации. Как и все полезные инструменты, его можно использовать как во благо, так и во зло.
Посетите EXAMPLES, чтобы узнать больше о том, как работает ngrep и как с его помощью можно увидеть множество интересных вещей.
ngrep был широко портирован на множество платформ, но со временем доступ к ним сократился. Ниже приведён исходный список; актуальный список подтверждённо работающих платформ см. в наших автосборках, который включает самые популярные ОС, компиляторные тулчейны и архитектуры процессоров.
Если вам нужна помощь, у вас есть конструктивные отзывы или вы хотите отправить патч, посетите проект ngrep на GitHub и воспользуйтесь онлайн-инструментами там. Это поможет автору лучше управлять различными запросами и патчами, чтобы ничего не терялось и не пропускалось (как, к сожалению, случалось в прошлом).
Пожалуйста, обратитесь к CREDITS, чтобы увидеть частичный список многих людей, которые помогли сделать ngrep тем, чем он является сегодня. Также обратите внимание, что ngrep распространяется под простой BSD-подобной лицензией, однако в зависимости от того, какую библиотеку регулярных выражений вы используете при компиляции, вы получите либо GPL (GNU regex), либо BSD (PCRE2).
За десятилетия (!) ngrep де-факто был включён во многие популярные дистрибутивы, в некоторых из которых есть выделенные мейнтейнеры пакетов. Многие из них с готовностью обрабатывали проблемы, сообщаемые пользователями их дистрибутивов, и даже создавали патчи для ngrep, — но мне об этом редко сообщали. Каждые несколько лет мне приходится разыскивать в часто малоизвестных вендорских системах отслеживания, какие отчёты об ошибках и патчи могут существовать, чтобы включить их на пользу всем. И иногда я нахожу не всё.
Если вы мейнтейнер пакета для какой-либо ОС или дистрибутива и обнаружили, что обрабатываете отчёт об ошибке или пишете патч для ngrep, пожалуйста, как минимум поставьте меня в копию, чтобы я мог отслеживать (и, возможно, решить) эту проблему. В идеале пришлите мне ссылку на патч или pull request, чтобы я мог его просмотреть и слить.
Я считаю, что в конечном счёте это мой код, значит, это моя ответственность, но я не могу быть везде и видеть всё. Мне нужна ваша помощь, чтобы делать свою работу хорошо.
Спасибо вам искренне за всё, что вы уже сделали и ещё сделаете. 🙏