Keylogger em C#

Eu sempre tive curiosidade de saber como funcionava um keylogger. Para quem não sabe, como descrito na Wikipedia, um keylogger é:

Keystroke logging , muitas vezes referida como keylogging ou captura de teclado , é a ação de gravar (ou registrar) as informações escritas em um teclado, normalmente de uma forma encoberta de modo que a pessoa que usa o teclado não tem conhecimento de que suas ações estão sendo monitoradas. Ela tem usos no estudo da interação humano-computador. Existem vários métodos keylogging, que vão desde hardwares e abordagens baseadas em software até análises de acústica.

Comecei a procurar no google sobre keyloggers e acabei descobrindo que é realmente muito fácil capturar o que está sendo digitado no teclado. Partindo do princípio que estamos no Windows, nós temos duas dlls a nossa disposição, sendo elas a user32 e a kernel32. Com isso, nós podemos receber um evento sempre que uma tecla for pressionada no teclado.

Continuar lendo

Entity Framework 6 Code First

Resolvi escrever esse post sobre code first com o Entity Framework pois faz um tempo que trabalho com o EF, porém nunca dei a atenção devida a ele. Em meus projetos pessoais ou estudos, sempre dei prioridade ao NHibernate, porém, como praticamente em todos os projetos que tenho trabalhado utilizam o EF, resolvi falar um pouco sobre ele.

O Entity Framework Code First é uma maneira de você se preocupar primeiramente com o seu domínio, modelando as suas classes, etc. e depois delegar ao EF que monte o banco de dados para você. Para isso você poderá seguir por dois caminhos. O primeiro é o Data Annotation, onde dentro da sua classe, você irá anotar a sua classe e suas propriedades através de Annotations indicando nomes de tabela, nomes das colunas, índices, FK, PK, etc. Eu particularmente não gosto muito de trabalhar desta maneira pois eu acho que ele deixa a classe menos legível. A partir dai vamos para a segunda opção, que é utilizarmos o fluent api para realizar nossos mapeamentos (quando necessário). Vamos ver um exemplo da diferença entre utilizar dataannotation e fluent api.

Continuar lendo