Eu adoraria se houvesse uma única ferramenta de linha de comando para farejar pacotes em um único comando no Linux. algo assim sniff dumpfile command
para que você possa simplesmente executar o comando que deseja cheirar pacotes no terminal e obter um despejo dos pacotes em outro lugar.
Eu gostaria de despejar / salvar / ver apenas o tráfego de rede do comando único que eu insiro, nem todo o tráfego TCP na minha interface de rede única. Portanto, se eu estivesse conectado ao meu computador e tivesse o IRC em segundo plano sniff somefile wget http://www.google.com
, eu gostaria de ver todo o tráfego de rede que o comando wget fez para baixar o http://www.google.com . Não quero que 'somefile' tenha o tráfego de rede do IRC confundindo as coisas.
Existem muitos comandos linux / unix que aceitam um comando diferente e fazem algo diferente. De sudo
(executado como superusuário), nice
altere o bom nível trickle
(limite a largura de banda de um comando)
Respostas:
Não tenho nada que eu saiba, mas teoricamente não deve ser difícil conseguir algo parecido. Strace pode ser usado para interceptar chamadas de rede.
Isso fornecerá informações sobre os dados enviados entre o kernel e o processo. A saída do strace não é exatamente o que você deseja. No entanto, o strace usa o ptrace syscall para interceptar chamadas do sistema. Pode ser possível escrever um programa para produzir os dados um pouco mais úteis.
Como alternativa, você também pode interceptar o soquete útil, ligar e ouvir syscalls. Pode ser possível escrever um pequeno programa que use ptrace nessas chamadas e libpcap para alterar dinamicamente o filtro de captura toda vez que um novo soquete for aberto.
fonte
Tracedump
Faça o download e a descrição aqui: http://mutrics.iitis.pl/tracedump
fonte
Experimente o Wireshark - o comando será
tshark
Ou você realmente quer apenas o LSOF?
Eu não acho que exista uma ferramenta que continue a filtrar dinamicamente todas as comunicações associadas a um processo. No entanto, você pode tentar rastrear as comunicações do processo com ferramentas como
lsof
e, depois de ter um bom filtro que possa isolar a comunicação desse processo de todos os outros tráfegos em execução no sistema, você poderá obter a captura correta.Por exemplo,
wget
normalmente, o endereço IP de destino é diferente de outro tráfego relacionado ao processo. Mesmo se você pegar algo comoskype
o intervalo da porta de destino, geralmente é corrigido para uma instância.Isto é um pouco como o princípio da incerteza. Geralmente, você pode saber o que está passando por um conjunto de caminhos de comunicação (com um sniffer filtrando em um grupo de fluxos identificado) ou onde diferentes links de comunicação estão sendo feitos (com lsof).
Eu realmente gostaria de saber se as duas podem ser feitas para um aplicativo. Eu acho que deveria ser viável. Mas, ainda não vi nenhuma ferramenta fazer isso.
fonte
Aprenda a usar expressões de filtro.
Enquanto isso não vai fazer as coisas de fantasia que você está pedindo.
Isso permitirá que você remova quase todas as "coisas confusas como o IRC" da captura.
Além disso, é muito útil conhecer a sintaxe do filtro para referência rápida no futuro.
fonte
Especificamente para um navegador / página da Web, algo como o plug-in Firebug para Firefox pode fornecer algumas das informações que você está procurando: http://getfirebug.com/net.html
Para aplicativos mais gerais, pode ser necessário usar o netstat para identificar as portas usadas pelo aplicativo e depois o Wireshark / tshark / dtrace com um filtro para capturar apenas esse tráfego. Não é a resposta de uma linha que você estava procurando ...
fonte
Uma ideia, tente o VMWare
-configure uma vm -configure
essa vm para usar uma interface específica
-niff nessa interface a partir do host (é como um homem no ataque do meio)
Se você isolar quais aplicativos de rede estão executando nessa vm, poderá ter sua resposta
Uma solução mais ideal, suponho, é fazer o que o VMWare faz em termos de como ele especifica como escolhe uma interface para conversar. Eu acho que sua mágica vem dos módulos do kernel que ele usa, nesse caso, provavelmente do módulo do kernel vmnet.
Que eu saiba, os aplicativos não estão cientes de qual interface eles falam e acredito que seja por design; eles não deveriam ter que se preocupar com essas coisas.
Além disso,
talvez já exista um programa, não sei. Mas se um foi escrito, você pode chamá-lo de nettrace (por exemplo) e Usage pode ser como
interface do programa nettrace
depois cheire a interface usada e adicione rotas (talvez faça automaticamente) à sua interface real
fonte
Supondo que você seja a única pessoa na caixa que está tentando se conectar ao google na época, eu acho que algo assim deveria fazer o truque:
tcpdump -w <outfile> -i <interface> tcp dst host www.google.com and dst port 80
Se você não é a única conexão que está tentando se conectar ao google na caixa, se você pode identificar o IP / porta da qual está se conectando, também pode especificar a porta src / src ip.
Identificar a porta src pode ser um problema, a menos que você possa especificá-la em qualquer cliente que você usar. Não tenho certeza se você pode com o wget.
Eu suspeito fortemente que você pode especificar as portas src e dst com,
netcat
portanto, se realmente era do google, você poderia fazer seu GET (manualmente) através do netcat.Claro que a página de manual lhe dará detalhes
fonte
A página de manual do tcpdump e muitos sites oferecem exemplos detalhados de filtros, e existem até alguns repositórios online de expressões de filtro do tcpdump. Ele deve ser capaz de fazer quase tudo o que você pode sonhar, supondo que você saiba algo sobre o tráfego de rede (origem, destino, portas, protocolos etc.) além do programa que o está gerando.
Se você estiver trabalhando em um servidor ou em uma caixa decapitada, sempre poderá fazer com que o tcpdump grave um arquivo de despejo e, em seguida, abra-o no Wireshark na estação de trabalho e obtenha filtragem avançada e uma interface gráfica.
fonte
Talvez este script faça o que você deseja com as modificações apropriadas no comando tshark:
Leia o arquivo de despejo posteriormente:
fonte
O Dtrace deve permitir isso, embora eu ainda não saiba se ainda está no Linux.
fonte