quinta-feira, janeiro 31, 2008

Controlar as portas abertas no sistema

Para controlar as ligações que o computador estabelece e/ou saber as portas que estão a escutar por ligações num sistema Linux:

sudo netstat -tulp

Com este comando obtemos uma listagem das ligações. Este comando já é conhecido pelos utilizadores de windows (não sei se os argumentos serão os mesmos).

Existe outro comando mais complexo mas bastante poderoso na informação que oferece:

sudo lsof -i -n | egrep 'COMMAND|LISTEN|UDP'

Com este conjunto de comandos a informação é mais detalhada e melhor organizada. O comando principal é o lsof. O egrep apenas serve de filtro para o output conter apenas a informação que nos interessa. Este é o meu favorito juntamente com este:

sudo nmap -vO localhost

Este comando é nada mais nada menos que um port scanning à própria máquina. Provavelmente uma das melhores maneiras de saber que portas a máquina tem abertas. O parâmetro O é para tentar adivinhar o sistema operativo que está a correr na máquina, o que é sempre interessante. Além de localhost podem fornecer como argumento o IP da rede interna, se estiverem numa, ou também fornecer o IP externo. De notar que se puserem localhost  ou endereço interno poderão ver portas que externamente não se encontram abertas.

Nota: como já devem ter reparado pelo sudo, todos estes comandos para funcionarem na totalidade necessitam de privilégios root na máquina onde são executados.

quarta-feira, janeiro 30, 2008

Comunicar através do proxy no terminal

Quando uma máquina se encontra atrás de um proxy e é necessário utilizar o terminal para aceder a comandos que utilizam a rede (o apt por exemplo) faz-se o seguinte no mesmo terminal:

export http_proxy="http://username:password@endereco_proxy:porta"
export https_proxy="http://username:password@endereco_proxy:porta"
export ftp_proxy="http://username:password@endereco_proxy:porta"

Esta configuração apenas ficará válidade para a sessão corrente. Assim que o terminal for fechado as configurações perdem-se. Para o caso de necessitarem de manter  essas configurações basta adicionar estas linhas ao ficheiro .bashrc e reiniciar a consola.

segunda-feira, janeiro 28, 2008

Cores no vim em Mac OS X

Para habilitarem as cores do vim (syntax highlighting) no terminal do Mac OS X (qualquer versão deverá funcionar), basta criar na vossa home o ficheiro .vimrc e inserir o seguinte no mesmo:

syntax on

Para mudar o tipo cores (existem cores para fundo escuro e fundo claro, facilitando a visibilidade das mesmas de acordo com o fundo) basta adicionar a seguinte linha ao ficheiro:

set background=dark

Aqui podem colocar dark ou light ao vosso gosto. E finalmente se gostam de programar com o vim podem também habilitar a opção para indentar código:

set autoindent

Agora basta gravarem o ficheiro e abrir o vim no terminal, ele vai ler o ficheiro ao iniciar, e efectuar as configurações definidas :)

PS. Isto também funciona para qualquer sistema *nix.

Mais informação:

domingo, janeiro 27, 2008

Mac OS 10.5 Leopard - Os bugs encontrados


Estes foram os bugs que encontrei ao fim de uma semana de utilização do recente Mac OS 10.5 Leopard, para o qual a Apple já tem previsto um update (10.5.2) com cerca de 450Mb.
  • O primeiro foi logo encontrado na segunda vez que descarreguei por completo a bateria. O Macbook em vez de fazer sleep quando a bateria descarregou, fez shutdown forçado, fazendo-me perder tudo o que estava a fazer. Isto aconteceu cerca de 3 vezes. A partir daí quis poupar a máquina de shutdowns forçados e passei a ligar o carregador assim que o aviso de bateria fraca aparecia. Por mais estranho que pareça, testei um dia mais tarde e não voltou a acontecer até hoje...
  • O segundo, que provavelmente é relacionado com o primeiro, o sistema que indica a carga da bateria não acerta nem por sombras do tempo restante de bateria nem o tempo restante para carregar por completo a bateria. Má gestão de energia por parte do Leopard? Checked. Digo isto porque depois de uma pesquisa encontrei pessoas a queixarem-se do mesmo, tendo apenas acontecido após o upgrade do Tiger para o Leopard.
  • Terceiro, no Thunderbird e Firefox, o ponteiro do rato tem um comportamento estranho ao passar repetidamente por texto. Fica durante uns milisegundos com o dobro do tamanho e desfocado. Além de que o Firefox por si só tem um comportamento pouco fluído, o que para já me faz utilizar o Safari como browser de eleição em Mac OS.
  • Quarto e último, o problema que já tinha referido sobre os ficheiros .dmg não ejectarem e misteriosamente não volta mais a acontecer depois de um reboot.

Este foram os únicos bugs com que me deparei até agora, não são muitos mas os primeiros que mencionei são um pouco graves (mas habituais?) quando se fala de um produto vindo da Apple.

Em relação aos problemas com a bateria no Leopard também existe a possibilidade de o problema ser mesmo da bateria e não do sistema operativo, e por esse mesmo motivo vou estar atento, para no caso de essa possibilidade se confirmar ir direito à loja :)

De resto posso dizer que o Leopard tem coisas muito boas como por exemplo as Stacks, que a vida sem elas já parece mais complicada :D, a Time Machine que apesar de ainda não a ter usado parece-me muito bem conseguida, o Spaces que era algo que eu já procurava à muito no Mac OS (no Tiger tinha uma aplicação parecida, mas esta é muito melhor), e a rapidez de resposta geral do OS. Entretanto também já me habituei à transparência da menu bar e à dock 3D.

Venha de lá esse update!

Irssi + Screen + SSH = IRC em todo o lado

O Irssi é um cliente de IRC open source que corre em modo de texto e consequentemente bastante leve no sistema. Como tal tem sido muito utilizado para ficar a correr 24h por dia numa máquina e acessível exteriormente por SSH.

Como é possível aceder exteriormente ao irssi que temos a correr naquele momento na máquina? Utilizando o comando Screen. O Screen quando chamado com um programa como argumento faz com que esse programa possa ser passado na íntegra para uma sessão remota. Quando digo na íntegra quero dizer que o que fizermos e escrevermos remotamente, está a ser escrito na máquina que corre o programa e pode mesmo ser visto em tempo real.

Mas isto apenas é possível se tiverem instalado um servidor SSH e fizerem port-forwarding da porta no router. Brevemente também irei falar sobre configurar de modo seguro o SSH server.

Passando à prática, o que precisamos então é de ter o screen instalado (já vem por omissão no Ubuntu Gutsy 7.10), precisamos também do irssi e do servidor SSH a correr (como já referi, sobre este falarei noutro post).

Depois de tudo instalado fazemos na linha de comandos:

screen irssi


O programa abre e a partir de agora passa a ser possível aceder à sua utilização remotamente, para isso basta fazermos SSH à máquina e depois assim que aparecer a shell, escrever:

screen -x


E agora sim, estão a ver o irssi tal e qual como ele está a correr no vosso servidor, podendo utilizá-lo. Isto tem várias utilidades e uma delas é poderem utilizar o IRC no trabalho ou na faculdade caso o protocolo seja bloqueado :)

Precisam de correr irssi de forma anónima (como já foi falado para o x-chat no post sobre o tor)? O irssi não suporta proxies SOCKS, mas o tor tem uma ferramenta que resolve o problema:

screen torify irssi


O torify é um simples wrapper que faz com que as comunicações do irssi passem pelo proxy anónimo do tor.

Have "phun"!

sábado, janeiro 26, 2008

Arte para geeks


Este profile do flickr dedica-se a fazer montagens de obras de arte mundialmente conhecidas de modo que sejam facilmente compreendida pelos geeks.
Algumas delas estão hilariantes e até mesmo compreensíveis por non-geeks.

Aqui fica o link para a galeria:
- http://smallr.net/artforgeeks

sexta-feira, janeiro 25, 2008

Ficheiros .dmg que não ejectam no OS X Leopard

Não conseguem ejectar um ficheiro .dmg no Leopard por muito que tentem? Este é um dos muitos bugs do Leopard, e niguém sabe como nem porquê, mas este bug só acontece uma vez e depois desaparece por completo... pelo menos até agora.
Se por muito que cliquem no eject para desmontar um .dmg, ele insiste em ficar no ambiente de trabalho e no Finder basta abrirem um terminal e fazer:

hdiutil detach /Volumes/nome_do_dmg/


E pronto, mais uma vez a linha de comandos resolve :) Assim que tiver tempo vou postar uma "pequena" lista de bugs que tenho encontrado até agora no Mac OS X Leopard (10.5).

Nota: Nalguns casos um reboot também resolve o problema, mas caso não tenham paciência para reboots nem queiram perder muito tempo, a linha de comandos is the way to go!

quarta-feira, janeiro 23, 2008

Gravar CD/DVD na linha de comandos em Linux

Em continuação do post anterior, se quisermos gravar a imagem criada para um CD ou DVD, basta então executar o seguinte comando no terminal:

cdrecord -v -pad speed=1 dev=0,0,0 imagem.iso


Podem omitir o parâmetro dev. Nesse caso é utilizado como destino da gravação o device que estiver na variável ambiente CDR_DEVICE.

segunda-feira, janeiro 21, 2008

Criar e montar ISO's em Linux / Unix

Não esperem que vos vá falar de um programa todo bonitinho clone do Nero que vos faça a papinha toda.
Criar ISO's em Linux é muito mais simples e eficaz utilizando a linha de comandos.

Basta para isso abrir então o dito terminal e utilizar o comando dd. Assim desta forma:

dd if=/dev/dvd of=ficheiro.iso


Mais simples que isto é impossível. O if significa o input file. Em Linux / Unix tudo é considerado um ficheiro, incluindo um cd-rom ou uma impressora. Por isso no parâmetro if é só por o que desejam copiar. O of significa output file ou seja, será a imagem criada do input file. O /dev/dvd é o caminho para o ficheiro que representa a drive de DVD's, isto é se tiverem uma instalada. Poderão também usar /dev/cdrom ou /dev/sda1 (disco), podem ser inúmeras opções.
Com esta simplicidade é possível fazer backups de discos inteiros utilizando este comando.

De seguida podem fazer o mount dessa ISO como se de um CD se tratasse, sem precisarem de gastar um CD. Basta para isso fazer:

mount -o loop -t iso9660 ficheiro.iso /pasta_do_mount


É preciso ter em atenção que a pasta onde vão fazer o mount da ISO tem de existir, caso contrário o comando não funcionará.

sábado, janeiro 19, 2008

Nova aquisição - Macbook Black


Foi desta que fiz o upgrade ao meu iBook G4, que apesar de não ser muito velho (2 anos) já estava a precisar de reforma. Colocar mais memória era uma boa hipótese, mas dada a dificuldade para encontrar memória para um Mac com PowerPC (processador IBM), os seus preços absurdos e também o facto de os novos Macbooks serem máquinas com bons processadores e bastante atraentes, não hesitei muito na altura de comprar.

Depois veio a parte difícil. Escolher a cor do Macbook. Passado muito tempo a decidir e com algum incentivo da minha menina, acabei por escolher a versão em preto, pois já estava farto do branco ao fim de 2 anos a usar o iBook. A diferença de preços só pela cor não se justifica (a versão em preto tem mais 40Gb de disco), mas para a Apple a tinta preta paga-se mais caro :P


Falando da máquina, é bastante boa, o processador core 2 duo 2.2Ghz deixa os G4 a comer pó e 1Gb de ram para já é mais que suficiente para o Leopard deslizar à vontade, mesmo cedendo 144Mb para a gráfica (partilhada). No entanto acho que a Apple podia muito bem deixar de ser "comilona" e colocar os 2Gb por defeito.



Este post já foi escrito no novo brinquedo, e ainda estou em processo de descoberta do Leopard (aquela menu bar transparente... sucks!) e nos próximos dias vai ser para reposição do software que já tinha no iBook.

Nota: curiosamente fiquei a saber que sem o Quicksilver fico um pouco à nora em Mac OS, logo foi a primeira app a ser instalada :)

Mais fotos no meu Flickr: http://flickr.com/photos/rogeriopvl/

sexta-feira, janeiro 18, 2008

XSS - Demonstração em vídeo

Este link vem do blog do professor Miguel Correia do qual já fui aluno na cadeira de Segurança.

Trata-se de um vídeo que mostra como funcionam alguns tipos de ataques XSS, dos quais já tenho falado ao longo deste blog.

E o principal propósito do vídeo é alertar os web developers para algo que nunca é demais realçar: nunca confiar nos dados que vêm do exterior da aplicação, nunca confiar nos inputs dos utilizadores, tratar sempre esses inputs. E isto serve também para os programadores.

Link para o vídeo:
http://smallr.net/inside_xss

xserver-xorg-core - 403 forbidden

Para quem usa Ubuntu, já deve ter reparado que hoje durante a tarde surgiram novos updates e provavelmente obtiveram um erro ao tentar descarregar um dos pacotes, o xserver-xorg-core.

W: Falha ao obter http://security.ubuntu.com/ubuntu/pool/main/x/xorg-server/xserver-xorg-core_1.3.0.0.dfsg-12ubuntu8.1_i386.deb
403 Forbidden


Isto acontece porque foi bloqueado o acesso ao pacote devido a existirem conflitos com alguma aplicações, mais frequente com aplicações Java. Neste momento já está a ser corrigido o problema e não deverá demorar muito até poderem completar o update.

Aqui fica o link para a informação relativa a este problema no launchpad.

quarta-feira, janeiro 16, 2008

SUN compra MySQL

A SUN comprou a base de dados open source mais utilizada no mundo - MySQL - por, imaginem só, 1 bilião de dólares. Isto é um enorme passo para a empresa que assim entra directamente no top do mercado das DBMS e igualmente outro importante passo para o MySQL e o software livre.

Aqui fica o link para a notícia completa:
http://mysql.com/news-and-events/sun-to-acquire-mysql.html

Agora é só esperar que a SUN continue do lado dos "good guys".

terça-feira, janeiro 15, 2008

Macworld sem grandes surpresas


Já terminou a Macworld e parece que um dos grandes rumores sempre se veio a confirmar, estragando um pouco o efeito surpresa.
Macbook Air é o novo brinquedo da Apple e surpreende bastante pelo seu aspecto ultra fino.

Aqui vão as características:

  • 1.3 Kg de peso
  • Multitouch pad
  • 1.6 GHz Standard, 1.8 GHz Option — Intel Core 2 Duo
  • 80 GB hard disk standard ou 64 GB SSD (mais $900)
  • 1.8" Hard Drive
  • 45 Watt MagSafe
  • 1 USB 2.0 port
  • Micro-DVI
  • Audio Out
  • 802.11n + Bluetooth 2.1/EDR
  • Bateria com duração 5 horas
  • 2 GB Memory standard
  • A partir de $1799

Parece-me um preço razoável para um portátil com estas características, dado que outras marcas têm parecidos (não tão finos) por bastante mais.

A falta de drive DVD pode parecer uma grande desvantagem, mas no fundo se formos ver cada vez menos se utilizam. As pens e discos externos vierem tomar conta do armazenamento móvel.

Uma desvantagem certa é o facto de apenas ter uma porta USB, se bem que o conceito deste portátil acenta no uso completo de tecnologias wireless.

Ainda não vi o vídeo da keynote mas pelo que já li soube a pouco, e pessoalmente gostava que o rumor dos Macbook silver fosse verdade.

Vídeos:
- Anúncio do Macbook Air
- Macbook Air guided tour

segunda-feira, janeiro 14, 2008

Macworld 2008

Amanhã por volta das 17h em Portugal iremos saber então que novidades traz a Apple pelo "ar"...

Podem acompanhar em directo os relatos por escrito em www.macworld.com e depois do evento ver os vídeos no site da apple.

domingo, janeiro 13, 2008

Navegar anónimo na internet


Nos dias que correm torna-se cada vez mais importante proteger-mos a nossa identidade online, pelos mais variados motivos. Sendo o principal motivo o facto de ser possível descobrir quem nós somos, de que país e com quem comunicamos. O mecanismo que permite obter tais informações designa-se por análise de tráfego.

A análise de tráfego pode ser utilizada para descobrir quem está a comunicar com quem numa rede pública, conhecer o destino e origem do tráfego, descobrir hábitos e interesses, etc. E isto é possível mesmo que se tomem alguns cuidados como por exemplo cifrar os dados, porque esta informação reside nos cabeçalhos dos pacotes enviados que nunca são cifrados para poderem chegar ao destino correctamente. Podem ler mais informação sobre estes detalhes neste artigo bastante completo.

Depois desta curta introdução convém então explicar como resolver este problema da anonimidade na internet. A solução chama-se Tor. Tor é uma rede de túneis virtuais que permite a pessoas e grupos aumentar a privacidade e segurança na internet. Encontra-se ainda em desenvolvimento, mas já faz um bom trabalho em ocultar a nossa localização, no entanto não é garantido a 100% a sua eficácia, de modo que não se recomenda a sua utilização em situações de privacidade crítica.

De seguida vou explicar os passos para instalar Tor em Linux Ubuntu, em Debian os passos também são os mesmos. Para utilizadores Mac OS, econtram aqui as instruções necessárias. Caso (ainda) sejam utilizadores Windows, podem encontrar aqui as instruções para instalar e configurar correctamente.

Basta inserir numa linha de comandos:

sudo apt-get install tor
sudo /etc/init.d/tor start


Depois de instalado e iniciado, o Tor passa a receber as ligações na porta 9050, por isso é necessário configurar as aplicações nas quais queremos privacidade para utilizarem um proxy SOCKS5 em 127.0.0.1 (localhost) na porta 9050.

Agora podem ligar-se a um servidor de IRC e testarem fazer um whois ao vosso nick para confirmarem como já têm um IP diferente (neste caso fiquei com um IP pertencente a um IP mit.edu (EUA):

Podem fazer isto para todas as aplicações que desejarem. Se houver alguma que não suporte proxies com SOCKS5 (como por exemplo o Firefox 1.5) basta instalarem o privoxy e redireccioná-lo para a porta do Tor:

sudo apt-get install privoxy


Depois de instalado vamos então redireccionar para o Tor editanto o ficheiro /etc/privoxy/config adicionando-lhe:

forward-socks4a / localhost:9050 .


Não esquecer de incluir o ponto. Agora basta iniciar o serviço:

sudo /etc/init.d/privoxy start


E pronto temos tudo para navegar anónimamente na internet. Convém notar que estes passos não protegem os dados a circular, para isso deverá ser necessário usar SSL para cifrar o conteúdo. O Tor apenas protege a nossa identidade na internet. E não esperem grandes velocidades no acesso, pois como devem calcular este serviço degrada um pouco, por vezes muito, a velocidade da ligação. Mas existe sempre um preço a pagar para se ficar anónimo :)

sábado, janeiro 12, 2008

Mestrado Open Source em Portugal

Por momentos não quis acreditar... Mas parece que é mesmo verdade. O ISCTE está a tentar abrir na sua instituição de ensino superior um mestrado em Open Source.

“O Mestrado em Open Source Software propõe-se oferecer um curso de estudos aprofundados e especializados dedicado ao Software Open Source em geral, e sistema operativos abertos como o Linux, em particular. Estes estudos serão desenvolvidos em regime “blend learning”, ou seja, num misto de formação à distância e sessões presenciais.

Os seus objectivos centram-se na preparação de investigadores e profissionais com competências na área do Software Open Source, modelo emergente no domínio das Tecnologias da Informação.”


Fico muito satisfeito por saber que existem cada vez mais iniciativas neste sentido.

Fonte: http://www.rcdesigner.net/novo-mestrado-em-software-opensource/


quinta-feira, janeiro 10, 2008

Livros de Linux para dar e (não) vender

O blog Linux Haxor publicou uma lista com uma extensa colecção de livros gratuitos relacionados com Linux e programação. Vale bem a pena dar uma olhadela por eles e até mesmo pelo blog.

terça-feira, janeiro 08, 2008

apt-get install apt !?


Isto já me aconteceu à algum tempo, mais ou menos pela altura da saída do Ubuntu 7.04 Feisty Fawn. Tinha instalado o sistema no PC e depois de alguns dias de uso decidi separar a pasta /home para uma partição exclusiva. Pelo meio houve alguma bronca no ficheiro /etc/fstab e ao iniciar o Ubuntu fui presenteado com este erro pérola...

"The program 'apt-get' is currently not installed. You can install it by typing apt-get install apt"

(clicar na imagem para aumentar).

segunda-feira, janeiro 07, 2008

Insegurança nos auriculares bluetooth


Aqui fica um vídeo que demonstra como um auricular bluetooth pode ficar facilmente sobre o controlo de alguém mal intencionado, podendo escutar conversas e até mesmo enviar som.

Basta saber o endereço do aparelho, que pode ser facilmente obtido através de sniffing, e o pin secreto que por default é 0000. Apenas isto e será possível gravar tudo o que o aparelho capta quando não se encontra em chamada.

Aqui fica o link do vídeo para os que estão a ver isto por feed:
http://www.youtube.com/watch?v=1c-jzYAH2gw

sábado, janeiro 05, 2008

Router Hacking

Ao fim de uma semana com o router Belkin F5D7633-4, encontrei um "pequeno" problema no aparelho. A porta 5190 encontrava-se aberta quer a nível local quer externo, coisa que não me agrada. Andei a pesquisar no Google e não encontrei ninguém a queixar-se do mesmo problema.

A porta 5190 é a porta utilizada para o serviço de instant messaging da AOL, e eu não utilizo tal serviço, no entanto estava ali aberto a ligações. Nem mesmo depois de uma substituição de firmware. Troquei impressões com outra pessoa que tem um router Belkin, o problema era o mesmo, porta 5190 aberta.

Liguei-me por ssh ao bicho e andei a mexer no sistema operativo do router (linux) e encontrei no ficheiro /var/passwd o seguinte:

# cat passwd
admin:xxxxxxx:0:0:Administrator:/:/bin/sh
support:xxxxxx:0:0:Technical Support:/:/bin/sh
user:xxxxxx:0:0:Normal User:/:/bin/sh
nobody:xxxxxxx:0:0:nobody for ftp:/:/bin/sh

As passwords cifradas foram censuradas por motivos óbvios. Como se pode reparar, existe um user no router chamado "support". Estranho isto não vir mencionado no manual não? Porta aberta, conta de suporte... 1+1=2.

Aparentemente não existe maneira de editar os ficheiros pois não existe nenhum editor instalado no sistema operativo do router, por isso não foi possível apagar as contas "em excesso". E por esse mesmo motivo desviei a atenção para a firewall, que neste sistema é a normalíssima iptables. Listando as regras apareceu:

# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:1863:1864
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5190
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5566
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:40000:40099
LOG tcp -- 0.0.0.0/0 0.0.0.0/0
limit: avg 6/hour burst 5 tcp flags:0x16/0x02
LOG flags 0 level 1 prefix `Intrusion -> '
DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02
TCPMSS clamp to PMTU
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
LOG tcp -- 0.0.0.0/0 0.0.0.0/0
limit: avg 6/hour burst 5 tcp flags:0x16/0x02
LOG flags 0 level 1 prefix `Intrusion -> '
DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Lá está a porta 5190 a ser permitida, entre outras, no entanto essas outras passam como stealth nos vários port scans que fiz ao router.
Bastou um simples comando iptables para apagar a regra e resolver o problema:

iptables -D INPUT 4


Este comando apaga a regra 4 da INPUT chain e para já resolve o problema. Os port scans já não acusam nada e o router continua aparentemente funcional :) Não sei até que ponto seria inofensivo ter esta porta aberta...

É preciso ter atenção que estes passos alteram o firmware do equipamento, e se não houver conhecimento do que se está a fazer pode-se acabar com um firmware danificado sendo depois necessária a reinstalação do mesmo para o router voltar ao funcionamento normal... ou não.

Youtorrent


O Youtorrent é, segundo os responsáveis pelo site, o primeiro motor de pesquisa e comparação de torrents em tempo real do mundo. Sem dúvida que o conceito é interessante.

Depois de o experimentar fiquei satisfeito com a sua prestação, pois faz uma busca completa quase instantânea por 12 motores de pesquisa de torrents bastante conhecidos.

O Youtorrent é ainda um serviço acabado de nascer, neste momento tem um aspecto limpo sem anúncios e é bastante rápido, coisas que podem mudar no futuro com a popularidade.

sexta-feira, janeiro 04, 2008

Port Scanner em Haskell

Para quem acha que Haskell é inútil, aqui fica um dos muitos exemplos das aplicações desta linguagem. Em poucas linhas de código consegue-se criar um port scanner funcional utilizando o paradigma de programação concorrente.

--
-- --------------------------------------------------------
-- A simple port scanner written in Haskell
-- Author: Tom Moertel http://blog.moertel.com
-- Compile using ghc: ghc -o Portscan --make Portscan.hs
-- --------------------------------------------------------
--

module Main (main) where

import Control.Concurrent
import Control.Exception
import Data.Maybe
import Network
import Network.BSD
import System.Environment
import System.Exit
import System.IO

main :: IO ()
main = do
args <- getArgs
case args of
[host, from, to] -> withSocketsDo $
scanRange host [read from ... read to]
_ -> usage

usage = do
hPutStrLn stderr "Usage: Portscan host from_port to_port"
exitFailure

scanRange host ports =
mapM (threadWithChannel - scanPort host . fromIntegral) ports >>=
mapM_hitCheck
where
hitCheck mvar = takeMVar >>= maybe (return ()) printHit
printHit port = putStrLn =<< showService port

threadWithChannel action = do
mvar <- newEmptyMVar
forkIO (action >>= putMVar mvar)
return mvar

scanPort host port =
withDefault Nothing (tryPort >> return (Just port))
where
tryPort = connectTo host (PortNumber port) >>= hClose

showService port =
withDefault (show port) $ do
service <- getServiceByPort port "tcp"
return (show port ++ " " ++ serviceName service)

withDefault defaultVal action =
handle (const $ return defaultVal) action


Para compilar é necessário o Glasgow Haskell Compiler, seguindo as instruções indicadas no início do código. Podem sempre usar o interpretador Hugs, mas torna-se mais prático com o compilador.

quinta-feira, janeiro 03, 2008

Fullread


Fullread é uma nova ferramenta online criada para facilitar a vida de quem costuma encontrar links para artigos interessantes e nem sempre tem tempo para ler tudo, necessitando de os guardar temporariamente até decidir se merecem ou não um bookmark.

O mais interessante é o facto de ter sido criado em terra lusas, pelo Nuno Mariz, que também criou uma outra ferramenta online para encurtar URL's: o Smallr. Realço isto porque é importante mostrar que por cá também se fazem coisas interessantes.

Já estive a utilizar o Fullread e parece que vai ficar na minha barra de links nos próximos tempos. Para ficar perfeito só falta mesmo integração com o Google Bookmarks, neste momento só tem para o del.icio.us.

quarta-feira, janeiro 02, 2008

Same Game em Javascript

Primeiro post de 2008, depois de uma mini escapadela para a passagem de ano. E para começar, aqui fica o link para um jogo feito totalmente em Javascript, provando que nem sempre é necessário Flash para um pouco de divertimento no browser.