Python开发-内外网收集Socket&子域名&DNS
判断对方是否使用cdn
通过python执行系统命令nslookup返回的结果来进行判断
def cdn(url):
#执行系统命令,将执行后返回的os对象进行read方法读取,将读取出来的结果存入变量
cdn_data=os.popen('nslookup'+' '+url).read()
print(cdn_data)
#print(cdn_data)
#通过正则表达式进行筛选
num=cdn_data.count('.')
if num>10:
print("cdn存在")
else:
print("cdn不存在")
端口扫描
def dksm(url):
#因为端口好都是从1-65535的,所以循环设置为1-65535
port_list=[20,22,80,3306,135,445,8080,21,3389]
#gethostbyname将目标url反查为ip
ip = socket.gethostbyname(url)
for port in port_list:
#socket.AF_INET 用于服务器与服务器之间的网络通信,此处是ipv4进行通信
#socket.SOCK_STREAM 基于TCP的流式socket通信
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#延迟1秒
#sock.settimeout(1)
#循环通过connect_ex方法对ip的端口进行访问,如果端口存在则返回0
state = sock.connect_ex((ip, port))
if 0 == state:
print("port: {} is open".format(port))
#关闭socket对象
sock.close()
whois查询
def chaxun(url):
data=whois.whois(url)
print(data)
子域名爆破
def yuming(url):
#将url通过.进行分割
list = url.split('.')
#将二级域名和三级域名拼接起来
domain = list[1] + '.'+list[2]
#循环遍历字典,将一级域名进行拼接,再通过gethostbyname进行ip的反查,如果反查出结果就证明此域名存在,如果报错就证明此域名不存在
with open('dic.txt', 'r') as f:
for i in f:
i = i.strip('\n')
subdomain = i + '.' + domain
#print(subdomain)
try:
ip = socket.gethostbyname(subdomain)
print("\033[1;32;40m %s \033[0m" % (subdomain + ' ' + ip))
except:
pass
nmap使用
首先python通过pip install python-nmap
命令去安装nmap模块
将本地的nmap配置到环境变量中
python通过nmap模块去调用本地的nmap
端口扫描
import nmap
nm=nmap.PortScanner()
data=nm.scan('ip.......','80,8888','-sV')
print(data)
主机存活
import nmap
nm=nmap.PortScanner()
try:
nm.scan(hosts='192.168.2.0/24',arguments='-T4 -F')
#查看当前存活主机
print(nm.all_hosts())
#查看当前存活主机的详细信息
print(nm.csv())
except Exception as err:
print('errpr')
将python文件生成exe文件
首先需要安装pyinstaller
pip install pyinstaller
安装后在python目录下执行
pyinstaller -F 文件路径
执行完后会在python的目录dist文件下生成exe文件
将它放到cmd中去执行,可看到与py脚本执行结果一样