其實叫抓包工具,其實就是抓取流經自己網絡卡的所有ip包,我們能夠按照ip包的協議解析不就行了。
實現的核心在這裡:
1其他的就不多說了,有開發經驗的應該都會,這個是半天弄出來的,所以很多**沒有整理,還請見諒。我主要是實現功能,好自己用。//建立socket
2 sock =socket(af_inet, sock_raw, ipproto_ip);
3if (sock ==invalid_socket) 4
8//獲取本機位址
9char name[128
];
10if (-1 == gethostname(name, sizeof
(name)))
11
16struct hostent *phostent;
17 phostent =gethostbyname(name);
18//
繫結本地位址到socket控制代碼
19sockaddr_in addr;
20 addr.sin_family =af_inet;
21 addr.sin_addr = *(in_addr*)phostent->h_addr_list[0]; //
ip
22 addr.sin_port = 8888; //
埠,ip層埠可隨意填
23if (socket_error == bind(sock, (sockaddr *)&addr, sizeof
(addr)))
24
2930
//設定該socket為接收所有流經繫結的ip的網絡卡的所有資料,包括接收和傳送的資料報
31 u_long sioarg = 1
; 32 dword wt = 0
; 33
if (socket_error == wsaioctl(sock, sio_rcvall, &sioarg, sizeof(sioarg), null, 0, &wt, null, null))
34
39//
我們只需要接收資料,因此設定為阻塞io,使用最簡單的io模型
40 u_long bioarg = 0
; 41
if (socket_error == ioctlsocket(sock, fionbio, &bioarg))
42
47//
開始接收資料
48//
因為前面已經設定為阻塞io,recv在接收到資料前不會返回。
49 g_event = createevent(null,true,false,null);
下面是截圖:
模仿Wireshark網路抓包工具實現 c
其實叫抓包工具,其實就是抓取流經自己網絡卡的所有ip包,我們能夠按照ip包的協議解析不就行了。實現的核心在這裡 1 建立socket 2 sock socket af inet,sock raw,ipproto ip 3if sock invalid socket 4 8 獲取本機位址 9char ...
用WireShark進行網路抓包
第一步 安裝wireshark1.6.4的同時,依賴安裝了winpcap,winpcap是用於網路封包抓取的一套工具,可適用於32位的操作平台上解析網路封包。第二步 開啟wireshark開始抓包。然後我們開啟人人網 主頁。登陸操作,登陸後,停止抓包。第三步 在cmd中使用ipconfig 得到本機...
wireshark 抓包問題
一 the npf driver isn t running 這個錯誤是因為沒有開啟npf服務造成的。npf即網路資料報過濾器 netgroup packet filter,npf 是winpcap的核心部分,它是winpcap完成困難工作的元件。它處理網路上傳輸的資料報,並且對使用者級提供可捕獲 ...