Mar 17 10

ConnectionDetails.info :: Information About Your Connection

escrito por João Pedro Pereira

Hoje, dia 17 de Março de 2010, lanço uma primeira versão “estável” de um serviço que já corre à algum tempo no dominio ConnectionDetails.info.

Este serviço pretende dar informações precisas relativas ao browser bem como algumas características da ligação do utilizador. Numa primeira fase as informações disponíveis são:

  • IP
  • Browser
  • Sistema Operativo
  • De onde veio o utilizador (Referrer)
  • Porta que está a ser usada para efectuar a ligação
  • Velocidade da ligação

Ainda existem alguns bugs quer na aquisição de informações quer no design. Agradecia que fosse feito o report das falhas encontradas e imprecisões.

No futuro pretendo lançar uma versão mais precisa a identificar as informações, bem como adicionar funcionalidades como tentar descobrir qual os routers por trás da ligação, identificar características especificas do browser como as versões de JavaScript suportadas, CSS, versão do Java e do Flash em utilização, etc. Uma outra funcionalidade é o fetching das bases de dados de vulnerabilidades existentes online de forma a encontrar falhas de segurança para a versão dos software instalados.

Agradeço desde todo o suporte que possam dar em especial ao nível de sugestões de funcionalidades, bug catching, criticas/comentários e divulgação.

Mar 8 10

Vulnerabilidades Site Novas Oportunidades

escrito por João Pedro Pereira

Já há algum tempo que tenho andado a investigar sites nacionais em busca de falhas de segurança e quase todos as têm, as mais frequentes são as falhas XSS mas também é muito comum encontrar falhas de SQL Injection.

Hoje tive acesso através de um tweet do Público (http://bit.ly/aU0kuy) à informação de que o site das Novas Oportunidades tinha sido explorado e alterado por  alguém… Decidi então enquanto era tempo verificar as falhas que existiam no site e qual o meu espanto (not) quando vejo presentes falhas de XSS, falhas de SQL Injection e falhas de validação de parâmetros que permitem Impersonation Attack através de injecção de URL.

O ataque relatado pelo público foi feito através de SQL Injection possivelmente na página seguinte pois esta está totalmente aberta a ataques deste género: http://testemunhos.novasoportunidades.gov.pt/detalhe_video.aspx

O ataque que referi relativo a problemas de validação de parâmetros que permitem injecção de URL: http://www.novasoportunidades.gov.pt/outerFrame.jsp?link=http://joaopedropereira.com/blog/

Com alguma imaginação pode-se fazer alguns ataques interessantes a partir daqui…

Na pesquisa também podemos facilmente fazer ataques de XSS (Cross Site Scripting) como referi anteriormente: http://www.novasoportunidades.gov.pt/np4/q?q=%3Cscript%3Ealert%28%22The+Blog+of+a+WebDeveloper%22%29%3C%2Fscript%3E

Isto mostra a preparação e conhecimentos ao nível de segurança informática que os WebDevelopers que o estado contrata têm… Atenção este não é o único site governamental com problemas graves de segurança, existem mais e talvez que transaccionem dados mais importantes…

Nota: Este post não tem como intuito incentivar qualquer tipo de ataque informático, pretende apenas informar e alertar para os problemas informáticos que podem surgir num futuro nas infraestruturas governamentais (e não só). É importante ter as nossas plataformas o mais seguras possíveis, para não sermos surpreendidos um dia.

EDIT

As falhas estão a ser corrigidas, quase completas por isso para registo futuro adicionei screenshots das falhas. É também de valor ler e participar nos comentários a este post que estão a dar uma boa análise do Web Development nacional.

EDIT 2

Governo desmente ataque informático: Portal Novas Oportunidades não foi alvo de ataque informático . Provavelmente precisam que venha algo abaixo e que cause danos a muitas pessoas para admitirem os erros…

Feb 26 10

Super Blog Awards

escrito por João Pedro Pereira

E já começou a fase de Votação para o Super Bock Super Blog Awards, onde serão eleitos os melhores blogs de Portugal e de Angola em diversas áreas como a que está este blog inscrito Tecnologia.

Como é que podem votar no meu blog?

Fácil: basta clicar no dístico de participação, que colocaste no teu blog aquando da fase de inscrição. Em alternativa, podes pesquisar no site pelo nome do blog ou autor, e aceder ao perfil de cada blog no site Super Bock para registares o teu voto.

Preciso de estar registado no site Super Bock para votar?

Sim. O registo é necessário para evitar situações de fraude na votação, assegurando que os blogs têm uma justa classificação e são avaliados de forma autêntica.
Para quem ainda não é registado, tem ainda a vantagem de poder participar nos futuros passatempos Super Bock, de música a cinema e outras oportunidades.

Feb 22 10

Processamento Paralelo com xargs

escrito por João Pedro Pereira

Com processadores multi-core semi-parados na maior parte das nossas tarefas e com a necessidade de processar grandes quantidades de informação / ficheiros é importante aproveitar toda a potencialidade de todos os núcleos.

Nos sistemas Unix (neste caso testei num sistema Linux com a distro Ubuntu) é possível separar uma tarefa em vários processos de forma a que a tarefa seja distribuida por mais que um núcleo do processador (no caso dos processadores multi-core) e por vários processos (jobs) que podem ser executados em simultâneo não dependendo que o primeiro acabe para executar o segundo podendo ter vários a correr ao mesmo tempo aumentando assim a performance da acção.

Este comando suporta a opção -P com a qual podemos especificar a quantidade de processos (jobs) a correr em paralelo.

$ man xargs
(...)
 --max-procs=max-procs
-P max-procs
Run  up  to max-procs processes at a time; the default is 1.
If max-procs is 0, xargs will run as many processes as possible  at a  time.
Use the -n option with -P; otherwise chances are that only one exec will be done.
(...)

Exemplo de Utilização

$ ls . | xargs -P 0 -i -t cp -R {} ../novo/

Decompondo o Exemplo

Listagem dos ficheiros da pasta

$ ls .

Xargs

xargs -P 0 -i -t

“-P 0″ utiliza o número máximo de processos
“-t” verbose mode activo

Cópia

cp -R {} ../novo/

“-R” copia de forma recursiva as pastas existentes
“{}” existe devido ao parâmetro “-i” do comando xargs utilizado, que corresponde a cada ficheiro/pasta que queremos copiar
“../novo” pasta de destino

Mais exemplos

Apagar todos os ficheiros com a extensão pdf

find ./ -name "*.pdf" | xargs -t -Istr rm str

Converter ficheiros pdf (.pdf) para ficheiros de texto simples (.txt)

find ./ -name "*.pdf" | xargs -Istr pdftotext str

Nestes exemplos podem acrescentar sempre a opção “-P x” em que x é o valor de processos que querem a correr em paralelo, em algumas situações permite-nos aumentar a performance do processamento através da resolução de tarefas em paralelo como veremos a seguir.

Testes de Performance

:~/teste$ ls
teste1  teste2
~/teste$ ls teste1/ | wc
33      58    1036
~/teste$ ls teste2/ | wc
33      58    1036

~/teste$ time find ./teste1/ -name "*.pdf" | xargs -Istr pdftotext str
real	1m9.805s
user	0m44.795s
sys	0m6.564s

~/teste$ time find ./teste2/ -name "*.pdf" | xargs -P 6 -Istr pdftotext str
real	0m39.911s
user	0m44.523s
sys	0m6.304s

Utilizando exactamente os mesmos ficheiros vemos alguma diferença a executar a mesma operação com e sem processamento distribuído da tarefa, que é realizada por diversos processos executados em paralelo.

~/teste$ time find ./teste1/ -name "*.pdf" | xargs -Istr rm str
real	0m0.296s
user	0m0.060s
sys	0m0.088s

~/teste$ time find ./teste2/ -name "*.pdf" | xargs -P 6 -Istr rm str
real	0m0.163s
user	0m0.060s
sys	0m0.084s

Novamente podemos verificar um aumento na performance das acções com o processamento em paralelo.

Outras utilizações

Além destas tarefas que foram mostradas em cima digamos, do dia-a-dia de qualquer utilizador de um sistema Unix que tenha descoberto as maravilhas da consola, podem ser destacadas utilizações mais direccionadas a áreas de trabalho:

  • utilização do xargs em conjunto com o ping para detectar vários hosts simultaneamente diminuindo o tempo de espera para grandes pesquisas
  • utilização do xargs em conjunto com o nmap. O nmap nos scans não utiliza muita bandwidth para não ser detectado e então podemos fazer scan a mais que um host em simultâneo aproveitando as capacidades da ligação e da máquina
  • conversão de discografias completas ou de albuns inteiros de fotos

Mais ideias diferentes?

Man Pages

$ man cp
$ man rm
$ man xargs
$ man ls
$ man find

Jan 20 10

Parsing de IP utilizando PHP+REGEX

escrito por João Pedro Pereira

No meio de época exames/frequências e muito trabalho arranjei um bocado de tempo para colocar aqui o último snippet que escrevi para fazer parsing de um ficheiro que contém uma lista de IP’s e portas onde correm serviços de proxy.
Isto porque ando a experimentar configurações mais avançadas em ferramentas como o proxychains que nas suas configurações exigem um esquema especifico para proxys.

Syntax necessária: http ip porta
Syntax do ficheiro: ip:porta

Snippet

$url = 'http://blackhatbootcamp.net/proxies/data/ultimate_proxies.txt';

	preg_match_all('/[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\:[0-9]{2}/', file_get_contents($url), $matches); 

	$size=sizeof($matches[0]);
	foreach($matches as $var) {
		for($i=0; $i< $size; $i++)
			echo preg_replace('/(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3}):(\d{2})/', "http $1.$2.$3.$4 $5<br/>", $var[$i]);
	}

Sei que python e PERL têm uma grande capacidade de utilização de REGEX, se andarem por aí conhecedores do assunto podem partilhar os snippets aqui ;)

Jan 16 10

EasterEgg – Windows “God Mode” Console

escrito por João Pedro Pereira

Foi descoberto um Easter Egg no Windows 7 e no Windows Vista 32-bit a que se chamou de “God Mode console” (GMC).

O porquê deste nome? Porque facilita a tarefa a qualquer administrador de sistemas fazer a configuração e manutenção de um computador com instalada uma das versões afectadas. Pois coloca numa só “pasta” a possibilidade de alterar todas as definições do Windows sem ser necessário andar a navegar em dezenas de menus como acontece nos painéis de administração do Windows Vista e Windows Seven. É tudo directo, e não passa de uma janela do explorer contendo uma listagem completa de todas as páginas do painel de controlo.
Segundo foi relatado o GMC não mostra as configurações “escondidas” / “secretas”, a melhor maneira de alterar essas configurações continua a ser executar ncpa.cpl no menu iniciar onde permite procurar programas e ficheiros.

Como entrar em “God Mode”

  1. Criar uma pasta no computador ou num dispositivo de armazenamento amovível se pretender utilizar em mais que um computador
  2. Dar o nome de xpto.{ED7BA470-8E54-465E-825C-99712043E01C} onde xpto pode ser um nome qualquer.

Sistemas Operativos em que Funciona

  • Windows 7 x64
  • Windows 7 x86
  • Vista x86
  • Windows Server 2008 R2 Standard Edition
  • Windows Server 2008 x86

Também funciona em Vista x64 mas necessita de algumas alterações para que o explorer não crashar.

UPDATE

Encontrei uma lista de mais algumas maneiras de criar atalhos para ferramentas especificas relativas a administração em windows:

Printers: {2227A280-3AEA-1069-A2DE-08002B30309D}
Control panel: {305CA226-D286-468e-B848-2B2E8E697B74}
Dial-up networking: {992CFFA0-F557-101A-88EC-00DD010CCC48}
Scheduled tasks: {D6277990-4C6A-11CF-8D87-00AA0060F5BF}
Folder options: {6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}
Dial-Up Networking: {992CFFA0-F557-101A-88EC-00DD010CCC48}
Scheduled tasks: {D6277990-4C6A-11CF-8D87-00AA0060F5BF}
Taskbar and startmenu: {0DF44EAA-FF21-4412-828E-260A8728E7F1}
Microsoft FTP folder {63da6ec0-2e98-11cf-8d82-444553540000}
Temporary Internet files {7BD29E00-76C1-11CF-9DD0-00A0C9034933}
ActiveX Cache folder {88C6C381-2E85-11D0-94DE-444553540000
Subscriptions folder {F5175861-2688-11d0-9C5E-00AA00A45957}
History {FF393560-C2A7-11CF-BFF4-444553540000}

Jan 7 10

Trabalhando com jQuery e MooTools ao mesmo tempo

escrito por João Pedro Pereira

jQuery & MooToolsHoje estava a melhorar a área de administração para o portal de um cliente que será brevemente lançado, e deparei-me com o problema… Tinha um plugin desenvolvido em jQuery e outro em MooTools que queria ver integrado na mesma página.

Explicação do Porquê do Erro Acontecer

O símbolo ‘$’ é usado como objecto pela jQuery e também pela MooTools, logo existe interferência.

Se chamarmos primeiro a jQuery ela vai correr e criar um objecto chamado ‘$’ com as funções especificas para jQuery, de seguida, chamamos a MooTools que vai criar o seu o objecto também chamado ‘$’ com as funções especificas da MooTools.

A Solução

Depois de alguma pesquisa consegui solucionar o problema e ter os dois a funcionar correctamente no mesmo local, apesar da solução mais vista: jQuery.noConflict(); não funcionar no meu caso.

A solução passou por pegar nos ficheiros de funções jQuery e alterar todos os ‘$’ para ‘jQuery’, porque é a mesma coisa chamar uma função através do objecto ‘$’ quer através do objecto ‘jQuery’, pois o objecto ‘$’ é apenas um shortcut para ‘jQuery’.

Depois a ordem que utilizei para chamar as bibliotecas em si foi a jQuery primeiro e de seguida a MooTools.

Jan 7 10

Maior Edificio do Mundo 828 metros – Inauguração do Burj Khalifa

escrito por João Pedro Pereira

O Maior Edifício do Mundo fica no Dubai e foi inaugurado dia 4 de Janeiro de 2009.

A altura oficial da torre, baptizada de Burj Khalifa, é de 828 metros.

“Mohamed Alabbar, Presidente do Conselho da Emaar Properties, disse que a torre representa um símbolo de esperança para o mundo árabe e um brilhante exemplo da realização humana.”

Simplesmente impressionante a inauguração deste edifício, está belíssima e de uma coordenação dos vários constituintes, som, água, luz e fogo de artificio fenomenal.

Impressionante não concordam?

Dec 29 09

Configurar SSH para Diferentes Usernames

escrito por João Pedro Pereira

Neste post o serão abordadas ligações por SSH, Secure Shell ou SSH que é além de um programa, um protocolo de rede que permite a ligação a outra máquina. Possui as mesmas funcionalidades do telnet, no entanto, tem a vantagem de ter a ligação encriptada. E é hoje uma ferramenta utilizada diariamente por SysAdmins (administradores de sistemas) ou por qualquer pessoa que tenha a necessidade de se ligar a um computador remotamente.

How SSH works

Esta dica é especialmente importante para aqueles que utilizam a linha de comandos em sistemas Linux e não aplicações como o Putty, por exemplo.

Para aqueles que precisam de se ligar por SSH a máquinas com diferentes credenciais, existe uma alternativa ao

$ ssh -l joaopedropereira maquina.dominio.com

Podemos configurar o SSH para que para cada domínio determine diferentes credenciais e configurações.

Exemplo Ficheiro: ~/.ssh/config (pode ser necessário criar)

Host *.fe.up.pt
User login_feup

Host 192.168.1.150
Compression Yes
User login_deskop

Host *.remote.shell.com
User  xpto

Existem imensas opções para configurar a ligação, só é preciso dar uma vista de olhos aos man files
ssh_config, por exemplo:

$ man ssh_config

Para mim é extremamente útil isto. Espero que a dica seja útil para vocês ;)

Dec 27 09

Criar Servidor Rapidamente com Python e SimpleHTTPServer

escrito por João Pedro Pereira

Alguma vez tiveram a necessidade de disponibilizar conteúdo de uma máquina urgentemente através de HTTP, mas não tinham a mínima vontade de estar a configurar um servidor ?

Eu tive este Natal… Felizmente tinha o python instalado na minha máquina e por isso o assunto foi resolvido facilmente utilizando o módulo SimpleHTTPServer.

$ python -m SimpleHTTPServer 8888

O que este comando vai fazer é criar um servidor no vosso endereço de IP na porta 8888 (podem escolher a porta que quiserem desde que não esteja já ocupada). E a pasta que vai ser o vosso root do servidor é a pasta em que executam o comando.

Se quiserem criar um servidor para a pasta das vossas musicas:

~$ cd Music/
~/Music$ python -m SimpleHTTPServer 8888

É porreiro, não é?