O projeto
Essa pesquisa tem como principal objetivo modelar e, eventualmente, construir um fuzzer para o protocolo AMQP baseado na gramática. Assim, comecei a codificar as primeiras coisas necessárias para isso, e a armazenar meu progresso num projeto no Github, onde também pretendo documentar o tempo gasto produzindo esse código. A produção e atualização dessa página não está entrando no tempo por ora (explicação sobre o tempo).
O primeiro passo para construir um fuzzer de um protocolo de rede é, certamente, construir um cliente, e como vamos querer gerar pacotes no futuro, as estruturas devem ser suficientemente genéricas para que possamos, de maneira simples, estender o programa para produzir pacotes deste ou daquele tipo sem afetar o funcionamento do núcleo do programa.
Por isso, estou tomando bastante tempo em pensar nas melhores maneiras de criar os structs para conter tudo que um pacote precisa de uma maneira que faça sentido e, talvez até mais importante, para eu não me perder durante o desenvolvimento.
Na data que escrevo, , ainda não passei do pacote inicial, uma vez que, a partir do início da troca de pacotes, as respostas do cliente passam a depender da resposta do servidor, e para isso precisamos de um mecanismo de interpretar os pacotes do tipo "Método" do protocolo. Idealmente, pelo menos uma interação simples de "Connect" estará pronta ao fim da semana, já que a cada peça que é construída, a próxima fica mais fácil.
Contando o tempo
A maneira de medir o tempo é bem rústica, e também, inevitavelmente, inclui o tempo despendido pensando no problema em mãos (como todo tempo de produção de um software deveria ser medido, na minha opinião). Utilizo um script bash que atualiza um arquivo com a hora atual, e ativo esse script assim que me proponho a trabalhar no código e no último commit antes de parar de trabalhar. Assim, as entradas ímpares correspondem aos momentos em que comecei a trabalhar, e as entradas pares os momentos em que parei de trabalhar. O script que uso é o seguinte:
#!/bin/sh
date --rfc-3339=seconds >> timestamp
A única exceção de tempo medido foi antes da criação desse mecanismo, contando de trabalho.
O gasto até agora é de .