Я ссылаюсь на эту ветку: как разбить файл pcap на набор меньших
Я пробовал использовать команду tcpdump -r old_file -w new_files -C 4096
и tcpdump возвращает tcpdump: invalid file size 4096
До сих пор я тестировал до 2048 года (1000000 байт), и он успешно разделил файлы на 2 ГБ каждый для большого файла pcap. Есть ли способ разбить большой файл pcap (например, 20 ГБ) на файлы меньшего размера по 4 ГБ каждый?
Если вы не хотите изменить источник и перекомпилируйте, вы не получите tcpdump, чтобы сделать это изначально.
case 'C':
Cflag = atoi(optarg) * 1000000;
if (Cflag < 0)
error("invalid file size %s", optarg);
break;
Вам нужно будет найти и изменить тип CFlags. Однако это может привести к другим неожиданным проблемам.
Вы можете попробовать разделить его на блоки по 2 ГБ, а затем удалить 20 байт. заголовок файла из второго файла каждой пары (дд seek - ваш друг), затем используйте cat для объединения двух файлов вместе.
В его репозитории Github есть патч для tcpdump, см. Выпуск # 488. Применение патча и компиляция действительно просты, если вы будете следовать инструкциям, описанным в INSTALL.txt (см. Корневой каталог репозитория).
В качестве альтернативы вы также можете использовать библиотеку PcapPlusPlus. В его репозитории на github есть пример PcapSplitter который делает то же самое, что и tcpdump -C
. Однако вам также необходимо скомпилировать его, прежде чем вы сможете его использовать. Но есть Makefile.