Um módulo de kernel Linux simples (cryptochannel) que implementa um canal criptográfico educativo para leitura/escrita de mensagens através de um dispositivo de caractere e um pseudo-fs /proc para estatísticas.
Principais objetivos:
- Expor um dispositivo em
/dev/cryptochannelpara enviar/receber mensagens (fixas em 16 bytes, com padding se necessário). - Expor estatísticas em
/proc/cryptochannel/stats.
O sistema precisa ter os headers do kernel e ferramentas de compilação instaladas.
Debian / Ubuntu / Kali:
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r)Certifique-se de que seu diretório contém, pelo menos:
cryptochannel.c— código fonte do móduloMakefile— script de compilaçãorun.sh— script auxiliar para carregar/configurar o módulo
No diretório do projeto, execute:
makeIsso gera o binário do módulo: cryptochannel.ko.
Use o script de execução incluído:
sudo sh ./run.shVerifique o dmesg para ver mensagens do módulo (por exemplo, STARTED):
sudo dmesg | tail
# ou
sudo journalctl -k -n 10- Para enviar uma mensagem (o módulo espera mensagens de 16 bytes — mensagens menores são preenchidas):
echo -n "mensagem de 16 bytes" > /dev/cryptochannelObservações:
-
O
-nnoechoevita adicionar\n. Se uma nova linha for enviada, o módulo deve tratar essa terminação, deve ser feito. -
Mensagens menores que 16 bytes devem ser preenchidas (padding) internamente, deve ser feito.
-
Para ler a mensagem armazenada/recebida:
cat /dev/cryptochannel- Para ver estatísticas do canal:
cat /proc/cryptochannel/statsHá um pequeno par de programas em produtor_consumidor/ que demonstram como escrever (produtor) e ler (consumidor) mensagens do dispositivo /dev/cryptochannel.
- Compilar:
cd produtor_consumidor
make- Pré-requisito: o módulo deve estar carregado e o dispositivo
/dev/cryptochannelcriado com permissões de leitura/escrita. Use o script do projeto para isso:
sudo sh ../run.sh- Executar (recomendado em dois terminais separados):
Terminal A (consumidor - fica aguardando mensagens):
cd produtor_consumidor
./consumidorTerminal B (produtor - envia mensagens interativas):
cd produtor_consumidor
./produtor- Alternativa: executar o
consumidorem background no mesmo terminal:
cd produtor_consumidor
./consumidor &
./produtor-
Controles:
- No
produtor, digite mensagens e pressione Enter para enviar. Digitesairpara encerrar o produtor. - No
consumidor, useCtrl+Cpara parar o consumidor.
- No
-
Limpeza dos binários:
cd produtor_consumidor
make cleanMensagens de inicialização/finalização e outros logs ficam no buffer do kernel. Use:
sudo dmesg | tailou
sudo journalctl -k -n 50Para remover o módulo do kernel:
sudo rmmod cryptochannelVerifique o dmesg para ver a mensagem de encerramento (por exemplo, ENDED).
Para remover arquivos temporários e binários compilados:
make cleanEste repositório é destinado a fins educacionais. Se quiser contribuir com melhorias (melhor tratamento de tamanho de mensagem, uso de mecanismos de criptografia, testes, documentação), abra uma issue ou pull request.
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para mais detalhes.