Centauro
Ferramenta de rede
O Centauro é uma ferramenta de linha de comando com algumas funcionalidades de gerenciamento de rede, tais como:
Apesar de ser desenvolvido especialmente para o Windows, que tem problemas em encontrar ferramentas do tipo para download, tenho tentado deixar compatível com o Linux. Por favor comunique qualquer bug encontrado ou mande um pull request com a correção. Toda ajuda é bem-vinda!
- Scanner de portas TCP;
- Descoberta de hosts; No prompt de comando, use passe o argumento --help para saber como usá-lo.
python centauro.py --help
Modos de operação
Para selecionar o modo de operação, passe o modo escolhido para o parâmetro -m. Por exemplo, para usar o modo discover:
python centauro.py -m discover
-
Scanner: modo padrão de operação do centauro. Caso o parâmetro -m seja omitido, o centauro operará como scanner. Esse modo exige os parâmetros -a ALVO e -i INTERVALO. O alvo deve ser um endereço de IP ou nome do dispositivo alvo. O intervalo deve ser um intervalo de portas a serem scaneadas. Exemplo de uso:
python centauro.py -a 192.168.0.1 -i 1-80
Nesse exemplo, o scanner irá scanear as portas de 1 a 80 do host 192.168.0.1.
-
Discover: modo de operação para descobertas de hosts. Para usá-lo é necessário passar o endereço da rede junto à máscara de rede separados por uma barra ao prâmetro -r, como no exemplo a seguir:
python centauro.py -m discover -r 192.168.0.0/255.255.255.0
Nesse exemplo, o discover vai verificar os hosts de 192.168.0.1 até 192.168.0.254.
O código
Bom, o código não está limpo, realmente, mas nada que bastante paciência não resolva. Vamos tentar descomplicar tudo isso!
A classe Centauro:
A classe centauro não tem nenhum atributo no método construtor (sim, é verdade, por enquanto). Essa "peculiaridade" é devido ao fato de que a maioria das variáveis são restritas a um método da classe. Por exemplo, a variável self.interval da classe só é acessada pelo método scanner, portanto, achei conveniente declará-la no método scanner.
Em consequência da ausência de declarações no método construtor, são é necessário passar argumentos ao instânciar um objeto a partir dessa classe:
centauro = Centauro()
O método scanner(host, intervalo, timeout=1):
Esse é o método responsável pelo escaneamento de portas. Ele usa o recurso de multiplas threads e, portanto, o processo é mais ágil.
O método discover(rede):
Esse método recebe como argumento
Atributos:
- self.host: alvo escaneado pelo método scanner
- self.interval: intervalo de portas a ser escaneado pelo método scanner
- self.timeout: tempo limite de tentativa de conexão TCP no método scanner
- self.opened: resultado do scanner que retorna as portas abertas no alvo
- self.hosts_ativos: resultado do discover que retorna os hosts ativos