資源簡介
1)以命令行形式運行:ipparse logfile,其中ipparse是程序名, 而logfile則代表記錄結果的日志文件。
2)在標準輸出和日志文件中寫入捕獲的IP包的版本、頭長度、服務類型、數據包總長度、數據包標識、分段標志、分段偏移值、生存時間、上層協議類型、頭校驗和、源IP地址和目的IP地址等內容。
3)能夠解析不同協議數據包
4)當程序接收到鍵盤輸入Ctrl+C時退出
代碼片段和文件信息
#include?
#include?
#include?
#include?
#pragma???comment(lib“ws2_32.lib“)
typedef?struct?_IP_HEADER??//定義IP頭
{
???union
????{
???????BYTE?Version;??????//版本(前4位)
???????BYTE?HdrLen;???????//IHL(后4位),報頭標長
????};
????BYTE?ServiceType;????//服務類型
????WORD?TotalLen;???????//總長
????WORD?ID;?????????????//標識
????union
????{
???????WORD?Flags;??????//標志(前3位)
???????WORD?FragOff;????//分段偏移(后13位)
????};
????BYTE?TimeToLive;????//生命期
????BYTE?Protocol;??????//協議
????WORD?HdrChksum;?????//頭校驗和????
????DWORD?SrcAddr;??????//源地址
????DWORD?DstAddr;??????//目的地址
????BYTE?Options;???????//選項
}IP_HEADER;
//逐位解析IP頭中的信息
void?getVersion(BYTE?b?BYTE?&?version)
{
version=b>>4;?????????//右移4位獲取版本字段????????
}
void?getIHL(BYTE?bBYTE?&?res
- 上一篇:封裝SQLITE,使用SQLITE更加方便,c++版本
- 下一篇:點云圓柱提取代碼
評論
共有 條評論