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:
-
Imprima uma mensagem para o console:
Open Port 80 on: xxx.xxx.xxx.xxx
-
Registre em um arquivo o IP:
openips.txt
salvo em qualquer lugar onde você tenha executado o script.