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