O protocolo mysql
não é um protocolo de texto, portanto, seqüências de caracteres e números expressos como binários serão trocados. Se os bytes que compõem os números parecem corresponder aos caracteres imprimíveis em sua localidade, eles serão exibidos por strings
.
Mesmo se fosse um protocolo texto , a consulta seria seguida pelo início do próximo quadro Ethernet capturado, com um cabeçalho pcap que pode muito bem conter valores de byte que correspondem a caracteres imprimíveis em seu localidade. Normalmente, os primeiros 4 bytes do cabeçalho pcap são o tempo da captura expresso como um número de 32 bits no endianness local. Por exemplo, a hora atual do Unix é 0x51f65c79, que em um PC x86 seria armazenada como os bytes: 0x79 (ASCII y
), 0x5c (barra invertida ASCII), 0xfc, 0x51 (ASCII q
), que é provavelmente o que sua visão desde em um pacote query
do MySQL, o próprio texto da consulta é o que vem por último.
Lembre-se também de que consultas longas podem ser fragmentadas em vários pacotes TCP e podem conter caracteres que não podem ser impressos em sua localidade.
Você deve usar algo que seja capaz de dissecar o protocolo mysql como tshark
:
tshark -T fields -e 'mysql.query' -i any -R 'mysql.command == 3' tcp port mysql
Isso diz a tshark
para capturar o tráfego TCP na porta 3306 (mysql) na interface any
, filtrando apenas o tráfego de consulta do mysql ( mysql.command == 3
) e exibindo apenas query
.