27 de outubro de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Laboratório Maker 03: Analisador lógico Saleae

Analisador lógico

Esse ano estou com tanto assunto que não dou conta de escrever artigos. Já está difícil até definir as prioridades, mas vamos a mais um excelente dispositivo da série “Laboratório Maker”, que começou com o osciloscópio digital DSO138, depois passou pela série sobre o Bus Pirate. Assim como o Bus Pirate, podemos fazer sniffing de um modo um pouco diferente, mas cada um tem suas características, e definitivamente não há como comparar diretamente esses dispositivos. O analisador lógico e de protocolos Saleae é uma ferramenta que conta com uma IDE de altíssimo nível, multiplataforma e sucinta. Veremos em detalhes.

Software de interface com o dispositivo

Esse dispositivo tem características bem específicas, mas falando primeiramente do software, temos o changelog dele nesse link. É bem mantido e aparenta ter um cuidado muito especial na composição da janela para facilitar a usabilidade.

Ainda que não tenha o dispositivo, é possível experimentar o programa através do simulador contido na aplicação. Mas sério, esse dispositivo é barato demais para não ter um.

Analisador lógico - IDE

Os dados no barramento serial são sequências de bits em intervalos de tempo, basicamente. A IDE do analisador interpreta os dados conforme o protocolo especificado.

Configuração inicial do analisador lógico da Saleae

Como já citei diversas vezes em outros artigos, utilizo Linux desde 1997, e é fundamental para mim que uma ferramenta tenha suporte ao Linux, senão nada feito. Bem, o software é multiplataforma, com versões para Linux, Mac e Windows, atendendo a todos os gostos (ok, não todos, mas a maioria). No link anterior você pode baixar o programa. No Linux tem um procedimento extra, conforme descrito abaixo.

Quando iniciei o software, a primeira coisa solicitada foi a inserção de regras para o dispositivo no udev, para não executá-lo como root. Só que houve um pequeno problema: as permissões estavam entrando em conflito e a sugestão de comando não funcionou. Após uma pequena análise, consegui definir um modo de inserir as regras. Faça dessa maneira e já evite de cara perder tempo. O arquivo contendo as regras estará disponível no ponto de montagem temporário do aplicativo ao iniciá-lo, sendo /tmp/.mount_Logic-PKsTss/Logic. Entre nesse diretório e faça o seguinte:

find . -name 99*rules -exec cp {} ~/ \;

cd && sudo mv 99* /etc/udev/rules.d/99-SaleaeLogic.rules

sudo shutdown -r now

Após seu computador ser reiniciado, já deve ser possível usar o software.

Outra coisa importante a citar é que não se trata de um dispositivo USB-Serial. De fato ele é um dispositivo USB, então se tiver que procurar por alguma informação, estará disponível no dmesg:

novo dispositivo usb detectado - dmesg

O dispositivo é reconhecido automaticamente pelo software, ao abri-lo.

Características do hardware do analisador lógico

Como já citado, é um dispositivo USB. Ele consegue fazer leituras em até 24MHz, possui 8 canais, um pino para o GND e um pino para o CLK.

O dispositivo considera nível baixo a partir de 0.6V e nível alto a partir de 1.2V, o que permite trabalhar com dispositivos 3V3 e 5V tranquilamente.

Esse analisador lógico pode ser usado diretamente em barramentos CAN 3V3. Os padrões recomendados de I/O são 5V, 3V3, 2.5V e 1.8V.

Comparando a leitura do Bus Pirate com o sinal lógico

Se está acompanhando a série, deve ter visto também o vídeo do Bus Pirate interagindo com um BMP180. Os bytes enviados com o BMP180 foram esses:

[0xEE 0x2E 0xF4 #escreve os valores
[0xEE 0xF6 0xF7] #condicao de escrita
[0xEF r:2] # condicao de leitura e le

resultado: 0x80 0x00

[0xEE 0xB4]
[0xEF r]
[0xEE 0xB2]
[0xEF r]
#0xB4 = 0x37
#0xB2 = 0x63

No vídeo falei sobre a escrita dos bytes 0x2E e 0xF4, sem enviar o stop bit porque teria que esperar no mínimo 4.5ms para fazer a leitura. Na linha seguinte, escrevemos os bytes que queremos ler, enviando agora o stop bit (“]“), então na terceira linha fazemos a leitura dos bytes solicitados.

Esse é o formato do start bit (SDA cai no meio da segunda metade do SCL):

Analisador lógico - start bit

Daí enviamos 3 bytes:

leitura de 3 bytes

Depois tem um espaço enorme até a próxima sequência, porque o processo foi manual e é humanamente impossível escrever após 4.5ms:

intervalo manual - leitura de bits

E  temos daí mais um start bit, 3 bytes e o stop bit:

fim da mensagem

O stop bit tem esse formato (SDA sobe no meio da segunda metade do SCL):

Analisador lógico - stop bit

Aqui está detalhado a leitura do endereço 0x77 no registrador 0xB2 seguido pelo stop bit:

Analisador lógico - valor da leitura

Aqui temos desde o start bit ao stop bit do registrador 0xB2:

Analisador lógico - 0xB2

Aqui está a resposta da leitura de 0xB4:

Analisador lógico - 0xB4

Para ampliar ou reduzir o sinal, basta usar a roda do mouse sobre o gráfico. Daí é só ir analisando as mensagens após fazer a captura que pode ser efetuada por gatilho, por tempo ou de forma contínua.

Se estiver interceptando uma comunicação UART, dará para ler a mensagem no barramento. Isso é espetacular para fazer depuração na comunicação entre Arduino e ESP32/ESP8266, por exemplo. No próximo artigo relacionado devo mostrar a análise do barramento 1-Wire e, se não ficar muito extenso, coloco também uma leitura de interceptação da UART. De outro modo, escreverei um terceiro artigo dedicado.

Analisador lógico na perícia forense digital

Na perícia, um item fundamental é a timeline. Nesse caso, o Bus Pirate pode não ser a melhor escolha, principalmente por fazer uma interceptação explícita no barramento. Já o analisador lógico e de protocolos não tem a capacidade de interferir, sendo uma das características fundamentais de uma ferramenta forense, que é a não-manipulação dos dados.

A amostragem também é tirada no tempo e pode ser salva em arquivo, e carregada posteriormente. O arquivo contém metadados que garantem a timeline, além de autenticação através do hash. A amostragem também tem o momento, que é fundamental para identificar e reproduzir uma situação, de modo que bastará descrever a metodologia no laudo ou parecer técnico.

Se você é Perito Forense Digital e ainda não teve essa necessidade, sugiro que se prepare, pois o mundo atual integra-se com dispositivos IoT, e já tem muita m3rd4 acontecendo. Adquira o analisador lógico e já vá treinando!

Onde comprar o analisador lógico e de protocolos?

Esse poderoso dispositivo pode ser adquirido na UsinaInfo, parceiro que propiciou uma boa parte da série “Laboratório Maker”, da qual escreverei sobre cada componente gradativamente. Se planeja adquiri-lo, faça-o com a UsinaInfo!

Clique nesse link para ir ao analisador lógico.

Vídeo do analisador lógico

No breve vídeo, vemos essa captura. Acompanhe e, se não é inscrito ainda, inscreva-se em nosso canal Dobitaobytebrasil no Youtube!

Revisão: Ricardo Amaral de Andrade