资源简介
综合运用端口匹配、深度数据包检测、流量特征进行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
相关资源
- USB设备的获取与判断通过VIDPID
- 汇编言语软件TDPIT
- 键盘钢琴KeyboardPiano(源代码)
- TCPIP调试助手
- 文档图像处理工具GdPicture.NET Ultimate
- KnapsackProblems ByHansKellererUlrichPferschyD
- fonts-chinese-3.02-12.el5.noarch.rpm和fonts-I
- 《实变函数与泛函分析基础》程其襄
- ndpi 最新版
- 火龙果开发板开发文档
- Horn R A Johnson C R Matrix Analysis (CUP 19
- 文档图像处理工具包GdPicture.NET Ultim
- 计算机网络高级教程400DPI高清扫描版
- FindPic.zip
- dpinst_amd64
- MDPI_template.zip
- VC通过FindPic.dll库 屏幕找图源代码
- MIPI Alliance Standard for Display Pixel Inter
- 图像DPI调整工具
- DPInst.exe
- DPInst32+64
- xp系统修改字体DPI需要的字体文件
- DPInst32.exe 与 DPInst64.exe
- Windows10-dpi解决工具
评论
共有 条评论