首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Python 實現 C 段 HTTP Banner 掃描器 v0.3:多線程與編碼檢測

     編輯:關於C語言

Python 實現高效 HTTP Banner 掃描器:多線程與智能編碼處理

本工具針對 C 段(256 IP)進行 HTTP 服務探測,提取 Banner 信息(標題、服務器版本),採用多線程並發與智能編碼檢測,適合資產梳理場景。

核心功能

  • 支援 CIDR(192.168.1.0/24) 與範圍(192.168.1.1-192.168.1.254) 目標格式
  • 自定義端口(-p 8080)
  • 多線程並發掃描,鎖保護輸出
  • 智能編碼檢測:chardet + HTML meta charset 雙重保障
  • 提取 <title>、Server 頭、狀態碼

關鍵技術點

IP 地址整數轉換


def ip2int(addr):
    return struct.unpack("!I", socket.inet_aton(addr))[0]

def int2ip(addr):
    return socket.inet_ntoa(struct.pack("!I", addr))

編碼檢測策略


def int_dec(pagehtml):
    # 1. chardet 統計檢測(confidence > 0.9)
    # 2. HTML meta charset 正則提取
    # 3. 驗證編碼有效性
    # 4. 回退 ISO-8859-1

多線程掃描框架


for ip in IPRange(start, end):  # 或 IPNetwork
    url = f'https://{ip}:{port}'
    t = Thread(target=http_banner, args=(url,))
    t.daemon = False
    t.start()

使用 Lock() 保護輸出,避免多線程輸出交錯。

命令行介面


python scanner.py 192.168.1.0/24 -p 8080
python scanner.py 192.168.1.1-192.168.1.254

使用 optparse 解析參數(建議升級至 argparse)。

輸出格式

IP            STATUS  SERVER        TITLE
192.168.1.1   200     Apache/2.4    Welcome
192.168.1.5   403     nginx/1.18    Forbidden

優化方向

  • 異步 IO(aiohttp) 替換多線程,提升併發規模
  • 加入 HTTPS 支援與證書解析
  • 結果持久化(CSV/JSON/資料庫)
  • 速率控制避免觸發防火牆

此工具展示 Python 在網絡資產發現場景的工程化能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved