Porta de massa 80 cheque

0

então é isso que eu preciso fazer. Eu preciso de uma maneira de verificar se a porta 80 está aberta (se o host estiver executando um servidor da Web na porta 80) em muitos IPs por vez, muito rápido e, em seguida, salve apenas os ips que têm a porta 80 aberta. Qual seria a melhor maneira de fazer isso mais rápido? Obrigado.

    
por user1307079 11.07.2013 / 21:02

5 respostas

2

Isso seria realmente simples com o Python, pelo menos para verificar se a porta está aberta. Você poderia então verificar se há um servidor web rodando lá se você fizer uma requisição e verificar o cabeçalho ( 200 OK eu acho).

De qualquer forma, para fazer isso em Python install nmap no seu sistema e, em seguida, nas ligações nmap do python.

#!/usr/bin/env python

import nmap, threading, urllib2, socket

baseip = "108.170.28.{}"

def NmapPortScan( targethost, targetport = 80 ):
    print("Trying: " + str(targethost) )
    scanner = nmap.PortScanner()
    result = scanner.scan( str(targethost), str(targetport) )

    if ( int(result['nmap']['scanstats']['uphosts']) == 1):
        try:
            state = result[str(targethost)]['tcp'][int(targetport)]['state']
            print "State: {} : {}".format(str(targethost), str(state))
            return state
        except:
            print "State: {} : {}".format( str(targethost), "error")
            return "error"
    else:
        print "{}: Not up".format( str(targethost) )
        return "notup"

def CheckHttpStatus( targethost ):
    req = urllib2.urlopen( targethost )
    if( "Content-Type: text/html" in req.info().headers[3] ):
        return True
    else:
        return False

def LogIp( ipaddr ):
    with open("openips.txt", "a") as fi:
        fi.write( ipaddr + '\n' )
        fi.close()

def CheckIps( ip ):
    if ( NmapPortScan( ip ) == "open" ) and ( CheckHttpStatus( "http://" + socket.gethostbyaddr( ip )[0] ) ):
        #if ( CheckHttpStatus( "http://" + socket.gethostbyaddr( ip )[0] ) ):
        LogIp( ip )
        print( "Open Port 80 on: " + str(ip) )

def main():
    for i in range(153, 201):
    #for i in range(153, 154):
        ip = baseip.format(str(i))
        #CheckIps( ip )
        th = threading.Thread(target=CheckIps, args=(ip,))
        th.start()

if __name__ == "__main__":
    main()

Isso será o seguinte:

  1. Imprima uma mensagem para o console: Open Port 80 on: xxx.xxx.xxx.xxx

  2. Registre em um arquivo o IP: openips.txt salvo em qualquer lugar onde você tenha executado o script.

por 11.07.2013 / 22:01
3

Caminho mais rápido:

~ # nmap 192.168.1.0/24 -p 80

apenas altere 192.168.1.0/24 para sua sub-rede / máscara

    
por 11.07.2013 / 22:27
2

Confira nmap.org para obter informações sobre a ferramenta de linha de comando nmap , que já pode estar instalada em seu sistema. É exatamente para esse propósito. Lembre-se, não faça mal!

    
por 11.07.2013 / 21:47
1

Escreva um script que use nmap ou netcat para consultar os endereços IP em questão e depois analisar o resultado.

    
por 11.07.2013 / 21:49
0

Use o Nmap e canalize a saída pelo grep.

    
por 11.07.2013 / 21:58