前言
在近一年时间深度学习数据安全后,我突然惊醒,原来网络安全是必修啊(裂开),但有了19-20年的沉淀,我觉得基础部分已经很扎实了,那如何去提升呢???
于是在经历了语言的洗礼后,我开始输出这个自动化脚本
一、基础环境搭建
那么既然要用python,咱们肯定还是需要Pycharm这个工具的,这里我就不过多的去赘述了,就是简单的去官网下载安装就好了(但因为自身家境和生活简洁(就是穷),所以我只能用白嫖版)。
注:支持正版,严于律人,宽以待己。
Pycharm官网地址:https://www.jetbrains.com/pycharm/
二、代码实现
1.引入库
为了实现域名查询IP\whois查询\端口扫描,python的部分模块是必不可少的,具体模块如下:
import socket #用于域名转IP的
import requests #获取http/https请求,爬虫必备
import urllib #抓取页面,爬虫必备
import threading #多线程
import time #计时、显示时间
from whois import whois #whois查询
2.域名查IP
代码如下(示例):
def ip_check(url):
IP = socket.gethostbyname(url)
url1 = 'http://ip-api.com/json/' + IP #接口调用查询
response = requests.get(url1)
ip_info = {
}
ip_info = response.json() #查询网址返回的json数据赋值给ip_info字典
#对ip_info中的内容,进行读取显示
print(f'您查询的网站的IP地址是:{
ip_info["query"]}属地信息如下:')
print(f'国 家:{
ip_info["country"]}')
print(f'省 份:{
ip_info["regionName"]}')
print(f'城 市:{
ip_info["city"]}')
通过socket转换域名IP,在利用接口查询后获取网页内容,在逐个读取打印,最后显示结果如下:
3.域名whois查询
代码如下(示例):
def ip_whois(url):
whois_info = {
} #声明一个字典
whois_info = whois(url.lower()) #使用whois模块查询,lower就是统一一下小写
print(f'域名是:{
whois_info["domain_name"]}')
print(f'域名注册商是:{
whois_info["registrar"]}')
print(f'域名注册时间:{
whois_info["creation_date"]}')
print(f'域名到期时间:{
whois_info["expiration_date"]}')
print(f'DNS:{
whois_info["name_servers"]}')
实现内容还是比较简单的,我唯一遇到的问题是:
whois模块找了半天
因为whois.whois是python2的函数,因此我在使用python3的时候,本来利用的是whois.query,但是一直报错,因此我认为python3一定会把这个懒人的功能移植过来,因此在我不懈的努力下终于找到了正确的模块:python-whois
结果展现:
4.端口扫描
代码如下(示例):
def duankou_check(url):
IP = socket.gethostbyname(url) #域名获取IP
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建socket对象,面向连接的
for de_port in open('D:\渗透资料\FUZZ\端口清单.txt'): #读取端口
result = server.connect_ex((IP,int(de_port))) #套接字,拼接扫描
if result == 0:
print(de_port+'is_open\n')
else:
print(de_port+'is_close\n')
这里socket的connect_ex函数 是需要两个括号的,这是我遇到的一个疑问,为什么socket要这么去设计,感觉有点反逻辑……
结果展示:
总结
这次的自动化还是比较简单的,我还会继续以这个为基础去优化深入提升自己,将端口多线程,子域名爆破或者还有什么好玩的大伙都可以提提建议。
待实施的清单:
- 多线程端口爆破(性能提升)
- 子域名爆破(功能)
- 批量域名查询计入文档(这玩意会不会给我卡死)
- 花里胡哨的界面(嘿嘿嘿)
- ……