VB .NET  -  Como hackear uma senha - II


 Hoje vamos recordar o método Rnd do VB .NET e mostrar um programa usando a força bruta para quebrar senhas simples.

Continuando a primeira parte do artigo vamos criar um projeto VB .NET bem simples para mostrar que até mesmo um iniciante pode quebrar um senha fraca.

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 :

  • upperbound - é o número mais alto do intervalo
  • lowerbound - é o número mais baixo do intervalo

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:

  • 1 Label - lblMsg
  • 1 Label - Informe a Senha
  • 1 TextBox - txtSenha, 
  • 1 Button - btnLogin
  • 1 TextBox - txtSenhaHackeada
  • 1 Timer - Timer1

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:


José Carlos Macoratti