Hoje vamos recordar o método Rnd do VB .NET e mostrar um programa usando a força bruta para quebrar senhas simples. |
Neste programa vou usar o método Rnd() do VB. NET que retorna um número aleatório do tipo Single. Este método retorna um valor menor que 1, mas maior que ou igual a zero.
Antes de chamar o método Rnd, use a instrução Randomize sem um argumento para inicializar o gerador de números aleatórios com uma semente com base no temporizador do sistema.
Para produzir inteiros aleatórios em um determinado intervalo, use a fórmula a seguir.
valorAleatorio = CInt(Math.Floor((upperbound - lowerbound + 1) * Rnd())) + lowerbound
Onde :
Atenção, como a instrução Random e o método Rnd iniciam com um valor de semente e geram números que se enquadram dentro de um intervalo limitado, os resultados podem ser previsíveis por alguém que conheça o algoritmo usado para gerá-los. Logo não devem ser usados para gerar números aleatórios para uso em criptografia.
Nosso programa também vai usar um controle Timer, e, o objetivo básico do controle Timer é permitir que o seu código seja executado a um certo intervalo com base em períodos de tempo. Se o controle estiver ativo ele irá acionar o evento Tick a intervalos regulares que você pode definir. Você então deve inserir o código no evento Tick para executar a operação que você deseja que seja executada nos intervalos definidos.
O controle Timer não possui uma interface visível em tempo de execução, somente em tempo de desenho. A seguir um resumo para usar o controle Timer:
Insira o controle no formulário e configure as seguintes propriedades:
Enabled igual a True para ativar o controle
Atribua um valor a propriedade Interval (em milisegundos - 1000 ms é igual a 1s) que deseja entre os eventos
Finalmente para calcular o tempo gasto para quebrar a senha vamos usar a classe StopWatch.
A classe Stopwatch fornece um conjunto de métodos e propriedades que você pode usar para medir de uma maneira mais precisa o tempo transcorrido. Ela é muito útil para calcular o tempo que foi gasto entre dois intervalos de tempo em uma aplicação VB .NET.
Para usar o objeto Stopwatch você precisa chamar o seu método Start para iniciar a contagem do tempo; o método Stop interrompe a contagem. O método Reset é útil para limpar a contagem do tempo iniciando o contador.
Recursos Usados
Criando o projeto Windows Forms
Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem VB .NET e o template Windows Forms App (.NET Framework).
Informe um nome a seu gosto. Eu vou usar o nome QuebrandoSenhas;
No formulário Form1 do projeto inclua os seguintes controles a partir da ToolBox:
Disponha os controles conforme o leiaute da figura abaixo:
No início do formulário declare as variáveis abaixo:
Dim senha As Single
Dim senhaHackeada As Single
No evento Load do formulário inclua o código que atribui um valor
inicial à senha:
No botão Login inclua no evento Click o código abaixo que atribui a senha informada à variável senha e habilita o Timer e torna visível a Label e o TextBox:
Agora no evento Tick do controle Timer temos o código que usando o método Rnd gera combinações de números aleatórios e verifica se são iguais à senha informada:
Usamos também a classe StopWatch para calcular o tempo gasto no processo via método Elapsed.
Executando o projeto e iremos obter:
Informando a senha 123 e clicando no botão Login veremos que em poucos segundos , via força bruta, conseguiremos acessar a senha:
É óbvio que o programa é bem ingênuo e que estou usando uma abordagem a mais trivial possível, mas acredite se quiser, ainda existem pessoas que usam número de telefones e data de nascimento como sua senha pessoal.
Se fizemos isso usando um código que qualquer iniciante pode fazer, em uma máquina com mínimo poder de processamento, imagine o estrago que um expert no assunto, usando uma máquina com alto poder de processamento, pode fazer.
Pegue o projeto completo aqui : QuebrandoSenhas.zip
"Como está escrito : Não há um justo, nem um sequer."
Romanos 3:10
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
VB .NET - O Calculando o CheckSum para um arquivo - Macoratti
C# - Login com SQL Server Compact e Hash com SHA256 - Macoratti
Mini-Curso : Criptografia na plataforma .NET - Aula 1 - Macoratti