簡單的網路資料報分析小程式

2021-05-28 00:54:44 字數 3271 閱讀 2293

對mac、ip、tcp等的資料報進行抓取分析其結構,使用了pcap庫

1.mac.h

#include #include #include class pmacheader

~pmacheader()

void resetpt(const unsigned char * p)

unsigned short getprotocol();

std::string& getdststr();

std::string& getsrcstr();

};

2.mac.cpp

#include "stdafx.h"

#include "mac.h"

unsigned short pmacheader::getprotocol()

std::string& pmacheader::getdststr()

std::string& pmacheader::getsrcstr()

3.ip.h

#include #include #include class pipheader

~pipheader()

void reset(const unsigned char *pt)

short getvesion();//取ip的版本

short getheaderlen();//取ip報頭的長度 (1單位/4位元組)

short getserver();//服務

unsigned short gettotallen();//總長度

unsigned short getid();//標識

short getflag();

short getex();//偏移量

short getttl();

unsigned short getprotocol();

unsigned short getcheck();//校驗碼

std::string& getsrcstr();//源ip的字串形式

std::string& getdststr();//目標ip的字串形式

};

4.ip.cpp

#include "stdafx.h"

#include "ip.h"

short pipheader::getvesion()

short pipheader::getheaderlen()

short pipheader::getserver()

unsigned short pipheader::gettotallen()

unsigned short pipheader::getid()

short pipheader::getflag()

short pipheader::getex()

short pipheader::getttl()

unsigned short pipheader::getprotocol()

unsigned short pipheader::getcheck()

std::string& pipheader::getsrcstr()

std::string& pipheader::getdststr()

5.protocoltype.cpp

#include "stdafx.h"

#include "protocoltype.h"

const unsigned char* getmacpointer(const unsigned char *p)

const unsigned char* getarppointer(const unsigned char *p)

const unsigned char* getippointer(const unsigned char *p)

const unsigned char* gettcppointer(const unsigned char *p)

6.使用mfc庫,其中的主要內容如下,使用了pcap

bool cpcdlgdlg::initadapter(void)

else

}return true;

}cpcdlgdlg::~cpcdlgdlg(void)

void cpcdlgdlg::onbnclickedbuttoncatch()

if (!iscatch)

}void cpcdlgdlg::insertpackettolist(pcap_t *adhandle, pcap_pkthdr *header, const u_char *pkt_data)

//輸出ip首部主要內容

if (protocol_type == protocol_ip)

}total_info_ascii_str += " 未知協議";

dword dwnum = multibytetowidechar (cp_acp, 0, total_info_ascii_str.c_str(), -1, null, 0);

tchar* packet_info = new tchar[dwnum];

multibytetowidechar(cp_acp, 0, total_info_ascii_str.c_str(), -1, packet_info, dwnum);

strpacketinfo.format(_t("%s"), packet_info);

delete packet_info;

((clistbox*)getdlgitem(idc_list_packet))->addstring(strpacketinfo);

return;

}uint cpcdlgdlg::catchpacket(lpvoid pparam)

pdlgdlg->insertpackettolist((pcap_t*)pparam, header, pkt_data);

if (!pdlgdlg->iscatch)

}if (res == -1)

return 0;

}void cpcdlgdlg::onbnclickedbuttonstop()

}void cpcdlgdlg::onbnclickedbuttonclean()

還有一些tcp,arp的標頭檔案分析,基本和mac ip的內容類似

Linux網路資料報分析

在linux下分析網路情況一般使用tcpdump命令。tcpdump命令後面一些常用引數 i eth0 這是網絡卡 w 檔名 將資料報儲存到檔案 c 100 只抓100個包 host 主機ip 只抓指定主機與本機的資料報 舉例 tcpdump c 2000 w home dg01.cap tcpdu...

網路資料報分析工具列表

此列表內容主要來自於某書的附錄部分。1 wireshark,這方面神器級工具,不贅述,自己好好學吧。2 tcpdump和windump,完全基於文字的資料報捕獲和分析 3 cain abel windows平台上最好的arp攻擊工具 4 scapy 強大的python庫,自己寫指令碼操縱資料報 5 ...

Wireshark UDP資料報分析 廣播

udp協議 使用者資料報協議 udp協議是乙個簡單的面向資料報的傳輸層協議 程序的每個輸出操作都正好產生乙個 u d p資料報,並組裝成乙份待傳送的 i p資料報。udp協議的特點 udp是乙個無連線的協議 udp使用最大努力交付,不提供可靠性 udp頭部只有8個位元組 下面是udp資料報在ip資料...