Mass IP Scanning
-------------------------
by Elektro

Port scanners existem montes deles! Utilitarios de NSLookup, tambem nao sao dificeis de encontrar! Mas o que pensei que seria interessante e util e' ter um programa que fizesse estas funcoes nao apenas a uma maquina, mas sim a todas as maquinas por exemplo de um dominio ou pertencentes a um intervalo. Um exemplo porreiro e' fazer um mass scan a um ISP, ou a um dominio!

Ja' agora um pequeno esclarecimento:
Ja' me perguntaram, coisas do genero, "a maquina x tem o ip yyy.yyy.yyy. yyy...de que pais e'?"(!)...Pois, entao convem esclarecer, que os ip's nao sao distribuidos por criterios geograficos, mas sim por classes, sendo este pro- cesso gerido pela InterNic. Os "pacotes" de ip's sao atribuidos consoante o comprador se insere nas cinco classes de ip's que existem, classes essas que sao as seguintes (num resumo +/- abreviado):

- Classe A (0.0.0.0 a 127.255.255.255) sao destinados a organizacoes muito grandes, como governos, multinacionais, e que possam precisar de mais de 65.000 hosts na sua rede!
- Classe B (128.0.0.0 a 191.255.255.255) sao destinadas a organizacoes inferiores as da classe A, mas que no entanto sao muito grandes! Para ter uma ideia, contasse pelos dedos de uma mao, se e' que existem, o numero de organizacoes portuguesas, que se inserem nesta classe.
- Classe C (192.0.0.0 a 223.255.255.255) sao destinadas a pequenas empresas, a' escala mundial, como por exemplo ISP's locais, etc...(para terem uma ideia empresas como a Telepac, Esoteria e IP inserem-se nesta classe)
- Classe D (224.0.0.0 a 239.255.255.255) sao ip's reservados para multicasting
- Classe E (os restantes) estao reservados, por enquanto, para futura expansao...por pouco tempo! Ha' quem ja' diga que a manter-se o actual crescimento (e este tende a aumentar) de computadores ligados a' Internet 32 bits nao serao suficientes, para representar tantos enderecos!

Entao o que o programa faz e' fazer, num dado intervalo de ip's, um port scanning e um NSLookup, imprimindo os seus resultados para o stdout.
Eis a linha de comandos:

a.out [-opcoes] [ip superior]

em que as opcoes sao:

-h imprime esta ajuda e sai
-iXX altera a port inicial para XX (def. 1)
-fXX altera a port final para XX (def. 1024)
-n nao faz port scanning
-u altera a pesquisa dos servicos para udp (def. tcp)
-m nao imprime mensagens de erro

Como se pode ver e' possivel nao se fazer o port scanner, apenas o NSLookup pois como podem imaginar um port scanner e' uma tarefa muito demorada, e quem apenas quiser fazer um mass NSLookup, nao tem necessidade de estar o tempo todo a olhar para o ecra!
Entao a informacao que o programa da' relativa a cada server alem do seu ip e': o seu DNS, a classe do IP (basta analisar o primeiro byte do endereco, como foi explicado em cima), e as aliases, se estas existirem. Em relacao ao port scanning, alem de nos ser dada a informacao, de quais as ports abertas, tambem e' dada informacao acerca do servico a essa port associada. Neste aspecto e' possivel obter informacao das ports abertas em relacao ao protocolo usado, por default e' o tcp, mas usando a flag -u altera-se o protolocolo para udp, e assim e' dada informacao acerca das ports com servicos que usem o protocolo udp!

Eis o codigo do programa ipscan.c