Saída de canal do tcpdump com opção buffer -B

Saída de canal do tcpdump com opção buffer -B

Estou processando a saída do tcpdump no Ubuntu 16.04LTS usando o seguinte comando:

$ sudo tcpdump -i wlan0 -e -s 64 -n -j adapter -K -l | python script.py

Isso funciona, mas, infelizmente, há muitos pacotes para manipular os scripts que desejo escrever, então gostaria de remover pacotes que vêm do mesmo endereço IP uma vez a cada 100 ms ou mais. Não vejo uma maneira de fazer isso na página de manual do tcpdump. Existe uma maneira de fazer isso?

Eu vi que você pode ajustar o tamanho do buffer usando -B, mas quando tento executar o seguinte com um script python de teste (que simplesmente exibe o que lê no stdin):

$ sudo tcpdump -i wlan0 -e -s 64 -n -j adapter -K -B 64 -l | python test.py

Não recebo nada além de linhas em branco no terminal. Não entendo como o buffer funciona, porque se eu não canalizá-lo para um script, a saída para o terminal funcionará bem usando:

$ sudo tcpdump -i wlan0 -e -s 64 -n -j adapter -K -B 64 -l

(roteiro Python):

import sys

while True:
    print sys.stdin.readline()

Alguém pode explicar se existe uma maneira de limitar efetivamente o número de pacotes por segundo de cada endereço IP gerado e, se não, como a opção -B funciona e se ela pode ser canalizada para um script python como este?

Responder1

Após tentativa e erro, descobri que se tentasse algo menor que 256 na opção -B, falharia. Então, caso isso ajude alguém, use pelo menos-B 256

informação relacionada