Редактировать: Не уверен на 100%, если я пойму, что вы хотите, но подходит ли tee
?
Т.е.:
sudo tcpdump '(порт udp и src 53)' -nnvvXSs 1514 -l | тройник dump.log
-l Сделать буферизованную строку стандартного вывода
Если вы хотите взломать C, код sniffex.c , вероятно, можно изменить в соответствии с вашими потребностями.
Для начала измените filter_exp
, чтобы удовлетворить ваши потребности.
Количество пакетов устанавливается num_packets
, жестко закодировано на 10, используется в pcap_loop()
:
int pcap_loop (pcap_t * p, int cnt
, обратный вызов pcap_handler, пользователь u_char *);
cnt
Задает максимальное количество пакетов для обработки перед возвратом. Отрицательное значение приводит к тому, что подпрограмма pcap_loop зацикливается бесконечно, или пока не будет достигнут EOF или не произойдет ошибка. Значение 0 обрабатывает все пакеты, пока не произойдет ошибка или не будет достигнут EOF. *
argv[1]
- это устройство для использования.
Обычно вывод по умолчанию:
Packet number 2:
From: 123.123.123.123
To: 10.0.0.10
Protocol: TCP
Src port: 153
Dst port: 53
Payload (1440 bytes):
00000 de 15 be 61 60 47 9a 14 92 b0 5b 7c fa 64 51 4b ...a`G....[|.dQK
00016 b0 b5 c4 4c b0 c2 a8 a3 89 60 10 36 29 7e 10 0c ...L.....`.6)~..
00032 94 15 01 9a a5 29 26 0a a9 a4 82 70 9f 22 ac 90 .....)&....p."..
...