Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Criando uma captcha

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

  • Font Size
    #1

    Tutorial Criando uma captcha

    Como primeiro tutorial ensinarei a fazer captchas igual a essa:

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Para funcionar corretamente é necessário PHP4 ou superior, a biblioteca GD
    E de algumas fontes para dá esse efeito nas letras: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Iremos criar uma página chamada captcha. Php, que gerarar a imagem;
    Para guardar as letras da imagem, usaremos sesions, então no início do código terá:
    Código:
    session_start();
    Agora criaremos uma função chamada captcha, com três argumentos:
    $width, largura da imagem, com valor default 120
    $height, altura da Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... com valor default 40 e
    $ch, quantidade de caracteres na imagem com valor default 5

    Código:
    function captcha($width='120',$height='40',$ch='5') {
    Para que o Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... não confunda os caracteres, criaremos uma váriavel contendo os caracteres possiveis:

    Código:
    $pos = '23456789bcdfghjkmnpqrstvwxyz';
    No caso, retirei a letra l e o número 1, vocês podem escolhar quais querem
    Agora criaremos o código, dando um loop:

    Código:
    $i = 0;
    $code = "";
    while ($i < $ch) { 
      $code .= substr($pos, mt_rand(0, strlen($pos)-1), 1);
      $i++;
    Criaremos a imagem, definiremos o tamanho da fonte, cor do texto,a cor do fundo e a cor dos rabiscos:

    Código:
    $font_size = $height * 0.6;
    $image = imagecreate($width, $height);
    $bg_color = imagecolorallocate($image,240,247,255);
    $text_color = imagecolorallocate($image, 0, 0, 150);<p>$n_color = imagecolorallocate($image, 120, 160, 180);</p><p> </p>
    }
    Agora "riscaremos" a imagem:

    Código:
    for($i=0; $i<($width*$height)/3; $i++){
        imagefilledellipse($image, 
        mt_rand(0,$width), 
        mt_rand(0,$height), 1, 1, $n_color);
    }
    for( $i=0; $i<($width*$height)/160; $i++ ) {
       imageline($image,mt_rand(0,$width),mt_rand(0,$height),
       mt_rand(0,$width),mt_rand(0,$height), $n_color);
    }
    Usaremos mais de uma fonte, criarei um array com as fontes outro
    para guardar qual fonte usar em cada caracter e outro para guardar a
    "altura" do caracter:

    Código:
    $font = array("1.ttf","2.ttf","3.ttf",
                  "4.ttf","5.ttf","6.ttf");
    $rand = array($characters);
    $rand2 = array($characters);
    Medimos onde cada caracter fica, para depois centralizar:
    Código:
    $ii = 0;
    $x = 0;
    $y = $height;
    while($ii < $ch){
      $ver = substr($code,$ii,1);
      $f = mt_rand(0,count($font)-1);
      $rand[$ii] = $f;
      $rand2[$ii] = $x;
      $textbox = imagettfbbox($font_size,0,$font[$f], $ver);
      $y = ($y>($height - $textbox[5])/2) ? 
      ($height - $textbox[5])/2 : $y;
      $x += $textbox[4] + 4;
      $ii++;
    }
    Caso a largura de todos os caracteres seja maior que a largura da imagem, fazemos outra:

    Agora colocamos os caracteres na imagem:

    Código:
    $x = ($width - $x)/2;
    $i = 0;
    while($i < $characters){
      imagettftext($image, $font_size, 0, 
      ($rand2[$i] + $x), 30, 
      $text_color, $font[$rand[$i]], substr($code,$i,1));
      $i++;
    }
    Definimos a imagem como uma png e mostramos ao navegador:
    Código:
    header('Content-Type: image/png');
    imagepng($image);
    imagedestroy($image);
    Agora guardamos os caracteres em um sesion para depois ser verificado:

    Código:
    $_SESSION["seguranca"] = $code;
    Por fim fechamos a função e chamamos ela:

    Código:
    }
    $width = isset($_GET['width']) ? $_GET['width'] : '120';
    $height = isset($_GET['height']) ? $_GET['height'] : '40';
    $ch = isset($_GET['ch']) ? $_GET['ch'] : '5';
    captcha($width,$height,$ch)
    Lembrando, para colocar a captcha na sua pagina coloque:
    Código:
    <img src="captcha.php?width=largura&height=altura&ch=
    quantidade_de_caracteres" alt="" />
    E para verificar se o usuário digitou corretamente, coloqueno início:

    Código:
    session_start();
    E verifique mais ou menos assim:

    Código:
    if($_SESSION["seguranca"] != $POST["campo"]){
    exit("Caracteres incorretos!");
    }
    Fim.
    Créditos indisponíveis.
    Mesmo longe, eu estou perto. Guia do Hacker 4ever.

  • Font Size
    #2
    uhuuhuuhuh


    caraca, ta de parabéns hein exploit ainda vou casar com vc!!

    belo topico abraçoss
    sigpic
    Milorde - Conhecimento não é crime
    Fui útil ? Clique em OBRIGADO


    Milorde & Marissa


    [/CENTER]

    Comment


    • Font Size
      #3
      Existem varios jeitos de se criar um Captcha em php
      esse jeito ai leva muito codigo e codigo grande é perca de tempo ( desde que não haja outra solução ), e tempo é dinheiro...

      não necessariamente necessita da biblioteca GD para imagens para criar um captcha, pode se criar um fundo pequeno riscado no photoshop, e manipular os dados atraves do php, daria na mesma


      bom tutorial
      sigpic
      Faça parte você também pela campanha da vida: Eu cuido da Minha, você cuida da sua!

      Comment


      • Font Size
        #4
        é muito codigo e nao é tbm ..
        o topico fico bom mesmo .
        mas e ai alison , fica a mesma coisa mesmo ?
        flw
        Nao Participa ainda ?
        * Comunidade Elite Defacer


        Elite Defacer
        Hackeralp - 5ubZer0 - $cr34m()

        Comment


        • Font Size
          #5
          Pense assim, o que seria um captcha? apenas uma verificação
          logo podemos criar um codigo em que, gere um numero de tamanho maximo de 5 caracteres ( geralmente se usa 4 ), sobre-escrever sobre uma imagem e fazer a verificação, é perca de tempo fazer o que ele tentou fazer, riscar a imagem com o php, se torna inutil

          e temos que tomar cuidado tambem, que devemos escrever o codigo na imagem, isso o php faz com funcoes simples, pois pode ser manipulado por outro script php se for em html, gerando um captcha inutil, se outro script passa por cima dele, pq nos usariamos ele?

          pelo menos na minha cabeca, a ideia de criar um captcha em forma de imagem é simples, e nao precisar ser um codigo imenso igual tem ai, e cheio de funcoes
          sigpic
          Faça parte você também pela campanha da vida: Eu cuido da Minha, você cuida da sua!

          Comment


          • Font Size
            #6
            @Alison_PC, concordo, esse sistema que o exploit passou, é muito complexo, um captcha q sera util e simples é feito com poucas linhas, q nem o alison falow, tempo é dinheiro, porém o script é bom, mas pode sofrer mudanças para ficar mas leve e continuar com o msm proposito!

            Abraços

            Comment

            X
            Working...
            X