Supondo que você esteja querendo ver os pacotes TCP / IP, a resposta curta é que você precisa ter acesso root para inspecionar os pacotes, porque os pacotes reais são gerados pelo kernel, não pelo aplicativo.
Eu sei que existem ferramentas para inspecionar pacotes (por exemplo, wireshark) ou para simular latência / perda de pacotes (por exemplo, netem), mas todos parecem exigir permissões administrativas para inspecionar / modificar pacotes.
Estou procurando algo que possa interceptar pacotes para um único aplicativo e ser utilizável por um usuário padrão (não raiz).
Eu gostaria de algum tipo de ferramenta valgrind
para rede, onde você a usa para envolver seu aplicativo e intercepta solicitações de rede para inspecioná-las / modificá-las.
Meu principal caso de uso é permitir que os alunos usem essas ferramentas nos computadores das universidades de maneira simples (ou seja, sem a necessidade de máquinas virtuais ou suporte dos administradores).
Essas ferramentas existem? Caso contrário, o que os impede de realmente existir em primeiro lugar?
Nota: ferramentas como setcap
, que precisam ser configuradas pelos administradores do sistema e podem conceder muitos poderes aos usuários (por exemplo, inspecionar todos os pacotes, e não apenas aqueles gerados por seus aplicativos) não são adequadas.
Editar : OK, depois de algumas pesquisas, descobri o truque LD_PRELOAD , que pode ser usado como invólucro de um homem pobre para interceptar funções específicas da biblioteca (por exemplo, connect
, sendto
, etc.) e contar / modificar pacotes. Aparentemente, a razão pela qual não há tantas ferramentas não-raiz com base nisso é porque:
Mas isso é tecnicamente viável, no caso de qualquer aluno curioso estar disposto a desenvolver essas aplicações.
Outra técnica seria codificar um plug-in valgrind para lidar com isso e usar o valgrind para executar o programa. Mas parece muito exagerado, então nenhuma pessoa sã fez isso.
Alguém mais experiente do que eu pode confirmar se minhas declarações anteriores estão corretas?
Supondo que você esteja querendo ver os pacotes TCP / IP, a resposta curta é que você precisa ter acesso root para inspecionar os pacotes, porque os pacotes reais são gerados pelo kernel, não pelo aplicativo.
Tags networking not-root-user