模仿Wireshark網路抓包工具實現 c

2021-07-28 21:33:01 字數 1489 閱讀 4502

其實叫抓包工具,其實就是抓取流經自己網絡卡的所有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完成困難工作的元件。它處理網路上傳輸的資料報,並且對使用者級提供可捕獲 ...