Компактная C-утилита для фильтрации и слияния PCAP-файлов по IP-адресам. Принимает шаблон (одиночный IP, пара IP, IPv4, IPv6, или `ip`/`v4`/`v6` для всего трафика) и выходной PCAP-файл. Не использует libpcap — только стандартные библиотеки C. Один поток, быстрая обработка, 500 строк кода. Применяется в разборе перехваченного трафика, выделении коммуникаций конкретного хоста из большого дампа, слиянии нескольких PCAP в один с фильтрацией по адресам.
git clone https://codeberg.org/markusthilo/ipgrep cd ipgrep # Сборка (только стандартная библиотека C, без libpcap) gcc -o ipgrep ipgrep.c # Или через Makefile: make # Паттерны: # ip -- все IP-пакеты # v4 -- только IPv4 # v6 -- только IPv6 # 192.168.1.100 -- трафик от или к адресу # 10.0.0.1-192.168.1.100 -- трафик между двумя адресами # Примеры ./ipgrep v4 ipv4.pcap capture.pcap # все IPv4 ./ipgrep 192.168.1.50 host.pcap dump.pcap # трафик одного хоста ./ipgrep 10.0.0.1-192.168.1.1 comms.pcap *.pcap # C2-коммуникация ./ipgrep ip merged.pcap dump1.pcap dump2.pcap dump3.pcap # слияние
Объединение файлов PCAP и фильтрация по IP-адресам
Этот инструмент копирует пакеты из исходных файлов PCAP в целевой файл PCAP. Пакеты, не являющиеся пакетами типа IP, отбрасываются. Кроме того, пакеты можно фильтровать по версии IP (v4 или v6), по одному совпадающему адресу или двум совпадающим адресам.
Библиотека libpcap не используется. Этот инструмент основан только на стандартных библиотеках. Он работает в один поток, но по сравнению со сложными решениями должен работать очень быстро. Программа состоит всего из 500 строк чистого кода на C.
Данное программное обеспечение может не работать со всеми вариантами файлов PCAP. Должен работать Ethernet-уровень связи. Формат PCAPNG не поддерживается.
Всё необходимое находится в исходном файле ipgrep.c:
gcc -o ipgrep ipgrep.c
(или используйте make)
./ipgrep PATTERN OUTFILE INFILE1 [INFILE2 ...]
Формат файла — PCAP (PCAPNG не поддерживается)
Паттерны:
- ip: Копировать все IP-пакеты
- v4: Копировать все IPv4-пакеты
- v6: Копировать все IPv6-пакеты
- ADDRESS: Копировать пакеты, если совпадает адрес источника или назначения
- ADDRESS-ADDRESS: Копировать пакеты, если один адрес является источником, а другой — назначением
Заголовок файла PCAP берется из первого входного файла. Следующие значения остаются неизменными: магическое число, номер версии, поправка времени, точность временных меток, тип канала данных. Корректируется только максимальная длина захваченных пакетов (snaplen). Сжатие адресов IPv6 с удалением двоеточий не работает.
./ipgrep ip out.pcap dump.pcap
./ipgrep v6 out.pcap dump.pcap
./ipgrep ff02:::::::fb out.pcap dump.pcap
Копировать все пакеты, прошедшие между указанными IP-адресами:
./ipgrep 192.168.1.7-216.58.207.78 out.pcap dump1.pcap dump2.pcap
Используйте это программное обеспечение на свой страх и риск. Точность не гарантируется.
Сообщайте об ошибках по адресу: markus.thilo@gmail.com
Страница проекта: https://github.com/markusthilo/iprunner