使用WinPcap抓包分析網路協議

2021-06-05 14:10:03 字數 1528 閱讀 5003

//捕獲網路資料報的c++程式

//可以獲得資料報長度、通過乙太網型別確定上層協議、源乙太網位址和目的乙太網位址!

#include "pcap.h"

#include#pragma comment(lib,"wpcap.lib")

#pragma comment(lib,"packet.lib")

#pragma comment(lib,"ws2_32.lib")

/*以下是乙太網協議格式*/

struct ether_header

;struct ip_header

;void ip_protool_packet_callback(u_char *argument,const struct pcap_pkthdr* packet_header,const u_char* packet_content)

printf("檢驗和:%d\n",checksum);

}void ethernet_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr* packet_header,const u_char* packet_content)

mac_string=ethernet_protocol->ether_shost;

printf("%02x:%02x:%02x:%02x:%02x:%02x\n",*mac_string,*(mac_string+1),*(mac_string+2),*(mac_string+3),*(mac_string+4),*(mac_string+5));

mac_string=ethernet_protocol->ether_dhost;

printf("%02x:%02x:%02x:%02x:%02x:%02x\n",*mac_string,*(mac_string+1),*(mac_string+2),*(mac_string+3),*(mac_string+4),*(mac_string+5));

if(ethernet_type==0x0800)//繼續分析ip協議

printf("----------------------------------------------\n");

packet_number++;

}int main()

winpcap中的資料結構:

pcap_t  乙個已開啟的捕捉例項的描述符。這個結構體對使用者來說是不透明的,它通過wpcap.dll提供的函式,維護了它的內容。

struct pcap_pkthdr

;pcap_t* pcap_open_live  ( const char *  device,  /* 開啟的網路裝置名 */

int  snaplen,  /* 要捕捉的最大位元組數 */

int  promisc,  /* 是否為 */

int  to_ms,   /* 超時時間 */

char *  ebuf   /* 錯誤和警告資訊 */

) winpcap 中文技術文件:

網路抓包與分析

抓包命令 1.指定網絡卡 蒐集所有報文 儲存到指定位置 tcpdump i eth0 s 0 w home test.pcap 2.指定tcp udp協議 tcpdump tcp i eth0 s 0 w home test.pcap 3.指定源ip tcpdump i eth0 src host ...

網路協議抓包分析 (1)

配置位址 開啟電腦介面卡設定,修改所用介面卡的ipv4的ip位址,即 internet 協議版本4 按下圖所示修改。網路位址規劃表 源ip位址 預設閘道器位址 目的ip位址 網域名稱備註 192.168.50.123 192.168.50.1 43.248.191.10 www.3dmgame.co...

ip網路抓包分析(1)

獲取原先的網路配置,將ip位址的後8個位元組改為學號的後3位。連通性測試ping www.baidu.com能正常連線網路。源位址目的位址 網域名稱172.24.55.69 一 應用層 二 傳輸層 tcp協議tcp三次握手 第一次握手 客戶端傳送乙個tcp,標誌位為syn,序列號為0,代表客戶端請求...