一、原理
用一些比喻,集線器網路中所有主機都連線在一條網線上,也就是說每台主機傳送的資料都將經過其他主機的門前(網絡卡),只是說一般網絡卡一看資料報報頭,這不是發給自己的,就不理這個包了,而我們現在要做的,就是敞開大門,不管這個包是發給誰的,都將其納入囊中。那麼如何做呢?只需將網絡卡設定為混雜模式。
要用到c語言網路程式設計中的socket,一般的socket只能獲取到傳輸資料報,所以我們要用的是raw socket(原始socket),它可以工作在鏈路層或者ip層(取決於建立時的引數設定)。
二、實現
原始套接字的建立方法跟tcp/ip建立方法幾乎一模一樣:
int sockfd;
sockfd = socket(af_inet,sock_raw,ipproto_icmp);
這兩句程式你就可以建立乙個原始套接字。這種型別套接字的功能與tcp
或者udp
型別套接字的功能有很大的
不同:tcp/udp
型別的套接字只能夠訪問傳輸層以及傳輸層以上的資料,因為當
ip層把資料傳遞給傳輸層時,下的
資料報頭已經被丟掉了。而原始套接字卻可以訪問傳輸層以下的資料,所以使用
raw套接字你可以實現上至應用層
的資料操作,也可以實現下至鏈路層的資料操作。
三、**
#include #include #include #include #include #pragma comment(lib,"ws2_32.lib")
#define buffer_max 2048
#define ip_hdrincl 2
#define sio_rcvall _wsaiow(ioc_vendor,1)
using namespace std;
int main()
// if(sock = socket(af_inet, sock_raw, ipproto_raw)<0)
//設定原始套接字能夠接受所有的資料
dword dwvalue = 1;
if(ioctlsocket(sock, sio_rcvall, &dwvalue)!=0)
while(true)
} cout<
網路嗅探器
網路嗅探器 把網絡卡設定成混雜模式,並可實現對網路上傳輸的資料報的捕獲與分析。原理 通常的套接字程式只能響應與自己mac位址相匹配的 或者是 廣播形式發出的資料幀,對於其他形式的資料幀網路介面採取的動作是直接丟棄 為了使網絡卡接收所有經過他的封包,要將其設定成混雜模式,通過原始套接字來實現。設定混雜...
網路嗅探實驗
一 實驗目的 掌握sniffer 嗅探器 工具的使用方法,實現ftp http資料報的捕捉。掌握對捕獲資料報的分析方法,了解ftp http資料報的資料結構和連線過程,了解ftp http協議明文傳輸的特性,以建立安全意識。二 實驗環境 每兩個學生為一組 其中學生a進行http或者ftp連線,學生b...
VC 程式設計實現網路嗅探器
引言 從事網路安全的技術人員和相當一部分準黑客 指那些使用現成的黑客軟體進行攻擊而不是根據需要去自己編寫 的人 都一定不會對網路嗅探器 sniffer 感到陌生,網路嗅探器無論是在網路安全還是在黑客攻擊方面均扮演了很重要的角色。通過使用網路嗅探器可以把網絡卡設定於混雜模式,並可實現對網路上傳輸的資料...