02 julho 2009

Desbloqueio passo-a-passo do iPhone 3G com OS 3.0

1) Atualize seu iTunes para a versão 8.2
2) Conecte seu iPhone ao computador e, via iTunes, atualize-o para a versão 3.0 do iPhoneOS
3) Baixe a imagem modificada do iPhoneOS 3.0 que inclui o Jailbrake, o Cydia e o Icy, além de outras customizações, de: http://www.blogsdna.com/3713/download-iphone-os-30-software-update-ipod-touch-30-build-7a341.htm ou http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6578.20090617.VfgtU/iPhone1,2_3.0_7A341_Restore.ipsw
4) Baixe o "redsn0w", programa instalador do Jailbreak (imagem do SO baixada no ítem anterior) de: http://torrents.thepiratebay.org/4965034/redsn0w-win_0.7.zip.4965034.TPB.torrent
5) Desligue seu iPhone e conecte-o ao computador através do cabo USB, com o iTunes fechado. Lembre-se, antes de continuar, o iTunes não deve estar carregado, seu iPhone deve estar desligado e conectado ao computador pelo cabo USB
6) Extraia o redsn0w e execute-o. O primeiro passo é informar o caminho onde se encontra a imagem do iPhoneOS com o Jailbrake. Em seguida, informar quais os instaladores de software quer que sejam instalados: Cydia ou Icy (na dúvida, selecione ambos). Agora vem uma sequência importante: você será solicitado a pressionar (e manter pressionado) o botão "Start" do iPhone por 5 segundos, com o botão Start pressionado, pressionar também o "Home" por 10 segundos, soltar o Start e manter o Home pressionado por mais 30 segundos ou até o iPhone reiniciar.
7) Agora é só aguardar o processo continuar automaticamente e, após mais um reboot, seu iPhone já estará com o Jailbreak instalado na versão 3.0 do OS, o que significa que é possível executar programas não homologados pela Apple. Mas o aparelho ainda está (se foi comprado assim) bloqueado pela operadora de origem, aceitando apenas os SIMs dela.
8) Para desbloquear, em seu iPhone acesse o Cydia ou Icy e cadastre o repositorio "demo666.ultrasn0w.com". Depois de cadastrado, faça uma pesquisa pelo pacote "ultrasn0w e instale-o. Reinicie seu iPhone e ele já estará desbloqueado, aceitando SIMs de qualquer operadora.


--Fonte: http://www.blogsdna.com/3718/how-to-jailbreak-iphone-3g-30-with-quickpwn-on-windows-mac.htm
--Agradecimentos: À equipe DevTeam (blog.iphone-dev.org) e à comunidade de entusiastas.

Creative Commons License
Blog Coleção de Idéias by Rogério Pimenta is licensed under a Creative Commons Atribuição-Compartilhamento pela mesma Licença 2.5 Brasil License.
Based on a work at colecaodeideias.blogspot.com.
Permissions beyond the scope of this license may be available at http://wiki.creativecommons.org/FAQ.

30 janeiro 2009

Como conter e excluir o vírus Conficker/Downadup

Trabalho em um uma instituição pública de médio porte (aproximadamente 1.000 usuários) e esta semana tomamos um grande susto: descobrimos uma contaminação massiva das estações de trabalho de nossa sede pelo vírus Conficker (variações A e B), também identificado como Downadup por alguns anti-virus. Essa rede é composta por um domínio de Active Directory com aproximadamente 450 estações de trabalho com Windows XP SP2 e uns 10 servidores com Windows Server 2003, dentre eles 2 controladores de domínio.

Notamos a contaminação através do constante bloqueio de contas (account lockout) de usuários, mesmo daqueles que já estavam logados ou dos que nem mesmo estavam presentes. Mesmo após desbloquear as contas, em pouco tempo o bloqueio acontecia novamente. Isso ocorre porque o vírus gera um ataque de força bruta contra a senha dos usuários do AD em cada máquina em que se instala.

Dentre as várias formas de se disseminar, uma delas é através da exploração de uma vulnerabilidade no serviço do servidor do Windos, relatada pela Microsoft em outubro de 2008 no boletim MS08-067. Como tínhamos muitas máquinas onde o Hotfix indicado no boletim ainda não havia sido aplicado a exposição foi maior, embora mais tarde descobrimos que nem mesmo a aplicação do Hotfix sozinho seria suficiente para resolver o problema.

Depois de muita pesquisa, com o envolvimento e colaboração de toda a equipe de infra-estrutura de TI, conseguimos conter a disseminação e começar a remover o vírus com as seguintes medidas:

  1. Baixar do site da Microsoft os Hotfixes KB950582 (disable autorun) e KB958644 (boletim MS08-067) para Windows XP em português brasileiro e salvá-los em sua rede;
  2. Baixar também uma ferramenta de varredura e limpeza específica para o Conficker/Downadup ou mesmo uma genéria para malware (como a Ferramenta de Remoção de Software Mal-intencioando da Microsoft). Aqui utilizamos a da Symantec, embora haja também a da F-Secure;
  3. Editar o objeto GPO de seu domínio do AD e em Configurações de Computador\Configurações do Windows\Scripts\Inicialização clicar no botão "Mostrar Arquivos" e criar um novo arquivo de texto. Renomear o arquivo para algum nome com a extensão .cmd ou .bat, editar o arquivo e inserir nele um conteúdo similar ao seguinte:
  4. @echo off
    :: Script para instalar atualizacao contra vulnerabilidade do boletim MS08-067 / Virus Conficker.B

    if exist c:\ms08-067.txt goto noautorun
    Set datahora=%date:~4,2%/%date:~7,2%/%date:~10,4%-%time:~0,-3%
    echo Instalando o hotfix WindowsXP-KB958644-x86-PTB.exe em %datahora% >> c:\ms08-067.txt
    \\sede-dc01\netlogon\WindowsXP-KB958644-x86-PTB.exe /quiet

    :noautorun
    if exist c:\noautorun.txt goto clear
    Set datahora=%date:~4,2%/%date:~7,2%/%date:~10,4%-%time:~0,-3%
    echo Instalando o hotfix WindowsXP-KB950582-x86-PTB.exe em %datahora% >> c:\noautorun.txt
    \\sede-dc01\netlogon\WindowsXP-KB950582-x86-PTB.exe /quiet


    :clear
    if exist c:\fixdownadup.log goto fim
    Set datahora=%date:~4,2%/%date:~7,2%/%date:~10,4%-%time:~0,-3%
    echo Inicio da execução do Fixer Symantec em %datahora% >> c:\fixdownadup.log
    \\sede-dc01\netlogon\FixDownadup.exe /s /log=c:\fixdownadup.log
    Set datahora=%date:~4,2%/%date:~7,2%/%date:~10,4%-%time:~0,-3%
    echo Fim da execução do Fixer Symantec em %datahora% >> c:\fixdownadup.log

    :fim

  5. Depois de salvar o arquivo e fechar a janela de conteúdo da pasta que continha o arquivo, clique na janela de "Propriedades de Inicialização" no botão Adicionar e depois Selecionar e selecione o arquivo que acabou de criar na lista mostrada. Feche a janela de Adicionar Script com OK e também a de Propriedades de Inicialização.
  6. Agora, ainda na GPO do domínio, em Configurações do Computador expanda Administrative Templates\Sistema e clique sobre Scripts. Habilite a política de "Execução Assíncrona de Scripts de Inicialização".
  7. Expanda Recuperação do Sistema e habilite as ambas as políticas existentes nesta pasta (Desligar a Recuperação do Sistema e Desligar a Configuração).
  8. Agora minimize (clique sobre o sinal de menos) as Configurações de Computador e expanda as Configurações de Usuário e em seguida selecione Sistema e habilite a política "Desabilita Autoplay"
  9. Finalmente, copie os arquivos baixados e mencionados em seu script para a pasta compartilhada NetLogon. O caminho real desta pasta é o seguinte (supondo que o seu sistema operacional esteja instalado no drive C) : "C:\Windows\Sysvol\Sysvol\seudomínio\scripts"
O resultado desta sequência de passos (depois, é claro, que as políticas tenham sido distribuídas e aplicadas a todos eles pelo AD) é que você terá desabilitado a restauração do sistema e execução automática de mídias removíveis em todos os seus computadores. Após o reinício dos computadores será executado um script antes do logon dos usuários que se encarregará de aplicar os Hotfixes do boletim MS08-067 (vulnerabilidade explorada pelo vírus) e contra a falha de aplicação da política que desabilita o Autorun. Na sequência será executada uma varredura (com limpeza, caso encontre ocorrências) silenciosa em busca do vírus.

Finalmente, nem mesmo tudo isso pode garantir a completa remoção do vírus ou a sua reinfestação, sendo estas apenas medidas para tentar conter seu alastramento e facilitar sua remoção. Portanto, é necessário manter um bom anti-vírus ativo e atualizado, configurado para varredura sob demanada, além de manter todas as atualizações do sistema operacional rigorosamente em dia (no meu caso, vou colocar ainda hoje para funcionar um servidor WSUS que já estava instalado mas ainda inativo).

Algumas informações que nos ajudaram até aqui foram encontradas em:
http://www.ca.com/us/securityadvisor/virusinfo/virus.aspx?id=76852
http://support.microsoft.com/kb/962007
http://blogs.technet.com/risco/archive/2009/01/09/mantenha-as-esta-es-atualizadas-para-proteger-se-contra-o-win32-conficker-b-ms08-067.aspx
http://vil.nai.com/vil/content/v_153464.htm
http://www.symantec.com/business/security_response/writeup.jsp?docid=2009-011316-0247-99

Boa sorte!!!

21 janeiro 2009

Backup e restauração de MBR e Partition Table

Dê o boot com uma distribuição Live-CD de Linux e em uma console de texto (shell) execute o seguinte:

Backup
dd if=/dev/sda of=/tmp/backup.mbr bs=512 count=1

Restore
dd if=/tmp/backup.mbr of=/dev/sda bs=512 count=1

Restaurar somente o MBR, sem a Partition Table
dd if=/tmp/backup.mbr of=/dev/sda bs=446 count=1

18 setembro 2006

Resolvendo o problema de falta de espaço em partições Linux

Para aqueles casos desesperadores em que se percebe tarde demais que a partição onde está montada o "/var" foi subdimensionada e os serviços do sistema começam a parar por falta de condições de gravar seus dados temporários e logs, existe solução.... ;)

Esta pode não ser a solução mais "ortodoxa", alguns podem até chamá-la de "lusitana" (com o perdão dos irmãos além-mar), mas o importante é que funciona!!

O único requisito indispensável é que se tenha espaço em disco que possa ser utilizado para uma nova partição, e que este espaço seja maior que aquele que o diretório em questão já consome (óbvio). Aqui, pode-se considerar válido: espaço no próprio disco que ainda não foi utilizado por nenhuma partição (não particionado), que já esteja em uso por uma partição dispensável (jogue fora aquele Windows que você mantinha guardado por nostalgia), adicionar um novo disco à máquina, etc...

Os passos a executar serão, respectivamente:
  • Criar a nova partição
  • Formatá-la com um sistema de arquivos compatível com o Sistema Operacional
  • Copiar os dados da origem atual (diretório, partição) para a nova partição
  • Alterar o arquivo /etc/fstab para montar o diretório na nova partição de agora em diante (novo ponto de montagem)
  • Rezar 8 padres-nossos e 2 aves-marias
  • Reiniciar a máquina, se for o caso de um diretório de uso so SO, como o "/var" e testar o resultado
  • Estando tudo certo, remover o diretório/partição onde originalmente se encontravam os dados para aquele espaço ficar disponível para outros usos

Transformando isso em comandos:

  • Particionamento:
    • fdisk /dev/hda #Carrega o particionador para o disco IDE (hd) master primário (a)
    • p #Lista as partições existentes no disco
    • d #Deleta partição existente para liberar o espaço da mesma (opcional)
    • 3 #Indica o número da partição a deletar
    • n #Cria uma nova partição no disco
    • p / e #Escolhe entre tipo de partição Primária ou Extendida
    • #Confirma o bloco inicial da partição como sendo o próximo disponível no disco
    • +2048M #Indica um tamanho de 2048Mb/2Gb para a partição
    • w #Sai, gravando as configurações na tabela de particionamento
    • Obs.: Dependendo da máquina, pode ser necessário um reboot para a alteração ser reconhecida
  • Formatar a partição no sistema de arquivos desejado:
    • mkfs -t ext3 /dev/hda3 #Aqui, o parâmetro que segue o -t é o sistema de arquivos
  • Copiar os dados do diretório atual para a nova partição (isso demanda montá-la em algum ponto de montagem temporário):
    • mkdir /mnt/temp
    • mount -t ext3 /dev/hda3 /mnt/temp
    • cp -a /var/* /mnt/temp
    • umount /mnt/temp
    • rmdir /mnt/temp
  • Adicionar a entrada no /etc/fstab (vou usar o exemplo do /var) como a linha a seguir:
    • /var /dev/hda3 defaults 0 2
  • Já rezou?? Então lá vai: /sbin/reboot (ou shutdown -r now)

Configurar o APT para utilizar um servidor proxy (anônimo)

Me sinto um idiota toda vez que esqueço isso, mas como o problema é recorrente, vale anotar:

  • Editar o arquivo /etc/apt/apt.conf e adicionar a ele a linha:
Acquire::http::Proxy "http://ip_do_servidor:porta_do_servidor/";

  • Se necessário, criar um alias para o wget (nunca precisei):
alias "wget=wget -Y on"


Difícil, né??? >:/

Obs.: Se o servidor proxy exige autenticação, basta acrescentar usuario:senha@ antes do IP do servidor (http://usuario:senha@ip:porta/;)

27 julho 2006

Active Directory: usuário não consegue logar, ou loga e não acessa recursos

Essas são duas situações igualmente estranhas, que quebram a cabeça da gente, mas por incrível que pareça têm uma solução extremamente simples!!!

Certa vez um usuário me chamou reclamando que o computador dele naquele dia resolveu não deixá-lo logar de jeito nenhum.... Ele já havia confirmado que não era problema com sua senha nem usuário, já que havia conseguido fazer logon à partir de um outro computador. Fui até lá e constatei que era verdade, até porque também tentei logar com o meu usuário normal e com um usuário equivalente ao administrador do domínio e sempre a mesma resposta: nenhum controlador de domínio está disponível ou não pode ser encontrado.

Em outra situação (outro dia, outra rede), o usuário me informou que conseguia fazer logon na rede, mas não conseguia mapear nenhuma unidade de rede do servidor de arquivos, recebendo a mensagem de que o recurso não estava disponível. Percebi que, estranhamente, o usuário estava realmente logado no domínio correto, com permissões suficientes para o referido acesso, mas não conseguia acessar nenhum compartilhamento no servidor.

Entretanto, em ambas as situações, fazendo logon como usuário local do computador eu conseguia "pingar" o referido controlador de domínio tanto pelo IP quanto pelo nome (o que indica que o DNS não era o problema).

Depois de sofrer um pouco, percebi que o horário dos computadores estava muito diferente do meu... Na realidade, havia pelo menos 1 hora de diferença (1h a mais). Verifiquei então e percebi que o Fuso Horário da estação estava GMT -3, enquanto o servidor e as outras estações estavam com GMT -4. Foi só corrigir o fuso das estações com problemas e reiniciá-las e os problemas sumiram....

MS Active Directory não aplica política de configuração do IE

Ambiente

  • Rede com serviço de diretório Active Directory com servidores Windows 2003 Server e clientes Windows XP (SP2) e Windows 2000 Professional
  • Diversos ítens do ambiente de trabalho gerenciado por Objetos de Políticas de Grupo (GPOs)
  • Perfis de usuário ambulantes e pasta pessoais (home folders) armazenados na rede
  • Árvore do serviço de diretórios com diversos níveis hierárquicos dentro do domínio, definidos por aninhamento de Unidades Organizacinais (OUs)
  • Gerenciamento das GPOs pela ferramenta GPMC (Group Policy Management Console)

Problema

Uma das configurações aplicadas por GPOs aos usuários é a configuração de servidor Proxy no IE (Configurações do Usuário/Configurações do Windows/Manutenção do Internet Explorer/Conexão /Configurações do proxy), que precisou sofrer uma pequena alteração de parâmetros (parâmetro "Excessões"). Acontece que apesar de "aparentemente" a política ter sendo aplicada a todos os usuários do domínio inicialmente, após a alteração ter sido realizada, a configuração dos computadores não a refletia.

Mesmo após forçar a replicação entre os
(02) controladores do domínio, utilizar "gpupdate /force" nas estações de trabalho, reiniciá-las, nada fazia com que a política fosse aplicada de forma a refletir os novos valores do parâmetro alterado. Pior que isso: alterei, numa estação de usuário o parâmetro "Ativar configurações de proxy" para o status "Desabilitado" e executei o "gpupdate /target:user /force" para testar a correta aplicação da GPO e o parâmetro continuou como eu havia deixado, ou seja, a GPO não forçou a mudança do valor para Habilitado, como deveria!!!

Para confirmar se não havia nenhuma corrupção na estrutura do AD ou mesmo das GPOs, e se as mesmas estavam efetivamente sendo aplicadas na estação de trabalho, recorri à opção "Group Policy Results" da ferramenta GPMC e gerei um relatório da aplicação das políticas no computador e usuário atuais. Para minha surpresa, as GPOs esperadas estavam sendo aplicadas sem conflitos ao computador/usuário correto, o que só complicava a situação.


Solução

Após mais alguns testes e investigação, descobri (olhando o relatório Group Policy Results) que havia uma GPO vinculada à Unidade Organizacional na qual o objeto do usuário está cadastrado (OU filha/abaixo do domínio), onde a política "Configurações do Usuário/Configuração do Windows/Manutenção do Internet Explorer/Conexão/Configurações de Proxy" estava sendo aplicada com o valor "Not configured".

Resultado: a política vinculada ao Domínio (nível hierárquico mais alto) aplicava parâmetros de configuração do proxy, depois a política vinculada à Unidade Organizacional (nível hierárquico mais baixo, portanto mais próximo do objeto-alvo) aplicava o valor "Not configured" aos mesmos parâmetros, deixando-os sem configuração nenhuma. O mais estranho é que o valor "Not configured" em uma política de GPO representa "nenhuma alteração" nos valores do parâmetro em questão, respeitando o que já estiver configurado.... (vai entender!)

O importante é que, para resolver o problema, bastou clicar com o botão direito do mouse sobre a política
"Configurações do Usuário/Configuração do Windows/Manutenção do Internet Explorer/Conexão" e selecionar a opção "Redefinir configurações do navegador". Após isso, foi só forçar a replicação entre os controladores de domínio para garantir a equalização dos arquivos, executar o "gpupdate /target:user" e voilá!!!

Mais um problema resolvido ;)


20 julho 2006

Como habilitar VPN (Pass Through) em modems ADSL D-Link DSL-500G

Aproveitando a carona do artigo anterior sobre o estabelecimento de uma VPN Lan-toLan sobre ADSL, vamos supor que do outro lado da internet temos o nosso segundo "endpoint" atrás de um modem ADSL D-Link DSL 500G (Generation II, Versão C1).

Nossa missão então será (novamente) configurá-lo para permitir o repasse "transparente" dos pacotes do túnel VPN a ser estabelecido, respeitadas e lembradas as premissas apresentadas no artigo citado, só pra lembrar:

  • Redirecionar (via NAT) tráfego externo chegando para a porta UDP/500 (ISAKMP) para endereço do "endpoint" do túnel, na mesma porta (UDP/500), na rede interna;
  • Redirecionar (sem NAT/sem alterar cabeçalhos) tráfego externo chegando para o protocolo 50 (ESP) para o endereço do "endpoint" to túnel, na rede interna.
Como fazer:
  1. Através de um computador conectado à mesma rede "interna" onde esteja o modem ADSL (o padrão é que ele venha com o IP 192.168.1.1/255.255.255.0), acessar sua console de administração Web via browser (ex.: http://192.168.1.1). Ao receber o pop-up solicitando usuário e senha, preencher com "admin" em ambos os campos (caso tenha alterado a senha, informar a correta);
  2. No menu Services, acessar a opção NAT e no drop-down NAT Global Info selecionar NAT Rule Entry e acionar o botão ADD;
  3. No formulário a seguir, preencher os campos com (respectivamente):
  • Rule ID = n+1 (n=nr.última regra existente)
  • Rule Flavor = RDR
  • IF Name = ALL
  • Protocol = UDP
  • Local Address From = 192.168.1.x
  • Local Address To = 192.168.1.x
  • Global Address From = 0.0.0.0
  • Global Address To = 0.0.0.0
  • Destination Port From = 500
  • Destination Port To = 500
  • Local Port = 0

Adicionar agora a regra para o túnel ESP (esta regra deve ser mantida "sempre" como a última da lista)
  • Rule ID = n+10 (n=nr.última regra existente)
  • Rule Flavor = RDR
  • IF Name = ALL
  • Protocol = ANY (*)
  • Local Address From = 192.168.1.x
  • Local Address To = 192.168.1.x
  • Global Address From = 0.0.0.0
  • Global Address To = 0.0.0.0
  • Destination Port From = 0
  • Destination Port To = 0
  • Local Port = 0

Ao terminar, ir ao menu Admin, Commit & Reboot e confirmar "Save" com a opção Reboot selecionada no drop-down.

(*) No caso específico deste modem tentei, de todas as maneiras que consegui imaginar, fazer o redirecionamento "apenas" do protocolo desejado (50/ESP), mas apesar do túnel se estabelecer na primeira fase (IKE), não trafegava nenhum pacote na segunda fase (ESP). Então "por acidente" descobri que somente com esta configuração os pacotes da segunda fase passavam. Infelizmente, por causa disso, as informações neste guia funcionaram para mim, mas não podem ser consideradas precisas, portanto, aceito sugestões/contribuições.

Como habilitar VPN (Pass Through) em modems ADSL Alcatel Speed Touch Pro

Tendo a necessidade de estabelecer uma VPN Lan-to-Lan com IPSec*, onde um dos lados (ou até ambos) encontrem-se "atrás" de um modem ADSL Alcatel Speed Touch Pro, deve-se configurá-lo para permitir o repasse "transparente" dos pacotes do túnel VPN a ser estabelecido.

Para isso, deve-se levar em conta que o estabelecimento do túnel requer conexões ponta-a-ponta:
  • Porta UDP 500 (ISAKMP), para o processo IKE (Internet Key Exchange), ou seja, a troca de chaves de autenticação mútua das pontas. Nesta etapa deve-se fazer o NAT do endereço público (externo) do modem para o endereço privado (interno) do dispositivo com o qual o túnel será estabelecido (endpoint);
  • Protocolo nr. 50 (ESP - Encryption Security Protocol), protocolo através do qual é estabelecido o túnel criptografado e por onde trafegam os pacotes. Esta etapa não admite NAT, o que alteraria o cabeçalho (header) dos pacotes e consequentemente comprometeria o processo criptográfico. Portanto, deve-se simplesmente redirecionar todos os pacotes que chegarem à interface externa através deste protocolo para o endereço IP interno do "endpoint".
Como fazer:
  1. Através de um computador conectado à mesma rede "interna" onde esteja o modem ADSL (o padrão é que ele venha com o IP 10.0.0.138/255.0.0.0), acessar sua CLI (Command Line Interface) via telnet (ex.: [host]$ telnet 10.0.0.138). Ao receber o prompt solicitando usuário, deixar em branco e teclar [ENTER], e na senha, informar a senha para logar. Uma senha padrão conhecida nos Speed Touch instalados pela Brasil Telecom é "keycode&senh@01";
  2. No prompt "=>", entrar com os comandos "nat protocol=udp inside_addr=10.0.0.x inside_port=500 outside_addr=0.0.0.0 outside_port=500" seguido de "nat unbind application=ESP" ou "nat unbind application=ESP port=1" ou ainda "nat protocolo=50 inside_addr=10.0.0.x outside_addr=0.0.0.0";
  3. Os comandos não devem retornar nenhuma mensagem e devolver o prompt "=>" após serem confirmados com [ENTER]. O correto deverá ser a combinação do primeiro comando com um dos outros três, sendo incorreto para a sua versão de Modem/Firmware aquele comando que retornar uma mensagem de erro ao ser confirmado;
  4. Salvar a configuração alterada com o comando "config save" de então sair (não há um comando "logout" ou "exit", então saia com [CTRL]+[C] mesmo).

(*) Neste cenário, estou utilizando um túnel IPSec que utiliza apenas IKE+ESP. No caso de utilizar também AH (Authentication Header), acrescentar na segunda etapa (após o ESP), também o redirecionamento do protocolo nr. 51 (AH).

(**) Agradeço à publicação da dica do Luciano no Abusar.org (http://www.abusar.org/manuais/m_alcatel.html) e ao artigo por ele citado (http://www.ozcableguy.com/alcatel.html#vpn), que me serviram de base para este.
 
Creative Commons License
Blog Coleção de Idéias by Rogério Pimenta is licensed under a Creative Commons Atribuição-Compartilhamento pela mesma Licença 2.5 Brasil License.
Based on a work at colecaodeideias.blogspot.com.
Permissions beyond the scope of this license may be available at http://wiki.creativecommons.org/FAQ.