freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

python实现简单的子域名扫描脚本
2021-01-04 18:07:15
声明:本脚本仅用于学习交流,请勿用于非法途径,造成的任何后果与本人无关

使用三方库:requests,threadpool,socket

测试目标:自己的博客网站

使用的字典自己去hub上面找找

程序原理:

函数将字典读入到lists里面,然后多线程取出每个域名前缀,用requests库请求,如果返回响应码为200则表示网站存在,当然,表示网站存在的响应码不止有200。

程序运行结果:

1609754473_5ff2e7695751bd14bbe65.png!small

这里会把域名对应的ip和空间也同时输出,怎么实现呢,ip输出是利用socket.gethostbyname()这个函数将域名转成ip,输出域名的空间是通过调用返回头中的SERVER的值。

代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''
作者:木尤
声明:本脚本仅用于学习交流,请勿用于非法途径,造成的任何后果与本人无关
要点:需要安装requests,threadpool,socket这三个库
'''
import requests,threadpool,socket
url1="http://"
#url2是你需要爆破的主域名,前面必须加.
url2=".域名"

ff=open("./success.txt.txt",'w+')
lists=[]
##下面的gc.txt是你的子域名的字典,将字典的内容加载到lists
def zd():
    f=open("./sub_full.txt",'r')
    for d in f:
        dir=d.strip()
        lists.append(dir)

#调用字典的域名访问,看是否为200
def bp(str):
    try:
        res=requests.get(url1+str+url2,timeout=3)
        if res.status_code==200:
            ff.write(url1+str+url2+'\n')
            print(url1+str+url2,socket.gethostbyname(str+url2),res.headers['Server'])
    except:
        pass
zd()
#这个是线程数,一次调用字典的50个执行
pool=threadpool.ThreadPool(50)
reqs=threadpool.makeRequests(bp,lists)
[pool.putRequest(req) for req in reqs]
pool.wait()
# python扫描工具 # Python工具 # python3 # python脚本
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者