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

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

?? pcsc_funcs.c

?? WPA在Linux下實現的原代碼 WPA在Linux下實現的原代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * WPA Supplicant / PC/SC smartcard interface for USIM, GSM SIM * Copyright (c) 2004-2006, Jouni Malinen <j@w1.fi> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Alternatively, this software may be distributed under the terms of BSD * license. * * See README and COPYING for more details. * * This file implements wrapper functions for accessing GSM SIM and 3GPP USIM * cards through PC/SC smartcard library. These functions are used to implement * authentication routines for EAP-SIM and EAP-AKA. */#include <stdlib.h>#include <stdio.h>#include <string.h>#include <winscard.h>#include "common.h"#include "wpa_supplicant.h"#include "pcsc_funcs.h"/* See ETSI GSM 11.11 and ETSI TS 102 221 for details. * SIM commands: * Command APDU: CLA INS P1 P2 P3 Data *   CLA (class of instruction): A0 for GSM, 00 for USIM *   INS (instruction) *   P1 P2 P3 (parameters, P3 = length of Data) * Response APDU: Data SW1 SW2 *   SW1 SW2 (Status words) * Commands (INS P1 P2 P3): *   SELECT: A4 00 00 02 <file_id, 2 bytes> *   GET RESPONSE: C0 00 00 <len> *   RUN GSM ALG: 88 00 00 00 <RAND len = 10> *   RUN UMTS ALG: 88 00 81 <len=0x22> data: 0x10 | RAND | 0x10 | AUTN *	P1 = ID of alg in card *	P2 = ID of secret key *   READ BINARY: B0 <offset high> <offset low> <len> *   READ RECORD: B2 <record number> <mode> <len> *	P2 (mode) = '02' (next record), '03' (previous record), *		    '04' (absolute mode) *   VERIFY CHV: 20 00 <CHV number> 08 *   CHANGE CHV: 24 00 <CHV number> 10 *   DISABLE CHV: 26 00 01 08 *   ENABLE CHV: 28 00 01 08 *   UNBLOCK CHV: 2C 00 <00=CHV1, 02=CHV2> 10 *   SLEEP: FA 00 00 00 *//* GSM SIM commands */#define SIM_CMD_SELECT			0xa0, 0xa4, 0x00, 0x00, 0x02#define SIM_CMD_RUN_GSM_ALG		0xa0, 0x88, 0x00, 0x00, 0x10#define SIM_CMD_GET_RESPONSE		0xa0, 0xc0, 0x00, 0x00#define SIM_CMD_READ_BIN		0xa0, 0xb0, 0x00, 0x00#define SIM_CMD_READ_RECORD		0xa0, 0xb2, 0x00, 0x00#define SIM_CMD_VERIFY_CHV1		0xa0, 0x20, 0x00, 0x01, 0x08/* USIM commands */#define USIM_CLA			0x00#define USIM_CMD_RUN_UMTS_ALG		0x00, 0x88, 0x00, 0x81, 0x22#define USIM_CMD_GET_RESPONSE		0x00, 0xc0, 0x00, 0x00#define SIM_RECORD_MODE_ABSOLUTE 0x04#define USIM_FSP_TEMPL_TAG		0x62#define USIM_TLV_FILE_DESC		0x82#define USIM_TLV_FILE_ID		0x83#define USIM_TLV_DF_NAME		0x84#define USIM_TLV_PROPR_INFO		0xA5#define USIM_TLV_LIFE_CYCLE_STATUS	0x8A#define USIM_TLV_FILE_SIZE		0x80#define USIM_TLV_TOTAL_FILE_SIZE	0x81#define USIM_TLV_PIN_STATUS_TEMPLATE	0xC6#define USIM_TLV_SHORT_FILE_ID		0x88#define USIM_PS_DO_TAG			0x90#define AKA_RAND_LEN 16#define AKA_AUTN_LEN 16#define AKA_AUTS_LEN 14#define RES_MAX_LEN 16#define IK_LEN 16#define CK_LEN 16typedef enum { SCARD_GSM_SIM, SCARD_USIM } sim_types;struct scard_data {	long ctx;	long card;	unsigned long protocol;	sim_types sim_type;	int pin1_required;};static int _scard_select_file(struct scard_data *scard, unsigned short file_id,			      unsigned char *buf, size_t *buf_len,			      sim_types sim_type, unsigned char *aid,			      size_t aidlen);static int scard_select_file(struct scard_data *scard, unsigned short file_id,			     unsigned char *buf, size_t *buf_len);static int scard_verify_pin(struct scard_data *scard, const char *pin);static int scard_get_record_len(struct scard_data *scard,				unsigned char recnum, unsigned char mode);static int scard_read_record(struct scard_data *scard,			     unsigned char *data, size_t len,			     unsigned char recnum, unsigned char mode);static int scard_parse_fsp_templ(unsigned char *buf, size_t buf_len,				 int *ps_do, int *file_len){		unsigned char *pos, *end;		if (ps_do)			*ps_do = -1;		if (file_len)			*file_len = -1;		pos = buf;		end = pos + buf_len;		if (*pos != USIM_FSP_TEMPL_TAG) {			wpa_printf(MSG_DEBUG, "SCARD: file header did not "				   "start with FSP template tag");			return -1;		}		pos++;		if (pos >= end)			return -1;		if ((pos + pos[0]) < end)			end = pos + 1 + pos[0];		pos++;		wpa_hexdump(MSG_DEBUG, "SCARD: file header FSP template",			    pos, end - pos);		while (pos + 1 < end) {			wpa_printf(MSG_MSGDUMP, "SCARD: file header TLV "				   "0x%02x len=%d", pos[0], pos[1]);			if (pos + 2 + pos[1] > end)				break;			if (pos[0] == USIM_TLV_FILE_SIZE &&			    (pos[1] == 1 || pos[1] == 2) && file_len) {				if (pos[1] == 1)					*file_len = (int) pos[2];				else					*file_len = ((int) pos[2] << 8) |						(int) pos[3];				wpa_printf(MSG_DEBUG, "SCARD: file_size=%d",					   *file_len);			}			if (pos[0] == USIM_TLV_PIN_STATUS_TEMPLATE &&			    pos[1] >= 2 && pos[2] == USIM_PS_DO_TAG &&			    pos[3] >= 1 && ps_do) {				wpa_printf(MSG_DEBUG, "SCARD: PS_DO=0x%02x",					   pos[4]);				*ps_do = (int) pos[4];			}			pos += 2 + pos[1];			if (pos == end)				return 0;		}		return -1;}static int scard_pin_needed(struct scard_data *scard,			    unsigned char *hdr, size_t hlen){	if (scard->sim_type == SCARD_GSM_SIM) {		if (hlen > SCARD_CHV1_OFFSET &&		    !(hdr[SCARD_CHV1_OFFSET] & SCARD_CHV1_FLAG))			return 1;		return 0;	}	if (scard->sim_type == SCARD_USIM) {		int ps_do;		if (scard_parse_fsp_templ(hdr, hlen, &ps_do, NULL))			return -1;		/* TODO: there could be more than one PS_DO entry because of		 * multiple PINs in key reference.. */		if (ps_do > 0 && (ps_do & 0x80))			return 1;		return 0;	}	return -1;}static int scard_get_aid(struct scard_data *scard, unsigned char *aid,			 size_t maxlen){	int rlen, rec;	struct efdir {		unsigned char appl_template_tag; /* 0x61 */		unsigned char appl_template_len;		unsigned char appl_id_tag; /* 0x4f */		unsigned char aid_len;		unsigned char rid[5];		unsigned char appl_code[2]; /* 0x1002 for 3G USIM */	} *efdir;	unsigned char buf[100];	size_t blen;	efdir = (struct efdir *) buf;	blen = sizeof(buf);	if (scard_select_file(scard, SCARD_FILE_EF_DIR, buf, &blen)) {		wpa_printf(MSG_DEBUG, "SCARD: Failed to read EF_DIR");		return -1;	}	wpa_hexdump(MSG_DEBUG, "SCARD: EF_DIR select", buf, blen);	for (rec = 1; rec < 10; rec++) {		rlen = scard_get_record_len(scard, rec,					    SIM_RECORD_MODE_ABSOLUTE);		if (rlen < 0) {			wpa_printf(MSG_DEBUG, "SCARD: Failed to get EF_DIR "				   "record length");			return -1;		}		blen = sizeof(buf);		if (rlen > (int) blen) {			wpa_printf(MSG_DEBUG, "SCARD: Too long EF_DIR record");			return -1;		}		if (scard_read_record(scard, buf, rlen, rec,				      SIM_RECORD_MODE_ABSOLUTE) < 0) {			wpa_printf(MSG_DEBUG, "SCARD: Failed to read "				   "EF_DIR record %d", rec);			return -1;		}		wpa_hexdump(MSG_DEBUG, "SCARD: EF_DIR record", buf, rlen);		if (efdir->appl_template_tag != 0x61) {			wpa_printf(MSG_DEBUG, "SCARD: Unexpected application "				   "template tag 0x%x",				   efdir->appl_template_tag);			continue;		}		if (efdir->appl_template_len > rlen - 2) {			wpa_printf(MSG_DEBUG, "SCARD: Too long application "				   "template (len=%d rlen=%d)",				   efdir->appl_template_len, rlen);			continue;		}		if (efdir->appl_id_tag != 0x4f) {			wpa_printf(MSG_DEBUG, "SCARD: Unexpected application "				   "identifier tag 0x%x", efdir->appl_id_tag);			continue;		}		if (efdir->aid_len < 1 || efdir->aid_len > 16) {			wpa_printf(MSG_DEBUG, "SCARD: Invalid AID length %d",				   efdir->aid_len);			continue;		}		wpa_hexdump(MSG_DEBUG, "SCARD: AID from EF_DIR record",			    efdir->rid, efdir->aid_len);		if (efdir->appl_code[0] == 0x10 &&		    efdir->appl_code[1] == 0x02) {			wpa_printf(MSG_DEBUG, "SCARD: 3G USIM app found from "				   "EF_DIR record %d", rec);			break;		}	}	if (rec >= 10) {		wpa_printf(MSG_DEBUG, "SCARD: 3G USIM app not found "			   "from EF_DIR records");		return -1;	}	if (efdir->aid_len > maxlen) {		wpa_printf(MSG_DEBUG, "SCARD: Too long AID");		return -1;	}	memcpy(aid, efdir->rid, efdir->aid_len);	return efdir->aid_len;}/** * scard_init - Initialize SIM/USIM connection using PC/SC * @sim_type: Allowed SIM types (SIM, USIM, or both) * Returns: Pointer to private data structure, or %NULL on failure * * This function is used to initialize SIM/USIM connection. PC/SC is used to * open connection to the SIM/USIM card and the card is verified to support the * selected sim_type. In addition, local flag is set if a PIN is needed to * access some of the card functions. Once the connection is not needed * anymore, scard_deinit() can be used to close it. */struct scard_data * scard_init(scard_sim_type sim_type){	long ret;	unsigned long len;	struct scard_data *scard;	char *readers = NULL;	unsigned char buf[100];	size_t blen;	int pin_needed;	wpa_printf(MSG_DEBUG, "SCARD: initializing smart card interface");	scard = malloc(sizeof(*scard));	if (scard == NULL)		return NULL;	memset(scard, 0, sizeof(*scard));	ret = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL,				    &scard->ctx);	if (ret != SCARD_S_SUCCESS) {		wpa_printf(MSG_DEBUG, "SCARD: Could not establish smart card "			   "context (err=%ld)", ret);		goto failed;	}	ret = SCardListReaders(scard->ctx, NULL, NULL, &len);	if (ret != SCARD_S_SUCCESS) {		wpa_printf(MSG_DEBUG, "SCARD: SCardListReaders failed "			   "(err=%ld)", ret);		goto failed;	}	readers = malloc(len);	if (readers == NULL) {		printf("malloc failed\n");		goto failed;	}	ret = SCardListReaders(scard->ctx, NULL, readers, &len);	if (ret != SCARD_S_SUCCESS) {		wpa_printf(MSG_DEBUG, "SCARD: SCardListReaders failed(2) "			   "(err=%ld)", ret);		goto failed;	}	if (len < 3) {		wpa_printf(MSG_WARNING, "SCARD: No smart card readers "			   "available.");		goto failed;	}	/* readers is a list of available reader. Last entry is terminated with	 * double NUL.	 * TODO: add support for selecting the reader; now just use the first	 * one.. */	wpa_printf(MSG_DEBUG, "SCARD: Selected reader='%s'", readers);	ret = SCardConnect(scard->ctx, readers, SCARD_SHARE_SHARED,			   SCARD_PROTOCOL_T0, &scard->card, &scard->protocol);	if (ret != SCARD_S_SUCCESS) {		if (ret == SCARD_E_NO_SMARTCARD)			wpa_printf(MSG_INFO, "No smart card inserted.");		else			wpa_printf(MSG_WARNING, "SCardConnect err=%lx", ret);		goto failed;	}	free(readers);	readers = NULL;	wpa_printf(MSG_DEBUG, "SCARD: card=%ld active_protocol=%lu",		   scard->card, scard->protocol);	blen = sizeof(buf);	scard->sim_type = SCARD_GSM_SIM;	if (sim_type == SCARD_USIM_ONLY || sim_type == SCARD_TRY_BOTH) {		wpa_printf(MSG_DEBUG, "SCARD: verifying USIM support");		if (_scard_select_file(scard, SCARD_FILE_MF, buf, &blen,				       SCARD_USIM, NULL, 0)) {			wpa_printf(MSG_DEBUG, "SCARD: USIM is not supported");			if (sim_type == SCARD_USIM_ONLY)				goto failed;			wpa_printf(MSG_DEBUG, "SCARD: Trying to use GSM SIM");			scard->sim_type = SCARD_GSM_SIM;		} else {			wpa_printf(MSG_DEBUG, "SCARD: USIM is supported");			scard->sim_type = SCARD_USIM;		}	}	if (scard->sim_type == SCARD_GSM_SIM) {		blen = sizeof(buf);		if (scard_select_file(scard, SCARD_FILE_MF, buf, &blen)) {			wpa_printf(MSG_DEBUG, "SCARD: Failed to read MF");			goto failed;		}		blen = sizeof(buf);		if (scard_select_file(scard, SCARD_FILE_GSM_DF, buf, &blen)) {			wpa_printf(MSG_DEBUG, "SCARD: Failed to read GSM DF");			goto failed;		}	} else {		unsigned char aid[32];		int aid_len;		aid_len = scard_get_aid(scard, aid, sizeof(aid));		if (aid_len < 0) {			wpa_printf(MSG_DEBUG, "SCARD: Failed to find AID for "				   "3G USIM app - try to use standard 3G RID");			memcpy(aid, "\xa0\x00\x00\x00\x87", 5);			aid_len = 5;		}		wpa_hexdump(MSG_DEBUG, "SCARD: 3G USIM AID", aid, aid_len);		/* Select based on AID = 3G RID from EF_DIR. This is usually		 * starting with A0 00 00 00 87. */		blen = sizeof(buf);		if (_scard_select_file(scard, 0, buf, &blen, scard->sim_type,				       aid, aid_len)) {			wpa_printf(MSG_INFO, "SCARD: Failed to read 3G USIM "				   "app");			wpa_hexdump(MSG_INFO, "SCARD: 3G USIM AID",				    aid, aid_len);			goto failed;		}	}	/* Verify whether CHV1 (PIN1) is needed to access the card. */	pin_needed = scard_pin_needed(scard, buf, blen);	if (pin_needed < 0) {		wpa_printf(MSG_DEBUG, "SCARD: Failed to determine whether PIN "			   "is needed");		goto failed;	}	if (pin_needed) {		scard->pin1_required = 1;		wpa_printf(MSG_DEBUG, "PIN1 needed for SIM access");	}	return scard;failed:	free(readers);	scard_deinit(scard);	return NULL;}/** * scard_set_pin - Set PIN (CHV1/PIN1) code for accessing SIM/USIM commands * @scard: Pointer to private data from scard_init() * pin: PIN code as an ASCII string (e.g., "1234") * Returns: 0 on success, -1 on failure */int scard_set_pin(struct scard_data *scard, const char *pin){	if (scard == NULL)		return -1;	/* Verify whether CHV1 (PIN1) is needed to access the card. */	if (scard->pin1_required) {		if (pin == NULL) {			wpa_printf(MSG_DEBUG, "No PIN configured for SIM "				   "access");			return -1;		}		if (scard_verify_pin(scard, pin)) {			wpa_printf(MSG_INFO, "PIN verification failed for "				"SIM access");			return -1;		}	}	return 0;}/** * scard_deinit - Deinitialize SIM/USIM connection * @scard: Pointer to private data from scard_init() * * This function closes the SIM/USIM connect opened with scard_init(). */void scard_deinit(struct scard_data *scard){	long ret;	if (scard == NULL)		return;	wpa_printf(MSG_DEBUG, "SCARD: deinitializing smart card interface");	if (scard->card) {		ret = SCardDisconnect(scard->card, SCARD_UNPOWER_CARD);		if (ret != SCARD_S_SUCCESS) {			wpa_printf(MSG_DEBUG, "SCARD: Failed to disconnect "				   "smart card (err=%ld)", ret);		}	}	if (scard->ctx) {		ret = SCardReleaseContext(scard->ctx);		if (ret != SCARD_S_SUCCESS) {			wpa_printf(MSG_DEBUG, "Failed to release smart card "				   "context (err=%ld)", ret);		}	}	free(scard);}static long scard_transmit(struct scard_data *scard,			   unsigned char *send, size_t send_len,			   unsigned char *recv, size_t *recv_len){	long ret;	unsigned long rlen;	wpa_hexdump_key(MSG_DEBUG, "SCARD: scard_transmit: send",			send, send_len);	rlen = *recv_len;	ret = SCardTransmit(scard->card,			    scard->protocol == SCARD_PROTOCOL_T1 ?			    SCARD_PCI_T1 : SCARD_PCI_T0,			    send, (unsigned long) send_len,			    NULL, recv, &rlen);	*recv_len = rlen;	if (ret == SCARD_S_SUCCESS) {		wpa_hexdump(MSG_DEBUG, "SCARD: scard_transmit: recv",			    recv, rlen);	} else {		wpa_printf(MSG_WARNING, "SCARD: SCardTransmit failed "			   "(err=0x%lx)", ret);	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区在线观看| 狠狠网亚洲精品| 一区二区三区不卡在线观看| 国产精品青草综合久久久久99| 国产午夜精品久久| 日本一区二区电影| 日本91福利区| 色国产综合视频| 26uuu国产日韩综合| 亚洲电影在线播放| 在线观看成人小视频| 成人短视频下载| 北条麻妃一区二区三区| 久久精品国产网站| 午夜精品一区在线观看| 日韩av二区在线播放| 亚洲国产精品尤物yw在线观看| 久久精品网站免费观看| 日韩视频一区在线观看| 欧美三区免费完整视频在线观看| 一区二区三区久久| 久久精品人人做人人爽人人| 国产校园另类小说区| 欧美国产丝袜视频| 国产精品三级av在线播放| 日韩一区二区影院| 久久精品人人做人人综合| 久久看人人爽人人| 国产精品蜜臀在线观看| 亚洲女同一区二区| 亚洲第一主播视频| 欧美一级片免费看| 午夜电影一区二区三区| 欧美精品丝袜中出| 国产乱人伦偷精品视频不卡| 精品人伦一区二区色婷婷| 久久丁香综合五月国产三级网站| 69堂精品视频| 另类小说一区二区三区| 国产精品视频一二三| 在线这里只有精品| 国产一区欧美日韩| 亚洲制服丝袜av| 久久免费视频色| 91视频在线看| 国内一区二区视频| 亚洲国产成人av| 亚洲欧美在线观看| 精品国产乱子伦一区| 欧美日韩五月天| 91在线视频网址| 国产一区视频在线看| 亚洲一区影音先锋| 国产精品无遮挡| 精品乱人伦一区二区三区| 色综合网站在线| 成人综合激情网| 成人av先锋影音| 青草av.久久免费一区| 亚洲一区二区三区不卡国产欧美| 中文字幕第一区综合| 久久久久久久一区| 久久久国产一区二区三区四区小说 | 国产精品夜夜爽| 免费人成精品欧美精品| 天堂一区二区在线| 天堂蜜桃一区二区三区| 青青草视频一区| 国产综合色视频| 成人97人人超碰人人99| 91丝袜美女网| 91精品国产入口| 2020国产精品| 综合色天天鬼久久鬼色| 一区二区三区精密机械公司| 亚洲色图.com| 日韩精品色哟哟| 国产精品夜夜爽| 精品视频在线视频| 久久婷婷国产综合国色天香| 国产欧美一区二区三区鸳鸯浴| 国产日本亚洲高清| 日韩精品一区第一页| 国产成人日日夜夜| 欧美羞羞免费网站| wwww国产精品欧美| 亚洲成av人片www| 波多野结衣在线一区| 91麻豆精品91久久久久同性| 国产人伦精品一区二区| 亚洲一区二区三区美女| 成人开心网精品视频| 日韩精品资源二区在线| 亚洲乱码一区二区三区在线观看| 久久99日本精品| 欧美日韩aaaaaa| 一区二区成人在线| 色欧美片视频在线观看| 国产女人18毛片水真多成人如厕| 日韩精品亚洲一区| 5月丁香婷婷综合| 三级欧美在线一区| 日韩欧美在线一区二区三区| 亚洲福利一区二区| 欧美一卡在线观看| 免费欧美日韩国产三级电影| 欧美一区二视频| 香蕉乱码成人久久天堂爱免费| 欧美艳星brazzers| 亚洲第一激情av| 日韩精品一区二| 国产麻豆午夜三级精品| 国产女人aaa级久久久级| 成人福利在线看| 天堂影院一区二区| 精品久久久久久久久久久久久久久| 麻豆91小视频| 国产精品久久久久久福利一牛影视 | 亚洲电影第三页| 国产亚洲欧美在线| 欧洲精品一区二区| 国产在线一区二区| 亚洲一区二区三区视频在线| 久久嫩草精品久久久久| 91在线播放网址| 国产精品一区二区久激情瑜伽| 亚洲三级在线免费观看| 337p粉嫩大胆色噜噜噜噜亚洲 | 欧美日韩免费观看一区二区三区| 狠狠色丁香婷婷综合久久片| 亚洲色大成网站www久久九九| 精品国产人成亚洲区| 欧美日韩一区二区不卡| 国产高清精品网站| 狠狠色综合播放一区二区| 亚洲国产精品影院| 亚洲午夜在线电影| 亚洲精品伦理在线| 亚洲色图色小说| 亚洲精品在线网站| 久久人人爽爽爽人久久久| 欧美色视频在线观看| 在线精品视频一区二区| 欧美性极品少妇| 欧美熟乱第一页| 欧美美女黄视频| 欧美一级片在线| 久久精品网站免费观看| 中文字幕精品在线不卡| 国产精品私房写真福利视频| 国产视频亚洲色图| 一区二区三区四区在线播放| 亚洲一二三四久久| 日本亚洲视频在线| 成人av第一页| 777xxx欧美| 国产色产综合产在线视频| 亚洲视频一区二区在线| 亚洲国产精品影院| 成熟亚洲日本毛茸茸凸凹| 在线观看免费亚洲| 精品国产a毛片| 亚洲电影一级片| av电影在线观看一区| 制服.丝袜.亚洲.中文.综合| 国产精品午夜在线观看| 日本午夜精品一区二区三区电影| 成人av电影在线网| 久久久久久久久久久电影| 亚洲一区二区视频| 国产九九视频一区二区三区| 日本丶国产丶欧美色综合| 日韩欧美在线一区二区三区| 亚洲乱码中文字幕| 99精品黄色片免费大全| 欧美va亚洲va香蕉在线| 奇米色一区二区| 99精品国产视频| 国产精品久久看| 丰满白嫩尤物一区二区| 久久精品在线免费观看| 激情丁香综合五月| 久久人人爽人人爽| 高清在线观看日韩| 亚洲视频在线观看一区| 97久久超碰精品国产| 一区二区三区高清在线| 在线免费观看一区| 舔着乳尖日韩一区| 国产精品不卡在线| 91香蕉视频污在线| 香蕉久久一区二区不卡无毒影院| 日韩欧美一二三区| 国产91富婆露脸刺激对白| 亚洲精品国产无天堂网2021| 欧美少妇bbb| 国产露脸91国语对白| 夜夜夜精品看看| 久久久综合网站| 欧美专区日韩专区|