對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資料...