美文网首页Python
python 实现IP开放端口探测与是否部署WEB服务探测

python 实现IP开放端口探测与是否部署WEB服务探测

作者: 挖低危的清风 | 来源:发表于2018-10-26 10:00 被阅读0次

由于工作中需要对多个IP段进行统计,并判断是否部署WEB服务,所以有了写这个脚本的想法。在中间测试脚本的时候,遇到了个坑,我在自己的电脑上运行脚本的时候,没有任何问题。但是当我放到我的服务器上去运行的时候,python在请求了几个站点之后就开始报错了。

ConnectionResetError: [Errno 104] Connection reset by peer

经过度娘,谷歌的一阵搜索,发现了问题,是由于我大量频繁的请求,导致服务器关闭了连接。由于技术有限,在这里我的解决办法就是在对URL进行请求的时候,添加个异常捕获(try except),成功解决了该问题!

以下是我昨天临时写的脚本源码,大致意思就是,获取文件中的IP列表,然后使用nmap对80,8080,443进行探测,并对开放这些端口的IP进行拼接并根据返回code判断是否有WEB服务。最后将结果写入到文件中。


import sys
import os
import nmap
import requests
import logging
import threading
from multiprocessing import Pool as ThreadPool
import time
from openpyxl import load_workbook,Workbook

th = 20 
code = [200,403,404]
os.mknod('AAA.txt')


def GetIp(site):
    url_list = []
    print ('[* ]**************************GET-IP-SITE**************************[ *]\n')
    ip_file = open(site,'r')
    lines = ip_file.readlines()
    print (lines)
    for ip in lines:
        ip = ip.rstrip('\r\n')
        url_list.append(ip)
    return url_list

def scan(url_list):
    print ('[* ]' + url_list + ' **************************Join-Thread**************************[ *]\n')
    ip_port = '80,8080,443'
    active_list = []
    nm = nmap.PortScanner()
    ret = nm.scan(url_list,ip_port)
    #print (str(ret['scan']))
    if ret['scan']:
        print ('[* ]' + url_list + ' **************************Runing**************************[ *]\n')
        if ret['scan'][url_list]['tcp'][80]['state'] == 'open':
            url = 'http://'+url_list
            #print ('http://'+url_list)
            active_list.append(url)
        elif ret['scan'][url_list]['tcp'][8080]['state'] == 'open':
            url1 = 'http://'+url_list+':8080'
            #print ('http://'+url_list+':8080')
            active_list.append(url1)
        elif ret['scan'][url_list]['tcp'][443]['state'] == 'open':
            url2 = 'https://'+url_list
            #print ('https://'+url_list)
            active_list.append(url2)
        else:
            print('[* ]'+'*******jump********')
    return active_list
def active_ip(active_list):
    if active_list:
        print ('[* ]' + '************' +'up'+ str(active_list) +'WEB-up-or-die'+ '************[ *]\n')
        logging.captureWarnings(True)
        try:
            response = requests.get(active_list[0],headers={'Host':'test.com'},verify=False,timeout=10)
            if response.status_code in code:
                print ('[* ]=========' + active_list[0] + ' =======up'+' code ' + str(response.status_code))
                info = str(active_list[0]) + ' ' + str(response.status_code) + '\n'
                return info
        except requests.RequestException as e:
            pass

def savefile(url_info):
    print ('=================================>>>>>>>>'+str(url_info))
    f = open('AAA.txt','r+')
    for i in url_info:
        if i:
            f.write(str(i))
    f.close()
    
if __name__ == '__main__':
    site = sys.argv[1]
    print ('[* ]******************************************GoGoGoGoing******************************************[ *]\n')
    start = time.time()
    pool = ThreadPool(th)
    url_list = GetIp(site)
    active_list1 = pool.map(scan,url_list)
    print(str(active_list1))
    url_info = pool.map(active_ip,active_list1)
    savefile(url_info)
    pool.close()
    pool.join()
    finish = time.time()
    times = finish - start
    print ('time:'+ str(times))
    


其实我本人基本上很少写python,也没有去系统的学习过,写的代码也是完全靠想象来写的,hh,所以我这个代码可能会有显得有点点糟糕。= =!。

相关文章

  • python 实现IP开放端口探测与是否部署WEB服务探测

    由于工作中需要对多个IP段进行统计,并判断是否部署WEB服务,所以有了写这个脚本的想法。在中间测试脚本的时候,遇到...

  • CewlKid:Vulnhub

    资产探测 存活IP探测 开放端口探测 开放22,80,8080端口,80端口为apache页面,8080Web页面...

  • Bizarre Adventure Sticky Fingers

    资产探测 IP探测 端口探测 开放22,53,80,5355端口,80端口为Web页面,没找到有价值的内容,扫一波...

  • Minouche:Vulnhub

    资产探测 IP探测 对192.168.72.139端口扫描,探测开放服务 发现22,80端口,9090是关闭的,2...

  • Player-v1.1:Vulnhub

    资产探测 存活IP探测 查看IP开放端口 开放80,3306,访问web页面,发现是Apache2,发现网站的根目...

  • CHILL HACK: 1:Vulnhub

    探测 探测IP地址 查看IP上开放的端口,80,21,22,80为web端口 80页面,看了一圈没发现有啥重要信息...

  • Ready(升级完整shell,容器逃逸)

    服务探测 开放端口 详细端口信息 web robots.txt 在这个页面确认gitlab版本为:11.4.7 搜...

  • 内网渗透-信息收集

    00 信息收集的方向 主机存活探测 主机端口开放情况 主机服务探测 主机操作系统探测 网段分布情况 漏洞信息探测 ...

  • shell笔记10(通过端口监控远程服务的多种方案)

    方案一: telnet:用来探测指定ip是否开放指定端口 ping:通常是用来检查网络是否通畅或者网络连接速...

  • ScriptKiddie(msfvenom命令注入)

    服务探测 开放端口 详细端口信息 web 5000端口是一个执行各种命令的页面,尝试各种命令注入无果 我们留意到期...

网友评论

    本文标题:python 实现IP开放端口探测与是否部署WEB服务探测

    本文链接:https://www.haomeiwen.com/subject/npqktqtx.html