資源簡介
點擊exe文件可以直接在命令行窗口下運行,支持手動輸入時間,輸出IP包的信息

代碼片段和文件信息
/*******************************************/
/*????????運行環境:Visual?Stdio2015???????*/
/*******************************************/
#include?“stdafx.h“
#include?“winsock2.h“
#include?“ws2tcpip.h“
#include?“iostream“
#include?“stdio.h“
#include??
#include
#pragma???comment(lib“ws2_32.lib“)
using?namespace?std;
string?str1[200];//存儲源IP地址
int?str2[200];//存儲IP出現次數
/*定義IP頭部數據結構*/
typedef?struct?_IP_HEADER
{
union
{
BYTE?Version;????//版本(前四位)??
BYTE?HdrLen;??????//報頭標長(后四位),IP頭長度
};
BYTE?ServiceType;????//服務類型
WORD?TotalLen;??????//總長度
WORD?ID;????????????//標志?
union
{
WORD?Flags;
WORD?FragOff;
};
BYTE?TimeToLive;????//生存時間
BYTE?Protocol;?????//協議?
WORD?HdrChksum;???????//首部檢驗和
DWORD?SrcAddr;??????//源地址
DWORD?DstAddr;??????//目的地址
BYTE?Options;
}IP_HEADER;
/*逐位解析IP頭中的信息,獲取版本號*/
void?getVersion(BYTE?b?BYTE?&?version)
{
version?=?b?>>?4;
}
void?getIHL(BYTE?b?BYTE?&?result)
{
result?=?(b?&?0x0f)?*?4;
}
/*解析服務類型*/
char?*?parseServiceType_getProcedence(BYTE?b)
{
switch?(b?>>?5)
{
case?7:
return?“Network?Control“;
break;
case?6:
return?“Internet?work?Control“;
break;
case?5:
return?“CRITIC/ECP“;
break;
case?4:
return?“Flash?Override“;
break;
case?3:
return?“Flsah“;
break;
case?2:
return?“Immediate“;
break;
case?1:
return?“Priority“;
break;
case?0:
return?“Routine“;
break;
default:
return?“Unknow“;
break;
}
}
char?*?parseServiceType_getTOS(BYTE?b)
{
b?=?(b?>>?1)?&?0x0f;
switch?(b)
{
case?0:
return?“Normal?service“;
break;
case?1:
return?“Minimize?monetary?cost“;
break;
case?2:
return?“Maximize?reliability“;
break;
case?4:
return?“Maximize?throughput“;
break;
case?8:
return?“Minimize?delay“;
break;
case?15:
return?“Maximize?security“;
break;
default:
return?“Unknow“;
}
}
/*?獲取禁止分片標志和分片標志?*/
void?getFlags(WORD?w?BYTE?&?DF?BYTE?&?MF)
{
DF?=?(w?>>?14)?&?0x01;
MF?=?(w?>>?13)?&?0x01;
}
/*?獲取分片偏移量?*/
void?getFragOff(WORD?w?WORD?&?fragOff)
{
fragOff?=?w?&?0x1fff;
}
/*獲取協議*/
char?*?getProtocol(BYTE?Protocol)
{
switch?(Protocol)
{
case?1:
return?“ICMP“;
case?2:
return?“IGMP“;
case?4:
return?“IP?in?IP“;
case?6:
return?“TCP“;
case?8:
return?“EGP“;
case?17:
return?“UDP“;
case?41:
return?“IPv6“;
case?46:
return?“RSVP“;
case?89:
return?“OSPF“;
default:
return?“UNKNOW“;
}
}
/*?解析IP數據包?*/
string?ipparse(FILE*?file?char*?bufferint?count)
{
IP_HEADER?ip?=?*(IP_HEADER*)buffer;
fseek(file?0?SEEK_END);
fprintf(file?“第%d個數據包\r\n“?count);
BYTE?version;
getVersion(ip.Version?version);
fprintf(file?“IP包版本=%d\r\n“?version);
BYTE?headerLen;
getIHL(ip.HdrLen?headerLen);
fprintf(file?“頭長度=%d(BYTE)\r\n“?headerLen);
fprintf(file?“服務類型=%s%s\r\n“
parseServiceType_getProcedence(ip.ServiceType)
parseServiceType_getTOS(ip.S
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-06-04?15:40??解析IP數據包\
?????文件????????6751??2016-12-22?08:41??解析IP數據包\AnalysisIP.cpp
?????文件?????1450496??2016-12-21?20:02??解析IP數據包\AnalysisIP.exe
?????文件?????????214??2016-04-12?19:18??解析IP數據包\stdafx.cpp
?????文件?????????234??2016-04-12?19:18??解析IP數據包\stdafx.h
?????文件?????????240??2016-04-12?19:18??解析IP數據包\targetver.h
評論
共有 條評論