亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 1.cpp

?? 一個利用KDD1999數據集而完成的改進K-means聚類算法的實現.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>
#include <malloc.h>
#include <math.h>
#include <time.h>

#include <iostream>
#include <vector>
using namespace std ;

typedef struct recorder
{
	float duration;           //連接的持續時間
	char pro_type[8];         //端口類型
	char service[8];          //服務類型
	char flag[5];             //標志域
	double src_dst_bytes[2];  //源或目的主機發向對方的字節數
	bool land;                //二值屬性
	float w_u_h_n[4];
	bool log_in;              //二值屬性
	float num_root[8];
	bool host_guest[2];       //二值屬性
	float srv_etc[9];
	double dst_host[2];
	float host[8];
	char is_normal[20];
	struct recorder *next;    //方便同一簇中記錄間連接起來
}Recorder;

//簇特征描述
typedef struct subContainer
{
	Recorder *pFirstRec;       //指向屬于該簇的第一個記錄
	Recorder *pLastRec;        //指向最后一個記錄,方便插入
	unsigned int recordNum;    //該簇的記錄個數
	Recorder clusterCenter;    //簇的質心,需要不斷更新
	char is_normal[20];        //該簇被標記為正常還是異常
}SubContainer;

typedef vector<Recorder *> RecorderVector;     //定義全局容器類型  
typedef vector<SubContainer *> ClusterVector;  //簇容器類型

/**
 * @函數名	: ReadData
 * @brief	: 
 * @return	: void 
 * @param	: FILE *fp
 * @param	: Recorder *pRecorder
 * @param	: Recorder &avg_calc
 * @param	: unsigned int &calcNormal
 * @remark	: 讀取文件記錄
*/
void ReadData(FILE *fp, Recorder *pRecorder, Recorder &avg_calc, unsigned int &calcNormal)
{
	int i = 0;

	fscanf(fp, "%f, %[^,], %[^,], %[^,], %Lf, %Lf, %d, %f, %f, %f, %f, %d, %f, %f, %f, %f, %f, \
		%f, %f, %f, %d, %d, %f, %f, %f, %f, %f, %f, %f, %f, %f, %Lf, %Lf, %f, %f, %f, %f, \
		%f, %f, %f, %f,%[^.].\r\n", 
		&pRecorder->duration, pRecorder->pro_type, pRecorder->service, pRecorder->flag, \
		&pRecorder->src_dst_bytes[0], &pRecorder->src_dst_bytes[1], &pRecorder->land, \
		&pRecorder->w_u_h_n[0], &pRecorder->w_u_h_n[1], &pRecorder->w_u_h_n[2], \
		&pRecorder->w_u_h_n[3], &pRecorder->log_in, &pRecorder->num_root[0], \
		&pRecorder->num_root[1], &pRecorder->num_root[2], &pRecorder->num_root[3], \
		&pRecorder->num_root[4], &pRecorder->num_root[5], &pRecorder->num_root[6], \
		&pRecorder->num_root[7], &pRecorder->host_guest[0], &pRecorder->host_guest[1], \
		&pRecorder->srv_etc[0], &pRecorder->srv_etc[1], &pRecorder->srv_etc[2], \
		&pRecorder->srv_etc[3], &pRecorder->srv_etc[4], &pRecorder->srv_etc[5], \
		&pRecorder->srv_etc[6], &pRecorder->srv_etc[7], &pRecorder->srv_etc[8], \
		&pRecorder->dst_host[0], &pRecorder->dst_host[1], &pRecorder->host[0], \
		&pRecorder->host[1], &pRecorder->host[2], &pRecorder->host[3], &pRecorder->host[4], \
		&pRecorder->host[5], &pRecorder->host[6], &pRecorder->host[7], pRecorder->is_normal);
	strcat(pRecorder->is_normal, ".");

	if (0 == strcmp("normal.", pRecorder->is_normal))
	{
		calcNormal++;
	}

	//所有記錄對應屬性求和
	avg_calc.duration += pRecorder->duration;
	avg_calc.src_dst_bytes[0] += pRecorder->src_dst_bytes[0];
	avg_calc.src_dst_bytes[1] += pRecorder->src_dst_bytes[1];
	for (i = 0; i < 4; ++i)
	{
		avg_calc.w_u_h_n[i] += pRecorder->w_u_h_n[i];
	}
	for (i = 0; i < 8; ++i)
	{
		avg_calc.num_root[i] += pRecorder->num_root[i];
	}
	for (i = 0; i < 9; ++i)
	{
		avg_calc.srv_etc[i] += pRecorder->srv_etc[i];
	}
	avg_calc.dst_host[0] += pRecorder->dst_host[0];
	avg_calc.dst_host[1] += pRecorder->dst_host[1];
	for (i = 0; i < 8; ++i)
	{
		avg_calc.host[i] += pRecorder->host[i];
	}
}

/**
 * @函數名	: Standardize
 * @brief	: 
 * @return	: void 
 * @param	: RecorderVector &recorderContainer
 * @param	: Recorder &avg_vector
 * @remark	: 對記錄進行標準化
*/
void Standardize(RecorderVector &recorderContainer, Recorder &avg_vector, Recorder &std_vector)
{
	int i;
	double temp = 1.0 / (recorderContainer.size() - 1);
	RecorderVector::iterator recorderIterator;

	//第一次遍歷統計標準差
	for (recorderIterator = recorderContainer.begin(); 
	recorderIterator != recorderContainer.end(); recorderIterator++)
	{
		std_vector.duration += pow((*recorderIterator)->duration - avg_vector.duration, 2);
		std_vector.src_dst_bytes[0] += pow((*recorderIterator)->src_dst_bytes[0] - 
			avg_vector.src_dst_bytes[0], 2);
		std_vector.src_dst_bytes[1] += pow((*recorderIterator)->src_dst_bytes[1] - 
			avg_vector.src_dst_bytes[1], 2);
		for (i = 0; i < 4; ++i)
		{
			std_vector.w_u_h_n[i] += pow((*recorderIterator)->w_u_h_n[i] - 
				avg_vector.w_u_h_n[i], 2);
		}
		for (i = 0; i < 8; ++i)
		{
			std_vector.num_root[i] += pow((*recorderIterator)->num_root[i] - 
				avg_vector.num_root[i], 2);
		}
		for (i = 0; i < 9; ++i)
		{
			std_vector.srv_etc[i] += pow((*recorderIterator)->srv_etc[i] - 
				avg_vector.srv_etc[i], 2);
		}
		std_vector.dst_host[0] += pow((*recorderIterator)->dst_host[0] - 
			avg_vector.dst_host[0], 2);
		std_vector.dst_host[1] += pow((*recorderIterator)->dst_host[1] - 
			avg_vector.dst_host[1], 2);
		for (i = 0; i < 8; ++i)
		{
			std_vector.host[i] += pow((*recorderIterator)->host[i] - 
				avg_vector.host[i], 2);
		}
	}

	//真正的標準差
	std_vector.duration = sqrt(temp * std_vector.duration);
	std_vector.src_dst_bytes[0] = sqrt(temp * std_vector.src_dst_bytes[0]);
	std_vector.src_dst_bytes[1] = sqrt(temp * std_vector.src_dst_bytes[1]);
	for (i = 0; i < 4; ++i)
	{
		std_vector.w_u_h_n[i] = sqrt(temp * std_vector.w_u_h_n[i]);
	}
	for (i = 0; i < 8; ++i)
	{
		std_vector.num_root[i] = sqrt(temp * std_vector.num_root[i]);
	}
	for (i = 0; i < 9; ++i)
	{
		std_vector.srv_etc[i] = sqrt(temp * std_vector.srv_etc[i]);
	}
	std_vector.dst_host[0] = sqrt(temp * std_vector.dst_host[0]);
	std_vector.dst_host[1] = sqrt(temp * std_vector.dst_host[1]);
	for (i = 0; i < 8; ++i)
	{
		std_vector.host[i] = sqrt(temp * std_vector.host[i]);
	}
	
	//第二次遍歷進行標準化
	for (recorderIterator = recorderContainer.begin(); 
	recorderIterator != recorderContainer.end(); recorderIterator++)
	{
		if (0 != std_vector.duration)
		{
			(*recorderIterator)->duration = ((*recorderIterator)->duration -
				avg_vector.duration) / std_vector.duration;
		}
		if (0 != std_vector.src_dst_bytes[0])
		{
			(*recorderIterator)->src_dst_bytes[0] = ((*recorderIterator)->src_dst_bytes[0] - 
			avg_vector.src_dst_bytes[0]) / std_vector.src_dst_bytes[0];
		}
		if (0 != std_vector.src_dst_bytes[1])
		{
			(*recorderIterator)->src_dst_bytes[1] = ((*recorderIterator)->src_dst_bytes[1] - 
			avg_vector.src_dst_bytes[1]) / std_vector.src_dst_bytes[1];
		}
		for (i = 0; i < 4; ++i)
		{
			if (0 != std_vector.w_u_h_n[i])
			{
				(*recorderIterator)->w_u_h_n[i] = ((*recorderIterator)->w_u_h_n[i] - 
				avg_vector.w_u_h_n[i]) / std_vector.w_u_h_n[i];
			}	
		}
		for (i = 0; i < 8; ++i)
		{
			if (0 != std_vector.num_root[i])
			{
				(*recorderIterator)->num_root[i] = ((*recorderIterator)->num_root[i] - 
				avg_vector.num_root[i]) / std_vector.num_root[i];
			}
		}
		for (i = 0; i < 9; ++i)
		{
			if (0 != std_vector.srv_etc[i])
			{
				(*recorderIterator)->srv_etc[i] = ((*recorderIterator)->srv_etc[i] - 
				avg_vector.srv_etc[i]) / std_vector.srv_etc[i];
			}
		}
		if (0 != std_vector.dst_host[0])
		{
			(*recorderIterator)->dst_host[0] = ((*recorderIterator)->dst_host[0] - 
			avg_vector.dst_host[0]) / std_vector.dst_host[0];
		}
		if (0 != std_vector.dst_host[1])
		{
			(*recorderIterator)->dst_host[1] = ((*recorderIterator)->dst_host[1] - 
			avg_vector.dst_host[1]) / std_vector.dst_host[1];
		}
		for (i = 0; i < 8; ++i)
		{
			if (0 != std_vector.host[i])
			{
				(*recorderIterator)->host[i] = ((*recorderIterator)->host[i] - 
				avg_vector.host[i]) / std_vector.host[i];
			}
		}
	}
}

/**
 * @函數名	: GetAverage
 * @brief	: 
 * @return	: void 
 * @param	: Recorder &avg_vector
 * @param	: int num
 * @remark	: 計算每個屬性的平均值
*/
void GetAverage(Recorder &avg_vector, int num)
{
	int i;
	avg_vector.duration = avg_vector.duration / (float)num;
	avg_vector.src_dst_bytes[0] = avg_vector.src_dst_bytes[0] / (double)num;
	avg_vector.src_dst_bytes[1] = avg_vector.src_dst_bytes[1] / (double)num;
	for (i = 0; i < 4; ++i)
	{
		avg_vector.w_u_h_n[i] = avg_vector.w_u_h_n[i] / (float)num;
	}
	for (i = 0; i < 8; ++i)
	{
		avg_vector.num_root[i] = avg_vector.num_root[i] / (float)num;
	}
	for (i = 0; i < 9; ++i)
	{
		avg_vector.srv_etc[i] = avg_vector.srv_etc[i] / (float)num;
	}
	avg_vector.dst_host[0] = avg_vector.dst_host[0] / (double)num;
	avg_vector.dst_host[1] = avg_vector.dst_host[1] / (double)num;
	for (i = 0; i < 8; ++i)
	{
		avg_vector.host[i] = avg_vector.host[i] / (float)num;
	}
}

/**
 * @函數名	: CalcNumDif
 * @brief	: 
 * @return	: double 
 * @param	: Recorder *pRecord
 * @param	: Recorder &clusterCenter
 * @remark	: 計算連續屬性差異
*/
double CalcNumDif(Recorder *pRecord, Recorder &clusterCenter)
{
	double numDif = 0.;
	int i = 0;
	
	numDif += pow(pRecord->duration - clusterCenter.duration, 2);
	numDif += pow(pRecord->src_dst_bytes[0] - clusterCenter.src_dst_bytes[0], 2);
	numDif += pow(pRecord->src_dst_bytes[1] - clusterCenter.src_dst_bytes[1], 2);
	for (i = 0; i < 4; ++i)
	{
		numDif += pow(pRecord->w_u_h_n[i] - clusterCenter.w_u_h_n[i], 2);
	}
	for (i = 0; i < 8; ++i)
	{
		numDif += pow(pRecord->num_root[i] - clusterCenter.num_root[i], 2);
	}
	for (i = 0; i < 9; ++i)
	{
		numDif += pow(pRecord->srv_etc[i] - clusterCenter.srv_etc[i], 2);
	}
	numDif += pow(pRecord->dst_host[0] - clusterCenter.dst_host[0], 2);
	numDif += pow(pRecord->dst_host[1] - clusterCenter.dst_host[1], 2);
	for (i = 0; i < 8; ++i)
	{
		numDif += pow(pRecord->host[i] - clusterCenter.host[i], 2);
	}
	return numDif;
}

/**
 * @函數名	: CalcFeaDif
 * @brief	: 
 * @return	: double 
 * @param	: Recorder *pRecord
 * @param	: Recorder *pFirstRecord
 * @param	: unsigned int totalRec
 * @remark	: 計算分類屬性差異
*/
double CalcFeaDif(Recorder *pRecord, Recorder *pFirstRecord, unsigned int totalRec)
{
	double feaDif = 0;
	int i = 0;
	unsigned int appeaNum[7] = {0};
	
	while(NULL != pFirstRecord)
	{
		if (0 == strcmp(pRecord->pro_type, pFirstRecord->pro_type))
		{
			appeaNum[0]++;
		}
		if (0 == strcmp(pRecord->service, pFirstRecord->service))
		{
			appeaNum[1]++;
		}
		if (0 == strcmp(pRecord->flag, pFirstRecord->flag))
		{
			appeaNum[2]++;
		}
		if (pRecord->land == pFirstRecord->land)
		{
			appeaNum[3]++;
		}
		if (pRecord->log_in == pFirstRecord->log_in)
		{
			appeaNum[4]++;
		}
		if (pRecord->host_guest[0] == pFirstRecord->host_guest[0])
		{
			appeaNum[5]++;
		}
		if (pRecord->host_guest[1] == pFirstRecord->host_guest[1])
		{
			appeaNum[6]++;
		}
		
		pFirstRecord = pFirstRecord->next;
	}
	
	for (i = 0; i < 7; ++i)
	{
		feaDif += pow(1.0 - appeaNum[i] / (float)totalRec, 2);
	}
	return feaDif;
}

/**
 * @函數名	: UpdateCluster
 * @brief	: 
 * @return	: void 
 * @param	: SubContainer *pRecord
 * @remark	: 更新簇中心
*/
void UpdateCluster(SubContainer *pRecord)
{
	int i;
	int num = pRecord->recordNum;
	Recorder *pList = pRecord->pFirstRec;
	Recorder center ;
	memset(&center, 0 ,sizeof(Recorder));

	while(NULL != pList)
	{
		center.duration += pList->duration;
		center.src_dst_bytes[0] += pList->src_dst_bytes[0];
		center.src_dst_bytes[1] += pList->src_dst_bytes[1];
		for (i = 0; i < 4; ++i)
		{
			center.w_u_h_n[i] += pList->w_u_h_n[i];
		}
		for (i = 0; i < 8; ++i)
		{
			center.num_root[i] += pList->num_root[i];
		}
		for (i = 0; i < 9; ++i)
		{
			center.srv_etc[i] += pList->srv_etc[i];
		}
		center.dst_host[0] += pList->dst_host[0];
		center.dst_host[1] += pList->dst_host[1];
		for (i = 0; i < 8; ++i)
		{
			center.host[i] += pList->host[i];
		}

		pList = pList->next;
	}
	//求平均
	center.duration = center.duration / num;
	center.src_dst_bytes[0] = center.src_dst_bytes[0] / num;
	center.src_dst_bytes[1] = center.src_dst_bytes[1] / num;
	for (i = 0; i < 4; ++i)
	{
		center.w_u_h_n[i] = center.w_u_h_n[i] / num;
	}
	for (i = 0; i < 8; ++i)
	{
		center.num_root[i] = center.num_root[i] / num;
	}
	for (i = 0; i < 9; ++i)
	{
		center.srv_etc[i] = center.srv_etc[i] / num;
	}
	center.dst_host[0] = center.dst_host[0] / num;
	center.dst_host[1] = center.dst_host[1] / num;
	for (i = 0; i < 8; ++i)
	{
		center.host[i] = center.host[i] / num;
	}

	pRecord->clusterCenter = center;
}

/**
 * @函數名	: SetNewCluster
 * @brief	: 
 * @return	: bool 
 * @param	: Recorder *pRecord
 * @param	: ClusterVector &clusterContainer
 * @remark	: 生成新的簇
*/
bool SetNewCluster(Recorder *pRecord, ClusterVector &clusterContainer)
{
	SubContainer *pSubCon = (SubContainer *)malloc(sizeof(SubContainer));
	if (NULL == pSubCon)
	{
		printf("分配內存錯誤。\n");
		return 0;
	}
	memset(pSubCon, 0 , sizeof(SubContainer));
	
	pSubCon->pFirstRec = pRecord;
	pSubCon->pLastRec = pRecord;
	pSubCon->recordNum = 1;
	pSubCon->clusterCenter = *pRecord;
	
	clusterContainer.push_back(pSubCon);
	return 1;
}

void OutputInfo(RecorderVector &recorderContainer, ClusterVector &clusterContainer, 
				const unsigned int &calcAnormal, const unsigned int &calcNormal)
{
	//后續輸出
	printf("總的記錄的個數是:%d\n", recorderContainer.size());
	printf("其中簇的個數有 %u\n\n", clusterContainer.size());
	
	unsigned int correct = 0;
	unsigned int incorrect = 0;
	
	ClusterVector::iterator clusterIterator;
	for (clusterIterator = clusterContainer.begin(); 
	clusterIterator != clusterContainer.end(); ++clusterIterator)
	{
		printf("該簇中共有記錄 %u\n", (*clusterIterator)->recordNum);
		int num = 0;
		Recorder *pList = (*clusterIterator)->pFirstRec;
		while (NULL != pList)
		{
			if (0 == strcmp("normal.", pList->is_normal))
			{
				num++;
			}
			pList = pList->next;
		}
		printf("其中正常記錄 %d\n\n", num);
		//該簇被標記為攻擊簇
		if ((*clusterIterator)->recordNum <= (recorderContainer.size() * 0.015))
		{
			//正確檢測到的攻擊數
			correct += (*clusterIterator)->recordNum - num;
			incorrect += num;
			strcpy((*clusterIterator)->is_normal, "anormal.");
		}
		//該簇被標記為正常簇
		else
		{
			strcpy((*clusterIterator)->is_normal, "normal.");
		}
	}
	printf("該閾值下的檢測率是: %%%.3f\n", correct / (float)calcAnormal *100);
	printf("該閾值下的誤報率是: %%%.3f\n", incorrect / (float)calcNormal *100);
}

/**
 * @函數名	: GetStadardize
 * @brief	: 
 * @return	: void 
 * @param	: FILE *pTest
 * @param	: RecorderVector &recorderTest
 * @param	: unsigned int &calcNormal
 * @remark	: 集成讀記錄標準化
*/
void GetStadardize(FILE *pTest, RecorderVector &recorderTest, unsigned int &calcNormal,
				   Recorder &testAverage, Recorder &std_vector)
{	
	Recorder *pTestRecorder = NULL;
	while (!feof(pTest))
	{
		pTestRecorder = (Recorder *)malloc(sizeof(Recorder));
		if (NULL == pTestRecorder)
		{
			printf("分配內存錯誤。\n");
			return;
		}
		memset(pTestRecorder, 0, sizeof(Recorder));
		
		//讀入一條記錄
		ReadData(pTest, pTestRecorder, testAverage, calcNormal);
		
		//把該指針壓入容器
		recorderTest.push_back(pTestRecorder);
	}
	
	//求平均
	GetAverage(testAverage, recorderTest.size());
	
	//標準化
	Standardize(recorderTest, testAverage, std_vector);
}

void MinDis(Recorder *pRecorder, ClusterVector &clusterContainer, double &minTemp, 
			unsigned int &finalCluster)
{
	double numDif = CalcNumDif(pRecorder, clusterContainer.at(0)->clusterCenter);
	double feaDif = CalcFeaDif(pRecorder, clusterContainer.at(0)->pFirstRec,
		clusterContainer.at(0)->recordNum);
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡二卡三卡| 91视频在线看| 精品国产成人系列| 美脚の诱脚舐め脚责91 | 国产日产欧美精品一区二区三区| 日本sm残虐另类| 欧美一区二视频| 精品在线观看视频| 欧美高清在线一区二区| 91在线视频在线| 亚洲国产精品精华液网站| 在线播放中文一区| 国内精品伊人久久久久影院对白| 国产精品午夜在线| 在线免费不卡电影| 日本aⅴ免费视频一区二区三区 | 欧美午夜在线观看| 香港成人在线视频| 精品福利一二区| 91片黄在线观看| 日日摸夜夜添夜夜添精品视频 | 粉嫩欧美一区二区三区高清影视| 国产精品美女久久久久久久| 欧美在线小视频| 久久99国产精品成人| 中文字幕av一区 二区| 欧美在线短视频| 国产激情视频一区二区在线观看| 亚洲精品中文字幕乱码三区| 欧美一区二区三区电影| 成人激情av网| 免费美女久久99| 亚洲色图欧美在线| 精品少妇一区二区三区免费观看| 99久久婷婷国产综合精品| 青青草成人在线观看| 中文字幕佐山爱一区二区免费| 91麻豆精品国产91久久久久久久久| 国产精品伊人色| 亚洲.国产.中文慕字在线| 中文字幕欧美三区| 欧美一区二区三区四区五区| 成人av资源站| 国产一区欧美一区| 香蕉成人啪国产精品视频综合网| 国产精品久久久久久久午夜片| 欧美精品久久一区| 波多野结衣中文一区| 另类欧美日韩国产在线| 亚洲男人的天堂在线观看| 国产亚洲欧洲997久久综合| 91精品综合久久久久久| 91香蕉视频mp4| 国产不卡视频一区二区三区| 美女视频黄 久久| 亚洲一区二区三区精品在线| 国产精品女同一区二区三区| 欧美成人三级电影在线| 欧美美女直播网站| 91激情在线视频| 91香蕉视频黄| 99精品欧美一区二区三区小说| 精品一区二区三区的国产在线播放| 亚洲国产视频一区二区| 亚洲精选视频免费看| 国产精品电影院| 国产精品久久夜| 日本一区二区三区视频视频| 久久亚洲一级片| 精品少妇一区二区三区视频免付费 | 久久久www成人免费无遮挡大片| 欧美裸体bbwbbwbbw| 欧美日韩不卡在线| 欧美午夜片在线看| 欧美日韩精品一区二区三区蜜桃| 一本一道久久a久久精品| 99久久精品免费看国产| 99久久久久免费精品国产| av中文字幕亚洲| 一本一本久久a久久精品综合麻豆| 成人午夜电影网站| 成人h动漫精品一区二区| 成人午夜电影久久影院| 99久久精品99国产精品| 99国产精品国产精品久久| 91污在线观看| 欧美日韩视频在线第一区| 欧美三级视频在线播放| 91精品久久久久久久久99蜜臂| 4hu四虎永久在线影院成人| 欧美一区二区三区视频在线观看| 欧美一区二区三区在线| 2021国产精品久久精品| 国产欧美一区视频| 亚洲人123区| 婷婷激情综合网| 国内精品伊人久久久久av影院| 国产精品系列在线观看| 99久久精品国产观看| 欧美日韩在线播| 日韩欧美激情一区| 国产欧美日韩精品a在线观看| 国产精品久久久99| 亚洲国产欧美在线| 裸体歌舞表演一区二区| 国产v综合v亚洲欧| 91福利视频在线| 欧美一区二区三区免费观看视频 | 欧美精品乱人伦久久久久久| 欧美成人精品福利| 综合久久国产九一剧情麻豆| 五月天婷婷综合| 国产999精品久久久久久绿帽| 色悠悠久久综合| 日韩欧美国产综合一区| 欧美激情艳妇裸体舞| 亚洲国产日日夜夜| 国产中文一区二区三区| 91福利在线播放| www久久精品| 亚洲一级片在线观看| 久久99精品久久久久久动态图| 北条麻妃国产九九精品视频| 欧美日韩精品专区| 国产精品久久二区二区| 日本成人在线不卡视频| 93久久精品日日躁夜夜躁欧美| 日韩一区二区中文字幕| 国产精品初高中害羞小美女文| 婷婷激情综合网| 91免费国产视频网站| 精品国产91久久久久久久妲己| 亚洲欧美偷拍另类a∨色屁股| 久草中文综合在线| 色八戒一区二区三区| 久久久高清一区二区三区| 三级成人在线视频| 91天堂素人约啪| 久久亚洲一级片| 免费精品视频在线| 欧美在线一区二区三区| 国产精品福利一区二区| 国产主播一区二区| 日韩免费电影一区| 丝袜亚洲精品中文字幕一区| 91香蕉视频污| 国产精品成人免费在线| 国产精品白丝av| 欧美成人一级视频| 免费不卡在线观看| 欧美三级视频在线| 一区二区三区免费看视频| 成人sese在线| 欧美国产一区视频在线观看| 国产伦精品一区二区三区免费迷 | 91丝袜美腿高跟国产极品老师| 国产午夜亚洲精品不卡| 久久国产成人午夜av影院| 欧美日韩在线综合| 亚洲在线免费播放| 在线欧美小视频| 一区二区理论电影在线观看| 91亚洲国产成人精品一区二区三 | youjizz国产精品| 久久午夜国产精品| 经典一区二区三区| 精品国产一区二区三区不卡 | 国产成人免费网站| 亚洲欧美偷拍卡通变态| 欧美在线啊v一区| 国产精品久久久久久久久免费相片 | 亚洲高清在线视频| 色素色在线综合| 国产夫妻精品视频| 日韩一级二级三级| 亚洲综合色网站| 成人午夜碰碰视频| 欧洲一区二区av| 日韩视频永久免费| 亚洲欧美欧美一区二区三区| 99久久久无码国产精品| 亚洲蜜臀av乱码久久精品| 99精品偷自拍| 亚洲一区二区三区四区在线 | kk眼镜猥琐国模调教系列一区二区| 国产精品视频yy9299一区| www.欧美精品一二区| 亚洲免费伊人电影| 欧美日韩五月天| 国内久久婷婷综合| 亚洲欧洲一区二区在线播放| 91国产福利在线| 热久久久久久久| 国产视频在线观看一区二区三区| 成人精品国产免费网站| 亚洲精品免费播放| 欧美一区午夜视频在线观看| 狠狠色2019综合网| 亚洲欧美日韩国产综合在线| 欧美日韩免费不卡视频一区二区三区|