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

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

?? tcpipdog.cpp

?? verilog spi file with testbench
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*——————————————————————————————————————

	文件:		TcpIpDog.cpp

	說明:
	——————————————————————————
		Winsock 鉤子,用來截獲 Winsock 調用從而攔截
	TCP/IP封包,并做相應處理。這里將發送接收的封包
	作為調試信息輸出
	——————————————————————————

	工程:		PacketCapture
	作者:		朱雁輝,朱雁冰
	創建日期:	2001/08/21
	網址:		http://www.xfilt.com
	電子郵件:	xstudio@xfilt.com
	版權所有 (c) 2001-2002 X 工作室

	警告:
	——————————————————————————
		本電腦程序受著作權法的保護。未經授權,不能使用
	和修改本軟件全部或部分源代碼。凡擅自復制、盜用或散
	布此程序或部分程序或者有其它任何越權行為,將遭到民
	事賠償及刑事的處罰,并將依法以最高刑罰進行追訴。
	
		凡通過合法途徑購買本軟件源代碼的用戶被默認授權
	可以在自己的程序中使用本軟件的部分代碼,但作者不對
	代碼產生的任何后果負責。
	
		使用了本軟件代碼的程序只能以可執行文件形式發布,
	未經特別許可,不能將含有本軟件源代碼的源程序以任何
	形式發布。
	——————————————————————————	
*/
//——————————————————————————————————————
// include header file and global variables

#include<stdio.h> 

#include "stdafx.h"
#include "overlapped.h"

//
// 進程間全局變量
//
#pragma data_seg(".inidata")
	int				m_iDllCount		= 0;
#pragma data_seg()

//
// 進程內全局變量
//
CRITICAL_SECTION	gCriticalSection;			// 代碼段保護變量
WSPPROC_TABLE		NextProcTable   ;			// 保存30個服務提供者指針
TCHAR				m_sProcessName[MAX_PATH];	// 保存當前進程名稱
COverlapped			m_Overlapped;				// 保存重疊操作相關信息的類

//
// 自定義注冊表分支用來保存系統基礎服務提供者的路徑
//
#define REG_INSTALL_KEY		\
	_T("SYSTEM\\CurrentControlSet\\Services\\WinSock2\\Xstudio_Packet_Capture")

//——————————————————————————————————————
// 私有函數

void ShutdownSocket( SOCKET s )
{
	int iError;
	if( NextProcTable.lpWSPShutdown( s, SD_BOTH, &iError ) != 0 )
		WSASetLastError( iError );
}

void PrintSocket(SOCKET s, DWORD bytes, TCHAR *sExt)
{
	SOCKADDR_IN local_addr, remote_addr;
	int local_addr_len	= sizeof(local_addr);
	int remote_addr_len = sizeof(remote_addr);
	getsockname(s, (SOCKADDR*)&local_addr, &local_addr_len);

	getpeername(s, (SOCKADDR*)&remote_addr, &remote_addr_len);

	CString sTemp;
	sTemp.Format("    Socket %u %s\n", s, sExt);
	OutputDebugString(sTemp);
	sTemp.Format("    %u.%u.%u.%u:%u -> %u.%u.%u.%u:%u transfered %u bytes\n"
		, local_addr.sin_addr.S_un.S_un_b.s_b1
		, local_addr.sin_addr.S_un.S_un_b.s_b2
		, local_addr.sin_addr.S_un.S_un_b.s_b3
		, local_addr.sin_addr.S_un.S_un_b.s_b4
		, ntohs(local_addr.sin_port)
		, remote_addr.sin_addr.S_un.S_un_b.s_b1
		, remote_addr.sin_addr.S_un.S_un_b.s_b2
		, remote_addr.sin_addr.S_un.S_un_b.s_b3
		, remote_addr.sin_addr.S_un.S_un_b.s_b4
		, ntohs(remote_addr.sin_port)
		, bytes
		);
	OutputDebugString(sTemp);
}

void PrintReturnCode(int iReturnCode, LPINT lpErrno)
{
	CString sOutput , sTemp, sTemp1;
	switch(iReturnCode)
	{
	case SOCKET_ERROR:
		sTemp = "SOCKET_ERROR";
		break;
	case 0:
		sTemp = "SOCKET_SUCCESS";
		break;
	default:
		sTemp = "OTHER";
		break;
	}
	switch(*lpErrno)
	{
	case WSA_IO_PENDING:
		sTemp1 = "WSA_IO_PENDING";
		break;
	default:
		sTemp1 = "OTHER";
		break;
	}
	sOutput.Format("    ReturnCode: %s(%d); *lpErrno: %s(%d)\n"
		, sTemp, iReturnCode, sTemp1, *lpErrno);
	OutputDebugString(sOutput);
}

void PrintProtocolInfo(
	IN	WSAPROTOCOL_INFOW	*pProtocolInfo, 
	IN	TCHAR				*sPathName
)
{
	OutputDebugString("  ProtocolInfo:\n");
	CString sTemp, sOutput;
	sTemp.Format("    LibraryPath: %s\n", sPathName);
	OutputDebugString(sTemp);

	sTemp.Format("    dwServiceFlags1: 0x%08X; %d\n"
		, pProtocolInfo->dwServiceFlags1
		, pProtocolInfo->dwServiceFlags1
		);
	OutputDebugString(sTemp);

	sTemp.Format("    dwServiceFlags2: 0x%08X; %d\n"
		, pProtocolInfo->dwServiceFlags2
		, pProtocolInfo->dwServiceFlags2
		);
	OutputDebugString(sTemp);

	sTemp.Format("    dwServiceFlags3: 0x%08X; %d\n"
		, pProtocolInfo->dwServiceFlags3
		, pProtocolInfo->dwServiceFlags3
		);
	OutputDebugString(sTemp);

	sTemp.Format("    dwServiceFlags4: 0x%08X; %d\n"
		, pProtocolInfo->dwServiceFlags4
		, pProtocolInfo->dwServiceFlags4
		);
	OutputDebugString(sTemp);

	sTemp.Format("    dwProviderFlags: 0x%08X; %d\n"
		, pProtocolInfo->dwProviderFlags
		, pProtocolInfo->dwProviderFlags
		);
	OutputDebugString(sTemp);

	sTemp.Format("    ProviderId: %08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X\n"
		, pProtocolInfo->ProviderId.Data1
		, pProtocolInfo->ProviderId.Data2
		, pProtocolInfo->ProviderId.Data3
		, pProtocolInfo->ProviderId.Data4[0]
		, pProtocolInfo->ProviderId.Data4[1]
		, pProtocolInfo->ProviderId.Data4[2]
		, pProtocolInfo->ProviderId.Data4[3]
		, pProtocolInfo->ProviderId.Data4[4]
		, pProtocolInfo->ProviderId.Data4[5]
		, pProtocolInfo->ProviderId.Data4[6]
		, pProtocolInfo->ProviderId.Data4[7]
		);
	OutputDebugString(sTemp);

	sTemp.Format("    dwCatalogEntryId: 0x%08X; %d\n"
		, pProtocolInfo->dwCatalogEntryId
		, pProtocolInfo->dwCatalogEntryId
		);
	OutputDebugString(sTemp);

	sTemp.Format("    ProtocolChain.ChainLen: 0x%08X; %d\n"
		, pProtocolInfo->ProtocolChain.ChainLen
		, pProtocolInfo->ProtocolChain.ChainLen
		);
	OutputDebugString(sTemp);

	sTemp.Empty();
	OutputDebugString("    ProtocolChain.ChainEntries: ");
	for(int i = 0; i < MAX_PROTOCOL_CHAIN; i++)
	{
		CString s = "";
		if(i == MAX_PROTOCOL_CHAIN - 1)
			s.Format("0x%08X\n", pProtocolInfo->ProtocolChain.ChainEntries[i]);
		else
			s.Format("0x%08X->", pProtocolInfo->ProtocolChain.ChainEntries[i]);
		sTemp += s;
	}
	OutputDebugString(sTemp);

	sTemp.Format("    iVersion: 0x%08X; %d\n"
		, pProtocolInfo->iVersion
		, pProtocolInfo->iVersion
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iAddressFamily: 0x%08X; %d\n"
		, pProtocolInfo->iAddressFamily
		, pProtocolInfo->iAddressFamily
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iMaxSockAddr: 0x%08X; %d\n"
		, pProtocolInfo->iMaxSockAddr
		, pProtocolInfo->iMaxSockAddr
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iMinSockAddr: 0x%08X; %d\n"
		, pProtocolInfo->iMinSockAddr
		, pProtocolInfo->iMinSockAddr
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iSocketType: 0x%08X; %d\n"
		, pProtocolInfo->iSocketType
		, pProtocolInfo->iSocketType
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iProtocol: 0x%08X; %d\n"
		, pProtocolInfo->iProtocol
		, pProtocolInfo->iProtocol
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iProtocolMaxOffset: 0x%08X; %d\n"
		, pProtocolInfo->iProtocolMaxOffset
		, pProtocolInfo->iProtocolMaxOffset
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iNetworkByteOrder: 0x%08X; %d\n"
		, pProtocolInfo->iNetworkByteOrder
		, pProtocolInfo->iNetworkByteOrder
		);
	OutputDebugString(sTemp);

	sTemp.Format("    iSecurityScheme: 0x%08X; %d\n"
		, pProtocolInfo->iSecurityScheme
		, pProtocolInfo->iSecurityScheme
		);
	OutputDebugString(sTemp);

	sTemp.Format("    dwMessageSize: 0x%08X; %d\n"
		, pProtocolInfo->dwMessageSize
		, pProtocolInfo->dwMessageSize
		);
	OutputDebugString(sTemp);

	sTemp.Format("    dwProviderReserved: 0x%08X; %d\n"
		, pProtocolInfo->dwProviderReserved
		, pProtocolInfo->dwProviderReserved
		);
	OutputDebugString(sTemp);

	sTemp = pProtocolInfo->szProtocol;
	OutputDebugString("    szProtocol: ");
	OutputDebugString(sTemp);
	OutputDebugString("\n");
}

void GetRightEntryIdItem(
	IN	WSAPROTOCOL_INFOW	*pProtocolInfo, 
	OUT	TCHAR				*sItem
)
{
	if(pProtocolInfo->ProtocolChain.ChainLen <= 1)
		_stprintf(sItem, _T("%u"), pProtocolInfo->dwCatalogEntryId);
	else
		_stprintf(sItem, _T("%u"), pProtocolInfo->ProtocolChain
			.ChainEntries[pProtocolInfo->ProtocolChain.ChainLen - 1]);
}

BOOL GetHookProvider(
	IN	WSAPROTOCOL_INFOW	*pProtocolInfo, 
	OUT	TCHAR				*sPathName
)
{
	TCHAR sItem[21];
	GetRightEntryIdItem(pProtocolInfo, sItem);

	HKEY	hSubkey;
	DWORD	ulDateLenth	= MAX_PATH;
	TCHAR	sTemp[MAX_PATH];

	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE
		, REG_INSTALL_KEY, 0, KEY_ALL_ACCESS, &hSubkey) != ERROR_SUCCESS)
		return FALSE;
	if (RegQueryValueEx(hSubkey, sItem, 0, NULL, (BYTE*)sTemp, &ulDateLenth)
		|| ExpandEnvironmentStrings(sTemp, sPathName, ulDateLenth) == 0)
		return FALSE;
	if(sPathName[0] == '\0' && sTemp[0] != '\0')
		_tcscpy(sPathName, sTemp);
	RegCloseKey(hSubkey);

	return TRUE;
}

//——————————————————————————————————————
// Winsock 2 服務提供者鉤子函數

void CALLBACK CompletionRoutine (
	IN    DWORD				dwError, 
	IN    DWORD				cbTransferred, 
	IN    LPWSAOVERLAPPED	lpOverlapped, 
	IN    DWORD				dwFlags 
)
{
	ODS(_T("CompletionRoutine ..."));

	int iIndex = m_Overlapped.FindOverlapped(lpOverlapped);
	if(iIndex < 0)
		return;

	CString sTemp;
	if(m_Overlapped.m_OverlappedRecorder[iIndex].FunctionType == 1)//WSPRecvFrom
	{
		PrintSocket(m_Overlapped.m_OverlappedRecorder[iIndex].s
			, cbTransferred, "WSPRecvFrom");
		OutputDebugString("    <==WSPRecvFrom WSA_IO_PENDING\n");
	}
	else if(m_Overlapped.m_OverlappedRecorder[iIndex].FunctionType == 0) //WSPRecv
	{
		PrintSocket(m_Overlapped.m_OverlappedRecorder[iIndex].s
			, cbTransferred, "WSPRecv");
		OutputDebugString("    <==WSPRecv WSA_IO_PENDING\n");
	}
	
	if(m_Overlapped.m_OverlappedRecorder[iIndex].lpCompletionRoutine != NULL)
	{
		m_Overlapped.m_OverlappedRecorder[iIndex].lpCompletionRoutine(dwError
			, cbTransferred, lpOverlapped, dwFlags);
	}

	m_Overlapped.DeleteOverlapped(iIndex);
}

SOCKET WSPAPI WSPSocket(
	int			af,                               
	int			type,                             
	int			protocol,                         
	LPWSAPROTOCOL_INFOW lpProtocolInfo,   
	GROUP		g,                              
	DWORD		dwFlags,                        
	LPINT		lpErrno
)
{
	ODS(_T("WSPSocket ..."));
	return NextProcTable.lpWSPSocket(af, type
		, protocol, lpProtocolInfo, g, dwFlags, lpErrno);
}

int WSPAPI WSPCloseSocket(
	SOCKET		s,
	LPINT		lpErrno
)
{
	ODS(_T("WSPCloseSocket ..."));
	return NextProcTable.lpWSPCloseSocket(s, lpErrno);
}

int WSPAPI WSPConnect(
	SOCKET			s,
	const struct	sockaddr FAR * name,
	int				namelen,
	LPWSABUF		lpCallerData,
	LPWSABUF		lpCalleeData,
	LPQOS			lpSQOS,
	LPQOS			lpGQOS,
	LPINT			lpErrno
)
{
	ODS(_T("WSPConnect ..."));
	return NextProcTable.lpWSPConnect(s, name, namelen, lpCallerData
		, lpCalleeData, lpSQOS, lpGQOS, lpErrno);
}

SOCKET WSPAPI WSPAccept(
	SOCKET			s,
	struct sockaddr FAR *addr,
	LPINT			addrlen,
	LPCONDITIONPROC	lpfnCondition,
	DWORD			dwCallbackData,
	LPINT			lpErrno
)
{
	ODS(_T("WSPAccept ..."));
	return NextProcTable.lpWSPAccept(s, addr, addrlen, lpfnCondition
		, dwCallbackData, lpErrno);
}

int WSPAPI WSPSend(
	SOCKET			s,
	LPWSABUF		lpBuffers,
	DWORD			dwBufferCount,
	LPDWORD			lpNumberOfBytesSent,
	DWORD			dwFlags,
	LPWSAOVERLAPPED	lpOverlapped,
	LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
	LPWSATHREADID	lpThreadId,
	LPINT			lpErrno
)
{
	ODS(_T("WSPSend ..."));

	PrintSocket(s, *lpNumberOfBytesSent, "WSPSend");

	return NextProcTable.lpWSPSend(s, lpBuffers, dwBufferCount
		, lpNumberOfBytesSent, dwFlags, lpOverlapped
		, lpCompletionRoutine, lpThreadId, lpErrno);

}

int WSPAPI WSPSendTo(
	SOCKET			s,
	LPWSABUF		lpBuffers,
	DWORD			dwBufferCount,
	LPDWORD			lpNumberOfBytesSent,
	DWORD			dwFlags,
	const struct sockaddr FAR * lpTo,
	int				iTolen,
	LPWSAOVERLAPPED	lpOverlapped,
	LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
	LPWSATHREADID	lpThreadId,
	LPINT			lpErrno
)
{
	ODS(_T("WSPSendTo ..."));

	PrintSocket(s, *lpNumberOfBytesSent, "WSPSendTo");

	return NextProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount
		, lpNumberOfBytesSent, dwFlags, lpTo, iTolen, lpOverlapped
		, lpCompletionRoutine, lpThreadId, lpErrno);

}

int WSPAPI WSPRecv(
	SOCKET			s,
	LPWSABUF		lpBuffers,
	DWORD			dwBufferCount,
	LPDWORD			lpNumberOfBytesRecvd,
	LPDWORD			lpFlags,
	LPWSAOVERLAPPED	lpOverlapped,
	LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
	LPWSATHREADID	lpThreadId,
	LPINT			lpErrno
)
{
	return SOCKET_ERROR;
	/*
	FILE * fp;
	int i;
	char cOutputDebugString_Buf [80];
	int n_len_to_cmp;

	ODS(_T("WSPRecv ..."));

	BOOL IsSetCompletionRoutine = FALSE;

	///////////////////////////////////////////////////////////////
	sockaddr_in local_name = {0};
	sockaddr_in remote_name = {0};
	u_short us_local_port, us_remote_port;

	int namelen = sizeof(sockaddr_in); 
	getsockname( s, (sockaddr*)&local_name, &namelen );
	getpeername( s, (sockaddr*)&remote_name, &namelen );

	us_local_port = ntohs( local_name.sin_port );
	us_remote_port = ntohs( remote_name.sin_port );

	char cTemp [20];
	sprintf( cTemp, "local_port : %u  <==>  remote_port : %u\n", us_local_port, us_remote_port );

	fp = fopen( "d:\\temp\\WSPRecv_Buf.txt", "a+" ); 
	if ( fp != NULL )
	{
		fwrite( cTemp, 1, strlen( cTemp ), fp );
		fclose(fp);
	}
	else
		OutputDebugString( _T("fp == NULL !\n") );
	///////////////////////////////////////////////////////////////


	/////////////////////////////////////////////////////////////////////
	fp = fopen( "d:\\temp\\WSPRecv_Buf.txt", "a+" ); 
	if ( fp != NULL )
	{
		fwrite( "**********************WSPRecv1***********************\n", 1, strlen("*************************WSPRecv1********************\n"), fp );
		if ( IsSetCompletionRoutine )
			fwrite( "WSPRecv --- IsSetCompletionRoutine !\n", 1, strlen("WSPRecv --- IsSetCompletionRoutine !\n"), fp );;
		fwrite( lpBuffers[0].buf, 1, (lpBuffers[0].len < 250) ? lpBuffers[0].len : 250, fp );
		fwrite( "\n", 1, 1, fp );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩久久久一区| 欧美电影免费观看完整版| 一本大道av一区二区在线播放| 欧美日韩亚洲不卡| 久久综合久久综合亚洲| 亚洲国产人成综合网站| 高清成人在线观看| 精品久久久久av影院| 亚洲一区二区三区四区五区中文| 久久99精品久久久久久久久久久久| 色94色欧美sute亚洲线路一ni| 日韩女优制服丝袜电影| 一区二区三区日韩精品视频| 大胆亚洲人体视频| 欧美mv日韩mv国产| 日本特黄久久久高潮| 欧美影院精品一区| 国产精品第13页| 国产精品夜夜嗨| 欧美成人精精品一区二区频| 亚洲国产精品一区二区久久 | 日韩高清欧美激情| 色系网站成人免费| 中文字幕精品三区| 成人午夜电影小说| 久久久精品国产99久久精品芒果| 亚洲麻豆国产自偷在线| 成人av在线影院| 国产精品乱人伦中文| 国产91综合一区在线观看| 精品国产一二三区| 韩日精品视频一区| 精品国精品国产| 国产综合久久久久久鬼色| 日韩一区二区三区电影在线观看| 日韩影院在线观看| 欧美va日韩va| 国产福利一区在线观看| 久久精品综合网| 成人免费视频网站在线观看| 国产欧美中文在线| av午夜一区麻豆| 亚洲最新视频在线观看| 在线观看亚洲成人| 天涯成人国产亚洲精品一区av| 欧美乱妇15p| 黑人巨大精品欧美黑白配亚洲| 久久网站热最新地址| 国产高清精品网站| 国产精品久久久久久久久免费樱桃 | 美女任你摸久久 | 蜜臀av国产精品久久久久| 欧美一区二区三区男人的天堂| 日韩国产欧美在线播放| 日韩精品一区二区在线| 国产一区二区三区视频在线播放| 欧美国产日本韩| 欧美最猛性xxxxx直播| 日韩成人一级大片| 久久久久久久久伊人| 91猫先生在线| 青青青爽久久午夜综合久久午夜 | 激情伊人五月天久久综合| 久久综合色一综合色88| 97久久精品人人爽人人爽蜜臀| 一区二区三区四区精品在线视频 | 日欧美一区二区| 久久精品亚洲一区二区三区浴池| 色域天天综合网| 日韩va亚洲va欧美va久久| 久久久欧美精品sm网站| 欧美中文字幕一区| 久久成人av少妇免费| 亚洲色图视频网| 精品国产一区二区三区不卡| 不卡一区二区在线| 青青草97国产精品免费观看| 国产精品女同一区二区三区| 在线91免费看| 91在线丨porny丨国产| 激情综合色播五月| 亚洲成人免费视频| 国产精品久久国产精麻豆99网站| 欧美日韩国产片| 99久久婷婷国产综合精品电影 | 自拍偷在线精品自拍偷无码专区 | 理论电影国产精品| 一区二区三区四区不卡在线| 国产香蕉久久精品综合网| 欧美电影影音先锋| 91色porny在线视频| 国产一区高清在线| 天天综合天天做天天综合| 中文字幕欧美一| 国产午夜精品一区二区三区四区| 欧美肥妇bbw| 日本精品一级二级| 99视频精品在线| 国产福利视频一区二区三区| 免费看日韩精品| 香蕉久久夜色精品国产使用方法| 国产精品国产三级国产| 国产亚洲精久久久久久| 日韩美女天天操| 51精品久久久久久久蜜臀| 日本乱人伦aⅴ精品| 99久久99久久精品国产片果冻| 国产一区二区三区高清播放| 日本亚洲三级在线| 日韩电影免费在线看| 亚洲图片欧美视频| 亚洲自拍偷拍欧美| 亚洲欧美aⅴ...| 亚洲精品国产a久久久久久| 中文字幕在线观看不卡| 国产精品久久久久久久蜜臀| 国产欧美日韩视频一区二区| 久久一夜天堂av一区二区三区| 日韩欧美卡一卡二| 欧美精品一区二区三区四区 | 韩国av一区二区| 国内成人自拍视频| 国产一区二区伦理| 高清国产午夜精品久久久久久| 成人av在线播放网址| 99re这里只有精品视频首页| 色综合久久六月婷婷中文字幕| 色综合中文字幕| 欧美午夜视频网站| 日韩色在线观看| 久久影视一区二区| 亚洲人123区| 天天色综合成人网| 国产一区二区h| 99精品国产视频| 欧美日韩亚洲综合在线| 日韩欧美一区二区视频| 亚洲精品一线二线三线无人区| 久久精品亚洲国产奇米99| 中文字幕一区二区三区在线观看 | av在线播放成人| 色婷婷亚洲综合| 欧美一区二区精品久久911| 欧美成人女星排名| 国产精品天美传媒沈樵| 亚洲精品国产无天堂网2021| 欧美aaaaaa午夜精品| 国产又黄又大久久| 日本精品视频一区二区三区| 欧美一区二区三区喷汁尤物| 欧美国产乱子伦 | 亚洲人成影院在线观看| 五月天精品一区二区三区| 国产资源在线一区| 在线精品视频免费播放| 精品久久一二三区| 亚洲人精品午夜| 激情综合色综合久久综合| 91麻豆.com| 日韩一区二区三区高清免费看看| 日本一区二区三区国色天香 | 国产成人h网站| 欧美精品777| 国产精品视频线看| 日韩精品午夜视频| 91在线一区二区三区| 日韩免费一区二区| 亚洲在线一区二区三区| 国产盗摄精品一区二区三区在线| 欧洲日韩一区二区三区| 国产欧美日韩综合| 精品在线亚洲视频| 欧美性感一类影片在线播放| 久久久国产一区二区三区四区小说 | 裸体一区二区三区| 欧美在线不卡一区| 亚洲国产精华液网站w| 裸体在线国模精品偷拍| 欧美视频在线一区二区三区 | 日韩一区二区不卡| 亚洲人成伊人成综合网小说| 国产精品一区二区黑丝| 欧美久久一区二区| 亚洲综合成人在线| 色先锋资源久久综合| 国产精品女主播av| 懂色av一区二区在线播放| 日韩三级在线观看| 亚洲综合免费观看高清完整版在线 | 国产精品一区二区视频| 日韩一区二区高清| 日日噜噜夜夜狠狠视频欧美人| 色悠悠久久综合| 日韩理论片中文av| 国内精品写真在线观看| 欧美成人性战久久| 久久99精品国产麻豆不卡| 欧美一三区三区四区免费在线看| 亚洲韩国精品一区| 欧美日韩在线观看一区二区|