Num desses dias que começaram o ano, precisei fazer o monitoramente de uma mensagem em SOAP (padrão de comunicação dos sistema de pré-pago com que trabalho). Estava acostumado ao uso do wireshark pra fazer isso, mas descobri que não tinha o mesmo instalado.
Instalar um wireshark não é nada demais pra quem tem apt-get, mas como eu estava dentro do ambiente da empresa e não queria problemas com a área de segurança da informação, que monitora o download de aplicativos como o wireshark, resolvi fazer direto com tcpdump.
Para isso, basta usar os parâmetros “-s 0”, para definir tamanho máximo de pacote (não pegar somente alguns bytes), “-l” pra fazer a saída sem bufferização e, finalmente, “-A” para ter uma saída em modo texto dos caracteres ASCII dos pacotes capturados.
Com isso, utilizei o comando “tcpdump -n -s 0 -l -A -i lo port 10066” e pude verificar se meu protocolo SOAP estava enviando os cabeçalhos corretamente.
root@shibboleet:~# tcpdump -n -s 0 -l -A -i eth0 port 10066 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes 17:04:12.661207 IP 10.1.2.5.43789 > 10.1.2.5.10066: Flags [S], seq 2942898742, win 32792, options [mss 16396,sackOK,TS val 284979440 ecr 0,nop,wscale 7], length 0 E..<b.@.@... {.. 'R.i.6........KB....@.... ..p......... 17:04:12.661232 IP 10.1.2.5.10066 > 10.1.2.5.43789: Flags [S.], seq 2517428391, ack 2942898743, win 32768, options [mss 16396,sackOK,TS val 284979440 ecr 284979440,nop,wscale 7], length 0 E..<..@.@... {.. .....i.7....KB....@.... ..p...p..... 17:04:12.661251 IP 10.1.2.5.43789 > 10.1.2.5.10066: Flags [.], ack 1, win 257, options [nop,nop,TS val 284979440 ecr 284979440], length 0 E..4b.@.@... {.. 'R.i.7........K:..... ..p...p. 17:04:12.661302 IP 10.1.2.5.43789 > 10.1.2.5.10066: Flags [P.], seq 1:1441, ack 1, win 257, options [nop,nop,TS val 284979440 ecr 284979440], length 1440 E...b.@.@..H {.. 'R.i.7........P...... ..p...p.POST /Air HTTP/1.1 Accept-Encoding: identity Content-Length: 1245 Host: air:10066 User-Agent: DSMN/4.4/1.0 Connection: close Content-Type: text/xml Authorization: Basic dmFpbGE6c2V1dHJvdXhh <?xml version="1.0" encoding="UTF-8" standalone="no"?> <methodCall> <methodName>UpdateOffer</methodName> <params> <param> <value> <struct> <member> <name>originNodeType</name> <value> <string>EXT</string> </value> </member> <member> <name>originHostName</name> <value> <string>HELIO</string> </value> </member> <member> <name>originTransactionID</name> <value> <string>410</string> </value> </member> <member> <name>originTimeStamp</name> <value> <dateTime.iso8601>20130115T17:04:12+0000</dateTime.iso8601> </value> </member> <member> <name>subscriberNumber</name> <value> <string>5511912345678</string> </value> </member> <member> <name>offerID</name> <value> <int>11</int> </value> </member> <member> <name>offerType</name> <value> <int>0</int> </value> </member> <member> <name>expiryDate</name> <value> <dateTime.iso8601>20131027T12:00:00+0000</dateTime.iso8601> </value> </member> </struct> </value> </param> </params> </methodCall> 17:04:12.661312 IP 10.1.2.5.10066 > 10.1.2.5.43789: Flags [.], ack 1441, win 256, options [nop,nop,TS val 284979440 ecr 284979440], length 0 E..4.X@.@.WX {.. .....i......K:..... ..p...p. 17:04:12.829800 IP 10.1.2.5.10066 > 10.1.2.5.43789: Flags [P.], seq 1:836, ack 1441, win 256, options [nop,nop,TS val 284979609 ecr 284979440], length 835 E..w.Y@.@.T. {.. .....i......N}..... ..q...p.HTTP/1.1 200 OK Content-Length: 681 Content-Type: text/xml X-Powered-By: AIR-XmlRpc Server 3.2 Server: air Date: Tue, 15 Jan 2013 19:04:24 GMT <?xml version="1.0" encoding="utf-8"?> <methodResponse> <params> <param> <value> <struct> <member> <name>expiryDate</name> <value><dateTime.iso8601>20131027T12:00:00+0000</dateTime.iso8601></value> </member> <member> <name>offerID</name> <value><i4>11</i4></value> </member> <member> <name>offerType</name> <value><i4>0</i4></value> </member> <member> <name>originTransactionID</name> <value><string>410</string></value> </member> <member> <name>responseCode</name> <value><i4>0</i4></value> </member> <member> <name>startDate</name> <value><dateTime.iso8601>20130115T12:00:00+0000</dateTime.iso8601></value> </member> </struct> </value> </param> </params> </methodResponse> 17:04:12.829865 IP 10.1.2.5.43789 > 10.1.2.5.10066: Flags [.], ack 836, win 256, options [nop,nop,TS val 284979609 ecr 284979609], length 0 E..4b.@.@... {.. 'R.i..........K:..... ..q...q. 17:04:12.830228 IP 10.1.2.5.43789 > 10.1.2.5.10066: Flags [F.], seq 1441, ack 836, win 256, options [nop,nop,TS val 284979609 ecr 284979609], length 0 E..4b.@.@... {.. 'R.i..........K:..... ..q...q. 17:04:12.865118 IP 10.1.2.5.10066 > 10.1.2.5.43789: Flags [F.], seq 836, ack 1442, win 256, options [nop,nop,TS val 284979644 ecr 284979609], length 0 E..4.Z@.@.WV {.. .....i......K:..... ..q...q. 17:04:12.865140 IP 10.1.2.5.43789 > 10.1.2.5.10066: Flags [.], ack 837, win 256, options [nop,nop,TS val 284979644 ecr 284979644], length 0 E..4b.@.@... {.. 'R.i..........K:..... ..q...q. ^C 10 packets captured 20 packets received by filter 0 packets dropped by kernel
Nesse caso, é uma aplicação que roda na porta 10066 que foi criada pra atribuir “Offers”, ou ofertas de serviços através de um servidor que se chama AIR, Account Information and Refilling.