批量80端口检查

批量80端口检查

所以这就是我需要做的。我需要一种方法来一次检查大量 IP 上的端口 80 是否打开(如果主机在端口 80 上运行 Web 服务器),速度非常快,然后只保存端口 80 打开的 IP。最快的最佳方法是什么?谢谢。

答案1

200 OK使用 Python 进行验证非常简单,至少可以验证端口是否打开。然后,如果您发出请求并验证标头(我认为),则可以验证那里是否有 Web 服务器正在运行。

无论如何,要先Python安装nmap到您的系统中,然后再安装 python nmap 绑定。

#!/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()

这将:

  1. 打印一条消息到控制台:Open Port 80 on: xxx.xxx.xxx.xxx

  2. 将 IP 记录到文件中:openips.txt保存到您运行脚本的任何位置。

答案2

最快的方法:

~ # nmap 192.168.1.0/24 -p 80

只需将 192.168.1.0/24 更改为您的子网/掩码

答案3

查看nmap网站有关nmap命令行工具的信息,该工具可能已安装在您的系统上。它就是为此目的而设的。记住,不要作恶!

答案4

使用 Nmap 并通过 grep 管道传输输出。

相关内容