程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi實現IP地址的隱藏

用Delphi實現IP地址的隱藏

編輯:Delphi
  二、IP頭結構

  我們知道,TCP/IP網絡數據全部是通過封裝在IP數據包中在Internet網上傳送的,也就是封裝建立起一個包含IP頭和數據的IP數據報。一般來說,網絡軟件總是以多個32位字產生IP頭,即使必須用附加的0填充IP頭。IP頭包含了傳輸IP數據包中封裝數據的所有必要信息。IP頭的數據結構和描述如下:

成員 長度(Bit) 描述 Version 4 IP頭的版本號,目前是IPv4,最新是IPv6 Header Length 4 IP頭的長度,若沒有特殊選擇,IP頭總是20字節長 Type of Service 8 服務類型,定義了數據傳輸的優先級、延遲、吞吐量和可靠性等特性 Total Packet Length 16 IP包的長度,若沒有特殊選項,一般為20字節長 Identification 16 IP包標識,主機使用它唯一確定每個發送的數據報 Flag 3 IP數據分割標志 Fragment Offset 13 IP數據分割偏移 Time to Live 8 數據報在網絡上的存活時間,每通過一個路由器,該數值減一 Protocol 8 TCP/IP協議類型,比如:ICMP為1,IGMP為2,TCP為6,UDP為17等 Header Checksum 16 頭部檢驗和 Source IP Address 32 源IP地址 Destination IP Address 32 目的IP地址 Other ? 其他選項 Data ? 數據

  實現自己定義的IP頭是一件非常有意義的事情,比如,通過改變IP頭裡的TOS的優先級和TTL,你可以使自己的數據包有更強的傳輸能力和壽命,通過修改IP頭裡的源IP地址就可以隱藏自己機器的IP地址等等。象著名攻擊程序“淚滴TearDrop”就是通過故意制造系統不能處理的分片IP包而實現的,還有SYN Flooder和UDP Flooder就是通過產生隨機源IP實現欺騙的。

  三、實現原理

  一般來說,自定義IP頭是通過使用socket的庫函數setsockopt()的選項IP_HDRINCL來實現的,盡管這在unix和Linux平台上很容易實現,但遺憾的是在Windows平台的Winsock1.1和Winsock2.0函數庫裡setsockopt()不支持IP_HDRINCL選項,所以在Windows 9x/NT裡是無法通過Winsock函數庫來實現IP頭自定義的,當然可以通過編寫虛擬設備驅動程序來實現,不過比較復雜,但Windows 2000的出現打破了這種局面,Windows2000的Winsock2.2函數庫裡全面支持setsockopt()的選項IP_HDRINCL,使得我們輕松就可以實現自定義的IP頭。實現方法如下:


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved