1. 程式人生 > 其它 >76:Python開發-內外網收集Socket&子域名&DNS

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

補充: