Esse projeto foi desenvolvido como trabalho final na disciplina de Arquitetura de Computadores I (Engenharia da Computação, UFRGS) sobre a arquitetura x86 da intel.
Há diversas maneiras de criptografar uma mensagem utilizando esteganografia e nesse projeto foi utilizado a maneira onde a mensagem a ser criptograda é passada pelo usuário através do teclado e a escrita responsável pela criptografação está previamente inclusa em um documento ".txt". A partir disso, o programa verifica os caracteres correspondentes/iguais entre a mensagem e a escrita, após camufla criando outro arquivo ".krp" e nele escrevendo as posições onde foram encontrados caracteres iguais. Além disso, são escritos no ".krp" o valor das posições com 2 bytes em Little-Endian. Por exemplo:
Obs: 0A 00, 04 00, 06 00, etc. significa 10, 4 e 6, respectivamente em decimal, e tais valores estão escritos em hexadecimal formado por 2 bytes.
Ainda há outras ocasiões onde os caracteres da mensagem não são criptografados:
- caso não haja correspondência no arquivo .txt.
- caso a posição de criptografia foi ocupada anteriormente por outro caractere. Por exemplo, no exemplo anterior caso a mensagem fosse "strings", o último "s" não seria criptografado, porque a posição (10 ou 0A 00) de criptografia foi ocupada pelo primeiro "s" da palavra "strings".
- caso a mensagem possua caracteres menores que 33 ou maiores que 126 (decimal, segundo tabela ASCII).
- a posição 0 do .txt não faz parte da criptografia, no caso a criptografia começa a partir da posição 1.
Obs:
- não importa se os caracteres são minusculos ou maiusculos, eles são tratados como iguais.
- a mensagem tem que possuir no máximo 100 caracteres.
- o arquivo .txt tem que possuir um tamanho máximo de 64Kb.
- no final do arquivo .krp é inserido o valor 0 para indicar o final do arquivo.
Executando o programa inserindo os seguintes textos de entrada:
- texto a ser criptogrado (mensagem): Arq intel
- nome de arquivo de leitura (arquivo .txt): cripto
Dessa forma, é gerado um arquivo .krp contendo o seguinte conteúdo: 01 00 12 00 02 00 04 00 05 00 10 00 09 00 0C 00 00 00
Obs: o "caractere da frase inválido" do exemplo acima é ocasionado pelo "espaço" da mensagem, que está fora dos caracteres válidos.
cripto.txt:
cripto.krp:
- Montador MASM611
- DOSBox
- Visual Studio Code (editor de texto)
- File View Pro (visualizador de binário)
A solução para executar o projeto utilizando o montador MASM611 e o DOSBox é um tanto complexa para o objeto de estudo, portanto a solução mais rápida e simples é utilizar um emulador dos processadores x86 da intel chamado EMU8086. Partindo disso, basta:
# clonar repositório
git clone https://github.com/Alamito/esteganografia-x86.git
Em seguida, abrir o arquivo "codigo8086.asm" utilizado o EMU8086 e dar run no programa. Porém, deve haver um arquivo ".txt" de criptografia dentro da pasta MyBuild dos arquivos do EMU8086, e deve ser colocado o nome desse arquivo após a execução do programa (sem haver a extensão ".txt").
Alamir Bobroski Filho
"O poder não vem do conhecimento mantido, mas do conhecimento compartilhado"
Bill Gates