使用winpcap开发网络抓包工具
前言:
winpcap(windows packet capture)是windows平臺(tái)下一個(gè)免費(fèi),公共的網(wǎng)絡(luò)訪問(wèn)系統(tǒng)。開(kāi)發(fā)winpcap這個(gè)項(xiàng)目的目的在于為win32應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)底層的能力。它用于windows系統(tǒng)下的直接的網(wǎng)絡(luò)編程。進(jìn)行過(guò)網(wǎng)絡(luò)方面學(xué)習(xí)的都知道,wireshark軟件是基于winpcap的,winpcap可直接開(kāi)發(fā)基于網(wǎng)絡(luò)底層協(xié)議的應(yīng)用程序,例如arp,以后會(huì)寫(xiě)一篇arp的開(kāi)發(fā)、應(yīng)用和防御
功能需求:
1、截取主機(jī)A發(fā)送給主機(jī)B的消息
2、獲取消息保存到文件
3、將消息下發(fā)到主機(jī)B
4、截取接收主機(jī)B消息
5、獲取消息保存到文件
6、將消息轉(zhuǎn)發(fā)到主機(jī)A
程序設(shè)計(jì)
1、由于winpcap是基于網(wǎng)卡的數(shù)據(jù)獲取,所以先獲取正確的網(wǎng)卡
2、打開(kāi)選擇的網(wǎng)卡設(shè)備
設(shè)計(jì)一個(gè)獲取主機(jī)A消息的線程和一個(gè)獲取主機(jī)B消息的線程。
相關(guān)接口介紹
1、int pcap_findalldevs(pcap_if_t **, char *);//獲取所有網(wǎng)絡(luò)設(shè)備,保存于pcap_if_t 指向的內(nèi)存空間
2、void pcap_freealldevs(pcap_if_t *); // 清空所有網(wǎng)絡(luò)設(shè)備
3、pcap_t *pcap_open(const char *source, // 獲取的設(shè)備名
int snaplen, //要捕捉的數(shù)據(jù)包的部分
int flags, // 模式
int read_timeout,// 超時(shí)時(shí)間
struct pcap_rmtauth *auth, // 遠(yuǎn)程機(jī)器驗(yàn)證
char *errbuf);// 錯(cuò)誤緩沖池
4、void pcap_close(pcap_t *);//關(guān)閉設(shè)備
5、int pcap_compile(//編譯過(guò)濾規(guī)則
pcap_t *,
const char *,
int,
bpf_u_int32);
6、int pcap_setfilter(pcap_t *, struct bpf_program *);// 設(shè)置過(guò)濾規(guī)則
7、int pcap_next_ex(// 從interface或離線記錄文件獲取一個(gè)報(bào)文
pcap_t *,
struct pcap_pkthdr **, // 報(bào)文頭,包含mac地址
const u_char **);//報(bào)文內(nèi)容
程序設(shè)計(jì)
main.cpp
總結(jié)
以上是生活随笔為你收集整理的使用winpcap开发网络抓包工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工作143:学一个比较好的框架
- 下一篇: 塔防游戏策划方案unity