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

Windows 2000 Raw TCP/IP 函式庫:封包偽造、嗅探、掃描與非同步 Socket 完整實作

     編輯:關於VC++

前言

標準 Winsock API 隱藏了封包標頭細節,若需自訂 IP/TCP/ICMP 標頭 (如 IP 偽造、掃描、嗅探),必須使用 Raw Socket。本文介紹一個 C++ 封裝庫,支援 Win2000/NT/Win9x,提供同步/非同步 Raw Socket、封包建構、介面列舉、嗅探等功能,並附贈 ping、traceroute、TCP 半連接掃描、簡易伺服器等範例。

類別架構

  • CSpoofBase:根類別,管理 Socket 初始化、錯誤代碼、WSA 啟動/清理。
  • CSpoofSocket:封裝 WSASocket,支援自訂 IP 標頭 (來源 IP、TTL、TOS)、校驗和計算。
  • CAsyncSocket:將系統 Socket 包裝為非同步模式 (事件/視窗訊息/回呼)。
  • 阻塞式 Socket:CTCPSocket, CUDPSocket, CICMPSocket 繼承 CSpoofSocket,提供 Send/Receive 封裝。
  • 非同步式 Socket:CTCPSocketAsync, CUDPSocketAsync, CICMPSocketAsync 繼承 CAsyncSocket。
  • 輔助類別:CInterfaces 列舉網卡介面;CSniffSocket 嗅探模式 (混雜模式)。

核心功能

1. IP 偽造與自訂標頭


CSpoofSocket sock;
sock.SetSourceIP("192.168.1.100"); // 偽造來源 IP
sock.SetTTL(64);
sock.SetTOS(0x10);
sock.SendTo(destIP, buffer, len); // 自動計算 IP/TCP/UDP 校驗和

2. TCP 半連接掃描 (SYN Scan)


CTCPSocketAsync scanner;
scanner.SetCallback(OnScanResult);
for (int port=1; port<=1024; port++) {
    scanner.SendSYN(targetIP, port); // 僅送 SYN,收到 SYN+ACK 即判定開放
}

3. UDP 掃描


CUDPSocketAsync udpScanner;
udpScanner.SendTo(targetIP, port, ""); // 空封包
// 收到 ICMP Port Unreachable 即為關閉,無回應可能開放或被防火牆擋

4. 嗅探器


CSniffSocket sniffer;
sniffer.StartSniff(OnPacketCaptured); // 啟用混雜模式
// 回呼函數接收完整 Ethernet+IP+TCP/UDP 封包

5. 非同步伺服器/客戶端


CTCPSocketAsync server;
server.Listen(8080);
server.SetAcceptCallback(OnClientConnect);
// 事件驅動模型,不阻塞主執行緒

範例程式清單

  • ping.exe:ICMP Echo Request/Reply,自訂 TTL、封包大小。
  • traceroute.exe:遞增 TTL 收集 ICMP Time Exceeded 追蹤路徑。
  • spoof_demo.exe:IP 偽造發送 TCP/UDP 封包示範。
  • tcp_server.exe:非同步 TCP 回應伺服器。
  • udp_server.exe:非同步 UDP 回應伺服器。
  • ipconfig.exe:列舉介面 IP/子網路遮罩/閘道 (呼叫 CInterfaces)。
  • syn_scan.exe:TCP SYN 半連接埠掃描器。

編譯與相依性

  • 環境:VC6.0,Win2000/NT (Win9x 部分需 VxD 支援)。
  • 需連結 ws2_32.lib,定義 _WINSOCK2API_。
  • Raw Socket 需 Administrator 權限 (Win2000/NT/XP)。

法律與道德聲明

本庫提供 IP 偽造、掃描、嗅探等功能,僅供網路安全研究、教學、授權滲透測試使用。任何未經授權的網路攻擊、入侵、監聽行為均屬違法,使用者須自負法律責任。

總結

這個 Raw TCP/IP 庫以物件導向方式封裝了底層封包操作,大幅降低開發門檻,適合網路工具開發、安全研究、協定分析。原始碼開放、範例豐富,可直接整合至專案或作為二次開發基礎。

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