O enigma (parte 1 — preparação)

Há uns dias estava a sair de um bar quando vi uma colecção de postais que me pareceram mesmo giros. A imagem era alusiva ao signo chinês do macaco, que por acaso é o meu, e ainda por cima tinha uma rapariga desnudada, coisa que me agrada:

postal

Na altura tive uma ideia: enviar um postal desses a cada um de um grupo de amigos entre os quais trocamos emails com muita regularidade, apesar de estarmos todos geograficamente separados. A ideia inicial era apenas a de enviar os postais, apesar de ainda não ter pensado exactamente o que iria escrever neles, mas depois lembrei-me que seria engraçado fazer uma espécie de jogo, em que cada postal teria uma parte de uma mensagem completa, que só faria sentido quando todos os segmentos da mensagem se juntassem.

Para a mensagem, decidi que era uma ideia porreira aproveitar para desejar os parabéns à Mariana, visto que ela faria anos daí a uma semana. O problema desta ideia é que seria difícil partir a mensagem em pedaços de maneira a que ela não podesse ser reconstruída apenas com dois ou três postais — a palavra “parabéns” lá para o meio tornaria a mensagem mais ou menos óbvia. O que era preciso era que houvesse uma espécie de código que pudesse ser compreendido apenas quando todos (ou quase todos) os postais aparecessem. A minha solução foi criar uma página web, e colocar em cada postal uma das letras que compunham o nome do ficheiro html. A vantagem de ter um endereço online é que teria controlo sobre a mensagem, mesmo depois de enviar os postais, para corrigir quaisquer erros de última hora.

Inicialmente pensei em fazer o nome do ficheiro uma colecção aleatória de oito letras (contando comigo, éramos oito pessoas), mas se um postal se perdesse, ou se alguém não percebesse a letra, era importante ser possível reconstruir o nome do ficheiro. Assim, decidi usar uma palavra para o nome: a palavra “questao” (sem til, para facilitar) porque tinha a ver com o conteúdo da mensagem. Para fazer oito letras acrescentei um 1 ao final: questao1.html. Bastaria ter o cuidado de enviar o postal com o ’1′ a uma pessoa que eu sabia que iria não só recebe-lo, como também participar na discussão subsequente.

Em cada postal escrevi o endereço web: “http://geocities.com/questao_1/?.html”, e por baixo aparecia uma das letras que compunham o nome do ficheiro html com uma seta a apontar para o ponto de interrogação. Para ajudar a perceber a ordem das letras, em cima de cada postal escrevi uma das palavras de uma frase que ficaria completa quando todos os postais estivessem juntos — a ordem da frase ajudaria a indicar a ordem das letras. A frase era: “A matriz vai descobrir qual é a pergunta”. Repare-se que “a” aparece duas vezes, pelo que tive o cuidado de escrever uma maiúscula, e a outra minúscula nos postais.

Agora só faltava criar o conteúdo da página web. Criar uma página que apenas contivesse uma mensagem de parabéns pareceu-me um desperdício, face a todo o trabalho que deu codificar o endereço. Decidi, por isso, inventar um enigma e ver se eles eram capazes de o resolver.

A primeira fase do enigma era exactamente a página. Se se visitasse o site em questão, sem o nome do ficheiro html, abriria apenas uma página completamente preta. Isto foi propositado porque já sabia que era a primeira coisa que eles iam fazer ao receber o postal (e foi). Ora, se se visitasse o site com o endereço completo, abriria exactamente a mesma página preta, mas com um ponto de interrogação no meio. O ponto de interrogação mostra que de facto estão no sitio certo, mas a solução não seria óbvia — era preciso olhar para o código fonte da página, onde estava escondido um novo endereço web a apontar para esta imagem (clickar na imagem para ver em plena resolução):

Na imagem, os números são uma codificação simples da posição numérica de cada letra no alfabeto (a = 1, b = 2, c = 3, etc.) sem acentos, cedilhas ou tils, somada a um valor pré-definido (ou “semente“, em criptologia). Para a semente escolhi o valor de 8, porque estava a enviar o postal para 8 pessoas.

Claro que não ia codificar a mensagem à mão. Para escrever os números criei um pequeno programa em C que aceitava a semente e o texto como entrada, e codificava a mensagem nos números equivalentes:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void printWord(char* word, int seed);

int main(int argc, char** argv)
{
	int i, seed;

	if (argc < 2) {
		printf("usage: %s seed text\n\n", argv[0]);
		exit(1);
	}

	seed = atoi(argv[1]);

	for (i = 2; i < argc; i++) {
		printWord(argv[i], seed);
		printf("  ");
	}
	printf("\n");

	return 0;
}

void printWord(char* word, int seed)
{
	int i, val, size = strlen(word);
	char c;

	for (i = 0; i < size; i++) {
		c = word[i];
		val = c - 96 + seed;
		printf("%d ", val);
	}
}

A mensagem em si está dividida em três partes. A primeira serve para ajudar a perceber o código: os números codificam o meu nome (com todo o tempo que perdi nisto, quis assinar o meu trabalho), seguido da única parte que não está codificada naquele esquema, e que representa a data do meu nascimento, 19 de Janeiro de 1981.

Para a data de nascimento escrevi o nome do mês em Finlandês, visto que uma busca no Google daria resultados imediatos. Saber que “Tammikku” significava “Janeiro” e que estava colocado entre duas barras com números devia ser suficiente para perceber que se tratava de uma data. O dia estava codificado em hexadecimal, com o prefixo “0x” que pensei que fosse ser óbvio, pelo menos para a malta dos computadores, e finalmente, o ano era composto pelos números que faltam na sequência de 0 a 9. Esta codificação do ano foi a mais complicada, e aquela que mais temi que ninguém conseguisse perceber, mas calculei que também nao fosse necessário percebe-la para chegar ao resultado — pelo menos algum deles se deveria lembrar da minha data de aniversário.

A segunda parte do enigma é simplesmente uma mensagem escrita na mesma codificação do meu nome. A mensagem diz:

conseguiste decifrar a mensagem agora para descobrires a pergunta dobra a semente:

“Dobrar a semente” significa simplesmente “multiplicar a semente por dois”, mas ficou propositadamente vago para não ser demasiado fácil descobrir o texto na terceira parte do enigma. Portanto, a terceira parte da mensagem foi codificada no mesmo esquema, mas com uma semente de valor 16, em vez de 8. A mensagem era:

sera tarde demais para desejar os parabens a mariana?

A Mariana fazia anos uma semana e meia depois do dia em que enviei os postais. Inicialmente temi desejar-lhe os parabéns cedo demais, mas a imprecisão dos correios, e o facto de estarmos quase no fim de semana, fizeram-me jogar pelo seguro e enviar tudo com alguma antecedência.

Foi assim que preparei o enigma. Fica prometida para mais tarde uma segunda parte com os resultados.

5 thoughts on “O enigma (parte 1 — preparação)”

  1. Parabéns pela iniciativa. O meu postal é aquele que tem a palavra «Matriz». Eu fiquei, portanto, com o postal mais fixe.

  2. Ahah! Por acaso não tinha pensado nisso.

    Em minha defesa posso dizer que a selecção de palavras foi completamente aleatória, excepto a que descrevi no 1° artigo.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>