Manual

do

Maker

.

com

Esteganografia na hora! EasyMaker Image Suite

Esteganografia na hora! EasyMaker Image Suite

Vou começar o artigo por aqui mesmo. para quem não sabe, esteganografia é um meio de segurança por obscurantismo. A primeira aplicação em que se tem ciência foi em 1499, no livro "Steganography", de Johannes Thirhemius. Ok, essa informação é da Wikipedia. Mas não importa, porque não é o foco desse artigo. Sigamos.

Esteganografia e a faca de dois gumes

Tudo pode ser usado para bem ou para mal, vai da índole de cada um. Uma caneta escreve uma poesia e também mata uma pessoa. Podemos usar a esteganografia para ocultar mensagens de direitos autorais, por exemplo. Imagine um projeto com Raspberry; basta ocultar um registro em um ícone ou imagem de fundo e se o SD card for copiado, fica fácil provar a propriedade do projeto.

Ocultação de texto

Podemos ocultar texto em diferentes tipos de arquivos, mas a esteganografia não deixa rastro perceptível. Por exemplo, ocultar um arquivo zip em uma imagem é fácil, mas qualquer antivirus deve perceber, porque o arquivo foi alterado. Com esteganografia, podemos seguramente esconder texto em imagem "sem" que haja a possibilidade de ser descoberto, dependendo do algoritmo utilizado. Mas a esteganografia nos tempos atuais não pára por aí.

Ocultar uma imagem em outra imagem

Essa imagem de destaque é a aba do recém-lançado EasyMaker Image Suite, que criei durante as últimas duas semanas, tomando minhas horas pré e pós trabalho. Foram mais de 70 horas de desenvolvimento, utilizando de amplos conceitos da linguagem C++ e do framework Qt, para produzir um software que pudesse facilitar a vida dos makers. A esteganografia é a cereja do bolo! A imagem que está à direita está com a imagem central oculta. É imperceptível, mesmo deixando a imagem em tela cheia! A imagem da esquerda é a mesma da direita após extrair a imagem central. Por isso, meus caros, apresento a vocês o primeiro programa para trabalhar com propósitos diferentes com imagem!

Outros recursos

O propósito do programa não é exclusivamente a esteganografia. Na verdade, o foco principal é preparar imagens para colocar em displays de microcontroladores. Tudo começa na aba Início.

Início

A primeira coisa a fazer é clicar em Arquivo e carregar a imagem do HD/SSD ou da Internet. Escolha sua opção! Após carregada a imagem, ajuste a dimensão no topo esquerdo, entrando com a dimensão desejada. Nos mostradores LCD estará a dimensão real sem distorção, daí ajuste novamente o valor até que ambos os lados atendam as dimensões mínimas desejadas. A imagem está maior que o tamanho ideal? Sem problemas. Desloque a imagem no canto inferior direito, então ajuste largura e altura para a dimensão ideal. Clique em crop e sua imagem estará pronta para conversão, sem precisar de um programa de edição especialista em imagem!

Claro, pode ser ideal inverter a imagem. O recurso está aí também! Porém a mudança de ângulo ainda não está implementada.

Monocromático

Normalmente o processo era uma sequência chata até termos a imagem no display:

  • Baixar uma imagem
  • Editar para acertar o tamanho
  • Procurar um site que converta para monocromático
  • Baixar o resultado e colocar no sketch

Acontece que a maioria desses sites esperam uma imagem em tons de cinza para converter para monocromático. Daí cabe edição. mas o resultado pode não ser o esperado, daí cabe ajuste. Bem, não mais!

Após carregar a imagem na aba Início, já podemos escolher a aba de conversão. Clicando em Monocromo, automaticamente temos uma primeira conversão. Se precisar de ajuste dos limites pra considerar o que será preto e o que será branco, basta ajustar em Parâmetros. Ainda podemos inverter o preto/branco! Além disso, temos a dimensão em bytes, para saber que tamanho ficará na microcontroladora; um espetáculo!

Essa conversão é adequada para displays OLED e e-ink monocromático, como o MH-ET.

Grayscale

E quem pensa que é fácil preparar uma imagem para display, se enganou. Tem display que o grayscale de 256 tons é aceitável, mas tem displays (até excelentes, eu diria) como o T5 da LilyGo que só usam 16 tons de cinza. Meus caros, os bytes da imagem não são "integrais" nesse tipo de conversão, mas não vou enchê-los com detalhes técnicos.

Enfim, para ambos os casos, temos a opção nessa aba. Escolha a imagem que deseja usar.

RGB565

O RGB 565 é outro caso que pode ser complicado de entender, para quem não tem muita prática com bits.

O RGB que utilizamos no computador é normalmente RGB24 ou RGB32 (esse segundo, com canal alfa). Tem outros formatos de RGB, mas para não virar um assunto maluco, foquemos no RGB565 (ou, RGB16).

Esse formato tem esse nome porque ele utiliza 5 bits para Red, 6 bits para Green e 5 bits para Blue. Desse modo, todos os valores são comportados em 16 bits (5+6+5), que equivale a 2 bytes (16/8 = 2). Por isso, cada pixel dele pode representar 65536 cores e isso cabe em um tipo int no Arduino (porque um int aloca 2 bytes no Arduino). Não é pouca cor, mas também não é muita. O RGB24 comporta 1.777.216 cores! Mas não podemos usá-lo diretamente em um display ILI9341 ou um display ST7789, por exemplo. Então, quando precisar, converta para RGB565 no EasyMaker!

Código para o display

Mas mesmo tendo as imagens, não é isso que usamos nos microcontroladores. O que usamos é um array de bytes no formato específico. Daí, cada conversão do EasyMaker inclui seu respectivo código na aba Código, onde disponibilizo um editor extra, para caso deseje escrever seu sketch ou funções ali mesmo.

Comunicação serial

Há dois objetivos aqui; um deles é disponibilizar um programa serial para se comunicar com seu microcontrolador sem precisar da IDE do Arduino. O outro, transferir o arquivo de imagem pela serial. Não sei se será viável, mas já mostrei que é possível. Só que ainda não está habilitada a serial porque o Qt 6 ainda não migrou o módulo serial disponível em versões anteriores. É um recurso previsto para o EasyMaker, de qualquer modo.

Componentes desabilitados

Todos os objetivos do programa são atingidos majestosamente. Os componentes que estão desabilitados são recursos previstos, devendo sair em versões posteriores do programa, se tiver. E explico a razão.

Custo do programa

O programa é g-r-á-t-i-s! De graça, pra vc usar à vontade. Mas coloquei um QR Code e o email para quem desejar fazer doações para o projeto. E essa será minha motivação para novas versões, porque dessa vez não farei igual fiz com o Phantom, trabalhando "anos" no sistema, com nenhum retorno que ao menos custeasse a hospedagem, em meados dos anos 2000.

Gostou do programa? Doe qualquer valor. Não se acanhe em doar R$1,00, sentirei prazer em receber esse tipo de feedback, que digo assim de passagem, é o mais significativo em um conceito de sociedade capitalista.

Onde baixar o EasyMaker Image Suite?

O programa está disponível nas releases do github, em meu repositório. As Releases estarão sempre do lado direito, nesse link. A primeira (ou única?) versão é essa.

Nesse momento, apenas versão para Windows. Devo compilar uma versão para Linux nos mesmos 2 dias que editarei o vídeo.

Vídeo de apresentação

O vídeo de apresentação do EasyMaker, incluindo a função de esteganografia, estará disponível no canal DobitaobyteBrasil no youtube. tão logo seja editado (provavelmente só em 2 dias após a publicação desse artigo). Aliás, essa é uma forma complementar de motivar o projeto: Inscreva-se em nosso canal!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.