Por motivos de segurança, queremos listar todos os URIs de solicitações POST que são usados em nossos aplicativos (portanto, desabilitaríamos POST por meio do mod_security, exceto os URIs). A idéia é usar o tcpdump para capturá-los durante um teste de regressão completo e, em seguida, usar o comando wireshark para obter uma lista distinta de todos os URIs.
O problema é que não estamos conseguindo encontrar os argumentos tcpdump corretos para capturar apenas as solicitações de postagem HTTP (o que é necessário porque um tcpdump completo preencheria rapidamente o disco).
O comando a seguir funciona, mas mostra GETs, POSTS e alguns outros pacotes (muitos):
sudo tcpdump -A 'tcp port 9081 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Seguindo apenas a solicitação POST de captura, mas no wireshark eles são mostrados como pacotes TCP e não podemos extrair o URI desses (como fazemos para o HTTP usando o valor personalizado http.request.uri
no wireshark):
sudo tcpdump -A 'tcp port 9081 tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
Quais argumentos tcpdump devemos usar para capturar solicitações HTTP POST (que são mostradas como pacotes HTTP em wireshark) ou como podemos extrair o URI desses pacotes TCP (segundo comando)?