"Telegraph" – e-mail sem internet

Bom dia!

Gostaria de compartilhar com a comunidade algumas ideias interessantes sobre a criação de um e-mail descentralizado e demonstrar na prática o funcionamento de uma implementação já existente.

Inicialmente, o "Telegraf" foi desenvolvido como um meio de comunicação amador entre os membros da nossa pequena comunidade estudantil, que de alguma forma se dedicou à computação e às comunicações.

Nota Bene: o "Telegraf" é um meio de comunicação amador; extrair benefícios práticos em larga escala parece bastante problemático, no entanto, essa questão dificilmente pode ser considerada substancial — nossa principal meta é chamar a atenção para o desenvolvimento de sistemas de comunicação desse tipo.

Acreditamos que aumentar o interesse geral em desenvolver diferentes sistemas de comunicação é algo necessário e bastante importante, uma vez que compreender os princípios fundamentais de como esses sistemas operam e em que se baseiam é a chave para aumentar a conscientização dos cidadãos sobre segurança da informação.

"Telegraph" – e-mail sem internet

Achtung!Para evitar possíveis mal-entendidos — em alguns casos, as imagens podem ser folheadas:
"Telegraph" – e-mail sem internet

O sistema opera por iniciativa voluntária e puro entusiasmo — simplesmente gostamos do que fazemos. Você pode considerar isso um hobby e não estará errado — ainda existem pessoas que apreciam a comunicação por meio de correspondência em papel; o "Telegraf" pode ser visto, na maioria dos casos, como uma realização digital dos princípios do correio convencional.

O "Telegraf" é um análogo autônomo de e-mail, permitindo o envio de mensagens de texto simples sem utilizar a internet. O "Telegraf" pode ser associado, de certa forma, a Sneakernet — uma forma de troca de informações sem utilizar a rede.

Discos flash são usados como caixas de correio, e terminais — computadores que funcionam como pontos de acesso para enviar e receber correspondência eletrônica.

Vamos considerar um exemplo simples de interação com o sistema. Temos duas unidades USB e um terminal. No próprio script, estão definidas as variáveis globais necessárias para a interação subsequente com o sistema — o número do terminal, o caminho para a raiz e mais.

Se conectarmos a unidade removível ao terminal e executarmos o script, ele tentará obter mensagens de saída do diretório /mnt/Telegraph/Outbox e transferi-las para sua memória, em seguida — verificar se há novas mensagens na memória para o usuário atual. Se houver — registrá-las em /mnt/Telegraph/Inbox.

Registro de novos dispositivos

Ocorre de forma bastante prosaica. O script encontra novas unidades USB conectadas ao sistema e tenta corresponder seus identificadores únicos com aqueles apresentados na raiz. Se os dispositivos não foram registrados anteriormente, serão formatados de acordo com as regras estabelecidas pelo 'Telegrafo'.

Após o registro de um novo dispositivo, a estrutura da raiz assume a seguinte forma:

Ver postagem no imgur.com

No arquivo de configuração config.ini, localizado na raiz da unidade USB, encontra-se a informação do sistema — identificador único e chave secreta.

Ver postagem no imgur.com

Dê rum para as pessoas!

Não, sério! É possível obter os códigos-fonte aqui, e já está na hora de começarmos a passar da teoria para a prática.

Mas devo dizer mais algumas palavras sobre como, na prática, funciona o sistema de troca de mensagens.

Para começar, vamos entender do que é composto um identificador único de onze dígitos. Por exemplo, 10455000001.

O primeiro dígito, 1, representa o número do país. O código internacional é — 0, e a Rússia, neste caso, é — 1.

Em seguida, vêm quatro dígitos que representam o número da região onde o terminal está localizado. 0455 — este é o município de Kolomna.

Depois, seguem-se dois dígitos, — 00, — que correspondem diretamente ao número do terminal.

E, somente depois, — quatro dígitos que são o número sequencial do usuário atribuído a este terminal. Para nós é — 0001. Também existe um 0000 — este número pertence diretamente ao terminal. Não é possível enviar correspondência escrita para ele, mas o próprio terminal usa esse número para enviar mensagens de serviço aos usuários. Por exemplo, se a mensagem não puder ser entregue por algum motivo.

Ver postagem no imgur.com

Na raiz da nossa "caixa de correio" existem duas diretórios necessárias para enviar e receber mensagens de texto. Ao conectar um dispositivo ao terminal, as mensagens de saída são enviadas do diretório "Outbox" para o servidor, enquanto as mensagens de entrada, como é lógico, são carregadas no diretório "Inbox".

Cada arquivo, dependendo do diretório, é nomeado com o número do destinatário ou do remetente.

Se tentarmos enviar uma mensagem a um destinatário inexistente, o terminal nos enviará uma mensagem de erro.

Ver postagem no imgur.com

No entanto, se decidirmos enviar uma carta a um destinatário localizado em outro terminal (independentemente de sua existência ou não), ela será gravada na memória do terminal até que o agente transfira a correspondência escrita do nosso terminal para o dele.

Ver postagem no imgur.com

Quando o agente da agência 10500000000 (ou seja, o carteiro) conectar seu dispositivo ao nosso terminal, as cartas de saída serão transferidas para seu armazenamento. Posteriormente, quando ele conectar seu dispositivo ao seu terminal, essas cartas serão descarregadas na memória do terminal e estarão à espera de serem baixadas pelo destinatário em seu pen drive.

Sessão de comunicação

Vamos tentar transmitir uma mensagem com o texto "Olá!" de 10455000001 para 10455000002.

Ver postagem no imgur.com

É isso aí!

Ficarei feliz com qualquer crítica ao código-fonte do projeto e ao próprio artigo.

Obrigado pela atenção.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster