76:Python开发-内外网收集Socket&子域名&DNS
python开发 思维导图:
相关知识点:
1.开发基础环境配置说明
- Windows10 + Pycharm
2.python开发学习的意义
- 学习相关安全工具原理
- 掌握自定义工具及拓展开发
- 解决实战中无工具或手工麻烦批量化等情况
- 在二次开发Bypass,日常任务,批量测试利用等方面均有帮助
- 如SRC批量收集并利用,AWD批量利用获取FLAG,CTF加密脚本等
3.本课涉及的技术方向
- Socket、爬虫、正则表达式、框架开发等
4、本课涉及知识点
- Socket部分技术,进程命令执行,交互参数自学,Nmap工具模块使用,异常处理等
案例1:外网信息收集-IP查询&whois查询&CDN判断&端口扫描&子域名查询
# Author:Zheng Na import socket,os,time import sys from whois import whois #需要安装python-whois模块 #IP查询:域名反查IP功能 def ip_check(url): ip=socket.gethostbyname(url) print(ip) #whois查询 #第三方库进行whois查询,也可以利用网上接口查询 def whois_check(url): whois_data=whois(url) print(whois_data) #CDN判断-利用返回IP条数进行判断 #识别目标是否存在CDN def cdn_check(url): # 采用nslookup执行结果进行返回IP解析数目判断:如果非权威应答地址只有一个,那么这个网站无cnd,否则有cdn # 利用python去调用执行系统命令 ns="nslookup "+url # 方法1:缺点是结果无法读取操作 # cdn_data=os.system(ns) # print(data) # 方法2: cdn_data = os.popen(ns,'r').read() count=cdn_data.count('.') if count>8: print("CDN 存在") else: print("CDN不存在") #端口扫描 #1.自写socket协议tcp,udp扫描 #2.调用第三方模块masscan,nmap等扫描 #3.调用系统工具脚本执行 def port_check(url): ip = socket.gethostbyname(url) ports={21,22,135,443,445,80,1433,3306,3389,1521,8000,8080,7002,7001,9090,8089,4848} server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) for port in ports: result = server.connect_ex((ip,port)) if result == 0: print(str(port)+'|open') else: print(str(port)+'|close') #子域名查询 #1.利用字典加载爆破进行查询 #2.利用bing或第三方接口进行查询 def zym_check(url): urls=url.replace('www.','') for zym_data in open('dic.txt'): zym_data = zym_data.replace('\n','') url = zym_data + '.xueersi.com' try: ip = socket.gethostbyname(url) print(url + '->' + ip) time.sleep(0.1) except Exception as e: pass if __name__ == '__main__': check = sys.argv[1] url = sys.argv[2] print(check) if check =='all': ip_check(url) whois_check(url) cdn_check(url) port_check(url) zym_check(url) # 示例:python3 test.py all www.xiaodi8.com
案例2:内网信息收集-系统判断&存活主机&端口扫描
# Author:Zheng Na import os from nmap import nmap #需要安装python-nmap模块 #系统判断 #1.基于TTL值进行判断 #2.基于第三方脚本进行判断 def os_check(url): data = os.popen("nmap -O " + url,"r").read() print(data) #内网主机信息探针 #1.原生利用ping进行获取 #2.原生利用icmp,tcp,udp等协议获取 #3.利用第三方模块库nmap等加载扫描获取 def nmap_scan(url): nm = nmap.PortScanner() try: # data = nm.scan(url, '80,8080','-sV') data = nm.scan(hosts='192.168.73.0/24', arguments='-T4 -F') print(nm.all_hosts()) print(nm.csv()) print(data) except Exception as err: print("error") if __name__ == '__main__': url = 'www.xiaodi8.com' os_check(url) # nmap_scan(url)
案例3:Py格式解析环境与可执行程序格式转换-Pyinstaller
- 使用pyInstaller可以将python脚本打包成可执行文件,方便在没有python环境的计算机中执行
- 具体使用方法参考:https://www.cnblogs.com/gopythoner/p/6337543.html
补充: