• 大小: 8.05MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-10
  • 语言: 其他
  • 标签: DPI  端口匹配  

资源简介

综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别 压缩包中有技术说明文档,源码,测试数据包等, 注释详细,适合做P2P流量识别的参考下。

资源截图

代码片段和文件信息

#include
#include
#include
#include
using namespace std;

//上下行流量比值阈值
#define LowThreshhold 0.3
#define UpThreshhold 1.8

//流结构体
typedef struct Flow
{
string SrcIP;//源IP
string DstIP;//目的IP
string SrcPort;//源端口
string DstPort;//目的端口
string Protocol;//3层协议
int pNum;//流中数据包个数
float Traffic;//此流的总数据量
float duration;//流的持续时间
int p2pFlag;//标识此流是否p2p流
int UDFlag;//标识此流是上传流还是下载流1 上传,0 下载
}Flow;

//端口结构体
typedef struct PortsSet
{
string protocol;//协议类型,TCP或UDP
string startport;//起始端口
string endport;//终止端口
}PortsSet;

//深度数据包检测,在数据data中查找特征位trait
int DPI(string trait string data)
{
int pos = data.find(trait);//在data中查找trait
if(pos >= 0)
return 1;
else
return 0;
}

void main()
{
int ijindex;
float ratio=0;//上下行流量比值
int PacketsNum=0;//总数据包个数
int DPIp2pNum=0;//DPI检测到的p2p数据包个数
double DPIp2pTraffic=0;//DPI检测到的p2p数据包流量
int Portp2pNum=0;//端口匹配检测到的p2p数据包个数
double Portp2pTraffic=0;//端口匹配检测到的p2p数据包流量
int TrafficFeaturep2pNum=0;//通过流量特征检测到的p2p数据包个数
double TrafficFeaturep2pTraffic=0;//通过流量特征检测到的p2p数据包流量
int OurMethodp2pNum=0;//综合方法检测到的p2p数据包个数
double OurMethodp2pTraffic=0;//综合方法检测到的p2p数据包流量
int TraitsNum=0;//特征串个数
int PortsNum=0;//特征端口个数
int LabHostsNum=0;//实验室主机个数
string Traits[50];//特征串数组
PortsSet Ports[50];//端口数组
string LabHostsIP[200];//实验室主机IP数组
int FlowsNum=0;//流的个数
int MaxFlowPacketsNum=0;//单个流中的最大数据包个数
double MaxFlowTraffic=0;//单个流中的最大流量
Flow Flows[800];//流数组

int NewPacketFlag = 0;//标识出现新数据包
int HaveDataFlag = 0;//标识每个包是否有数据部分
int SYNFlag = 0;//标识每个包是否有SYN标识位
int FINFlag = 0;//标识每个包是否有FIN或RST标志位
int FlowNO=0;//当前数据包所属的流号
int PacketLength = 0;//每个包的总长度
int DataLength = 0;//每个包的数据部分长度
string PacketNO;//每个包的序号(帧序号)
string SrcPortDstPort;//每个数据包的源端口和目的端口
string SrcIP DstIP;//每个数据包的源IP和目的IP
string Protocol;//每个数据包的协议类型
string Time;//每个数据包的捕获时间(单位是秒)
char * Buffer;//当前扫描行
Buffer = (char *)malloc(200 * sizeof(char));//分配空间

ifstream fin;//数据包文件
ifstream fin_Traits;//特征串集合文件
ifstream fin_Ports;//端口集合文件
ifstream fin_LabIP;//实验室主机IP集合文件
ofstream fout;//流信息文件
//fin.open(“PacketsTest.txt“);//打开数据包文件
fin.open(“2012.12.16-16.40(5000个,4376755字节).txt“);
fin_Traits.open(“Traits.txt“);//打开特征串集合文件
fin_Ports.open(“Ports.txt“);//打开端口集合文件
fin_LabIP.open(“实验室主机IP.txt“);//打开实验室主机IP集合文件
fout.open(“流信息.txt“);
if(!fin)
cout<<“打不开数据包文件!“< if(!fin_Traits)
cout<<“打不开特征串集合文件!“< if(!fin_Ports)
cout<<“打不开端口集合文件!“< if(!fin_LabIP)
cout<<“打不开实验室主机IP集合文件!“< if(!fout)
cout<<“无法创建流信息文件!“<

//流数组初始化
for(i=0; i<800; i++)
{
Flows[i].pNum = 0;
Flows[i].duration = 0.0f;
Flows[i].Traffic = 0;
Flows[i].p2pFlag = 0;
Flows[i].UDFlag = 1;
}

//将特征串集合文件读入到特征串数组Traits[]
for(i=0; !fin_Traits.eof(); i++)
{
TraitsNum++;
fin_Traits.getline(Buffer30);
Traits[i] = Buffer;
//cout< }
//co

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     171181  2013-01-26 16:04  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\技术报告.docx

     文件   21940287  2012-12-16 16:07  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\源码\2012.12.16-16.40(5000个,4376755字节).txt

     文件      13727  2012-12-18 21:08  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\源码\p2pTrafficDetect.cpp

     文件        478  2012-12-16 16:09  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\源码\Ports.txt

     文件         89  2012-12-16 17:47  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\源码\Traits.txt

     文件        912  2012-12-16 17:20  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\源码\实验室主机IP.txt

     文件        290  2012-12-18 21:31  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\源码\说明.txt

     目录          0  2013-01-26 16:04  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别\源码

     目录          0  2013-01-26 16:04  综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别

----------- ---------  ---------- -----  ----

             22126964                    9


评论

共有 条评论