Primeiro, você precisa obter o endereço de hardware Ethernet do roteador (porque o tráfego enviado por ele pode ser reconhecido ao ser enviado para esse endereço de camada de link):
$ arp -n 192.168.0.1
? (192.168.0.1) at 0:12:34:56:78:9a on en0 ifscope [ethernet]
Em seguida, use este endereço para informar ao tcpdump o que procurar:
sudo tcpdump 'ether host 0:12:34:56:78:9a and not host 192.168.0.1 and (port http or https)'
Observe que as aspas são necessárias para evitar que o shell tropeça nos parênteses. Além disso, se você deixar de fora a parte and not host 192.168.0.1
, ela incluirá o tráfego para o roteador (ou seja, ele mostrará a abertura da interface de configuração baseada na web do roteador) e até it. Finalmente, se você tivesse um nome DNS ou / etc / hosts definido para 192.168.0.1, você poderia usar o primitivo de gateway do tcpdump ( sudo tcpdump 'gateway somename and (port http or https)'
), mas isso não funciona com endereços IP.
Editar: isso só informará o tráfego que passa pelo computador em que está sendo executado - geralmente apenas o tráfego de / para esse computador. Se você quiser ver o tráfego através do roteador a partir de todos os hosts no lan local, será necessário configurar algum mecanismo para que todos esses pacotes sejam enviados ao computador de captura. A documentação do WireShark tem uma boa discussão das opções para isso.