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

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

?? eap_sim_db.c

?? 最新的Host AP 新添加了許多pcmcia 的驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * hostapd / EAP-SIM database/authenticator gateway * Copyright (c) 2005-2007, 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 is an example implementation of the EAP-SIM/AKA database/authentication * gateway interface that is using an external program as an SS7 gateway to * GSM/UMTS authentication center (HLR/AuC). hlr_auc_gw is an example * implementation of such a gateway program. This eap_sim_db.c takes care of * EAP-SIM/AKA pseudonyms and re-auth identities. It can be used with different * gateway implementations for HLR/AuC access. Alternatively, it can also be * completely replaced if the in-memory database of pseudonyms/re-auth * identities is not suitable for some cases. */#include "includes.h"#include <sys/un.h>#include "common.h"#include "eap_common/eap_sim_common.h"#include "eap_server/eap_sim_db.h"#include "eloop.h"struct eap_sim_pseudonym {	struct eap_sim_pseudonym *next;	u8 *identity;	size_t identity_len;	char *pseudonym;};struct eap_sim_db_pending {	struct eap_sim_db_pending *next;	u8 imsi[20];	size_t imsi_len;	enum { PENDING, SUCCESS, FAILURE } state;	void *cb_session_ctx;	struct os_time timestamp;	int aka;	union {		struct {			u8 kc[EAP_SIM_MAX_CHAL][EAP_SIM_KC_LEN];			u8 sres[EAP_SIM_MAX_CHAL][EAP_SIM_SRES_LEN];			u8 rand[EAP_SIM_MAX_CHAL][GSM_RAND_LEN];			int num_chal;		} sim;		struct {			u8 rand[EAP_AKA_RAND_LEN];			u8 autn[EAP_AKA_AUTN_LEN];			u8 ik[EAP_AKA_IK_LEN];			u8 ck[EAP_AKA_CK_LEN];			u8 res[EAP_AKA_RES_MAX_LEN];			size_t res_len;		} aka;	} u;};struct eap_sim_db_data {	int sock;	char *fname;	char *local_sock;	void (*get_complete_cb)(void *ctx, void *session_ctx);	void *ctx;	struct eap_sim_pseudonym *pseudonyms;	struct eap_sim_reauth *reauths;	struct eap_sim_db_pending *pending;};static struct eap_sim_db_pending *eap_sim_db_get_pending(struct eap_sim_db_data *data, const u8 *imsi,		       size_t imsi_len, int aka){	struct eap_sim_db_pending *entry, *prev = NULL;	entry = data->pending;	while (entry) {		if (entry->aka == aka && entry->imsi_len == imsi_len &&		    os_memcmp(entry->imsi, imsi, imsi_len) == 0) {			if (prev)				prev->next = entry->next;			else				data->pending = entry->next;			break;		}		prev = entry;		entry = entry->next;	}	return entry;}static void eap_sim_db_add_pending(struct eap_sim_db_data *data,				   struct eap_sim_db_pending *entry){	entry->next = data->pending;	data->pending = entry;}static void eap_sim_db_sim_resp_auth(struct eap_sim_db_data *data,				     const char *imsi, char *buf){	char *start, *end, *pos;	struct eap_sim_db_pending *entry;	int num_chal;	/*	 * SIM-RESP-AUTH <IMSI> Kc(i):SRES(i):RAND(i) ...	 * SIM-RESP-AUTH <IMSI> FAILURE	 * (IMSI = ASCII string, Kc/SRES/RAND = hex string)	 */	entry = eap_sim_db_get_pending(data, (u8 *) imsi, os_strlen(imsi), 0);	if (entry == NULL) {		wpa_printf(MSG_DEBUG, "EAP-SIM DB: No pending entry for the "			   "received message found");		return;	}	start = buf;	if (os_strncmp(start, "FAILURE", 7) == 0) {		wpa_printf(MSG_DEBUG, "EAP-SIM DB: External server reported "			   "failure");		entry->state = FAILURE;		eap_sim_db_add_pending(data, entry);		data->get_complete_cb(data->ctx, entry->cb_session_ctx);		return;	}	num_chal = 0;	while (num_chal < EAP_SIM_MAX_CHAL) {		end = os_strchr(start, ' ');		if (end)			*end = '\0';		pos = os_strchr(start, ':');		if (pos == NULL)			goto parse_fail;		*pos = '\0';		if (hexstr2bin(start, entry->u.sim.kc[num_chal],			       EAP_SIM_KC_LEN))			goto parse_fail;		start = pos + 1;		pos = os_strchr(start, ':');		if (pos == NULL)			goto parse_fail;		*pos = '\0';		if (hexstr2bin(start, entry->u.sim.sres[num_chal],			       EAP_SIM_SRES_LEN))			goto parse_fail;		start = pos + 1;		if (hexstr2bin(start, entry->u.sim.rand[num_chal],			       GSM_RAND_LEN))			goto parse_fail;		num_chal++;		if (end == NULL)			break;		else			start = end + 1;	}	entry->u.sim.num_chal = num_chal;	entry->state = SUCCESS;	wpa_printf(MSG_DEBUG, "EAP-SIM DB: Authentication data parsed "		   "successfully - callback");	eap_sim_db_add_pending(data, entry);	data->get_complete_cb(data->ctx, entry->cb_session_ctx);	return;parse_fail:	wpa_printf(MSG_DEBUG, "EAP-SIM DB: Failed to parse response string");	os_free(entry);}static void eap_sim_db_aka_resp_auth(struct eap_sim_db_data *data,				     const char *imsi, char *buf){	char *start, *end;	struct eap_sim_db_pending *entry;	/*	 * AKA-RESP-AUTH <IMSI> <RAND> <AUTN> <IK> <CK> <RES>	 * AKA-RESP-AUTH <IMSI> FAILURE	 * (IMSI = ASCII string, RAND/AUTN/IK/CK/RES = hex string)	 */	entry = eap_sim_db_get_pending(data, (u8 *) imsi, os_strlen(imsi), 1);	if (entry == NULL) {		wpa_printf(MSG_DEBUG, "EAP-SIM DB: No pending entry for the "			   "received message found");		return;	}	start = buf;	if (os_strncmp(start, "FAILURE", 7) == 0) {		wpa_printf(MSG_DEBUG, "EAP-SIM DB: External server reported "			   "failure");		entry->state = FAILURE;		eap_sim_db_add_pending(data, entry);		data->get_complete_cb(data->ctx, entry->cb_session_ctx);		return;	}	end = os_strchr(start, ' ');	if (end == NULL)		goto parse_fail;	*end = '\0';	if (hexstr2bin(start, entry->u.aka.rand, EAP_AKA_RAND_LEN))		goto parse_fail;	start = end + 1;	end = os_strchr(start, ' ');	if (end == NULL)		goto parse_fail;	*end = '\0';	if (hexstr2bin(start, entry->u.aka.autn, EAP_AKA_AUTN_LEN))		goto parse_fail;	start = end + 1;	end = os_strchr(start, ' ');	if (end == NULL)		goto parse_fail;	*end = '\0';	if (hexstr2bin(start, entry->u.aka.ik, EAP_AKA_IK_LEN))		goto parse_fail;	start = end + 1;	end = os_strchr(start, ' ');	if (end == NULL)		goto parse_fail;	*end = '\0';	if (hexstr2bin(start, entry->u.aka.ck, EAP_AKA_CK_LEN))		goto parse_fail;	start = end + 1;	end = os_strchr(start, ' ');	if (end)		*end = '\0';	else {		end = start;		while (*end)			end++;	}	entry->u.aka.res_len = (end - start) / 2;	if (entry->u.aka.res_len > EAP_AKA_RES_MAX_LEN) {		wpa_printf(MSG_DEBUG, "EAP-SIM DB: Too long RES");		entry->u.aka.res_len = 0;		goto parse_fail;	}	if (hexstr2bin(start, entry->u.aka.res, entry->u.aka.res_len))		goto parse_fail;	entry->state = SUCCESS;	wpa_printf(MSG_DEBUG, "EAP-SIM DB: Authentication data parsed "		   "successfully - callback");	eap_sim_db_add_pending(data, entry);	data->get_complete_cb(data->ctx, entry->cb_session_ctx);	return;parse_fail:	wpa_printf(MSG_DEBUG, "EAP-SIM DB: Failed to parse response string");	os_free(entry);}static void eap_sim_db_receive(int sock, void *eloop_ctx, void *sock_ctx){	struct eap_sim_db_data *data = eloop_ctx;	char buf[1000], *pos, *cmd, *imsi;	int res;	res = recv(sock, buf, sizeof(buf), 0);	if (res < 0)		return;	wpa_hexdump_ascii_key(MSG_MSGDUMP, "EAP-SIM DB: Received from an "			      "external source", (u8 *) buf, res);	if (res == 0)		return;	if (res >= (int) sizeof(buf))		res = sizeof(buf) - 1;	buf[res] = '\0';	if (data->get_complete_cb == NULL) {		wpa_printf(MSG_DEBUG, "EAP-SIM DB: No get_complete_cb "			   "registered");		return;	}	/* <cmd> <IMSI> ... */	cmd = buf;	pos = os_strchr(cmd, ' ');	if (pos == NULL)		goto parse_fail;	*pos = '\0';	imsi = pos + 1;	pos = os_strchr(imsi, ' ');	if (pos == NULL)		goto parse_fail;	*pos = '\0';	wpa_printf(MSG_DEBUG, "EAP-SIM DB: External response=%s for IMSI %s",		   cmd, imsi);	if (os_strcmp(cmd, "SIM-RESP-AUTH") == 0)		eap_sim_db_sim_resp_auth(data, imsi, pos + 1);	else if (os_strcmp(cmd, "AKA-RESP-AUTH") == 0)		eap_sim_db_aka_resp_auth(data, imsi, pos + 1);	else		wpa_printf(MSG_INFO, "EAP-SIM DB: Unknown external response "			   "'%s'", cmd);	return;parse_fail:	wpa_printf(MSG_DEBUG, "EAP-SIM DB: Failed to parse response string");}static int eap_sim_db_open_socket(struct eap_sim_db_data *data){	struct sockaddr_un addr;	static int counter = 0;	if (os_strncmp(data->fname, "unix:", 5) != 0)		return -1;	data->sock = socket(PF_UNIX, SOCK_DGRAM, 0);	if (data->sock < 0) {		perror("socket(eap_sim_db)");		return -1;	}	os_memset(&addr, 0, sizeof(addr));	addr.sun_family = AF_UNIX;	os_snprintf(addr.sun_path, sizeof(addr.sun_path),		    "/tmp/eap_sim_db_%d-%d", getpid(), counter++);	data->local_sock = os_strdup(addr.sun_path);	if (bind(data->sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) {		perror("bind(eap_sim_db)");		close(data->sock);		data->sock = -1;		return -1;	}	os_memset(&addr, 0, sizeof(addr));	addr.sun_family = AF_UNIX;	os_strlcpy(addr.sun_path, data->fname + 5, sizeof(addr.sun_path));	if (connect(data->sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) {		perror("connect(eap_sim_db)");		wpa_hexdump_ascii(MSG_INFO, "HLR/AuC GW socket",				  (u8 *) addr.sun_path,				  os_strlen(addr.sun_path));		close(data->sock);		data->sock = -1;		return -1;	}	eloop_register_read_sock(data->sock, eap_sim_db_receive, data, NULL);	return 0;}static void eap_sim_db_close_socket(struct eap_sim_db_data *data){	if (data->sock >= 0) {		eloop_unregister_read_sock(data->sock);		close(data->sock);		data->sock = -1;	}	if (data->local_sock) {		unlink(data->local_sock);		os_free(data->local_sock);		data->local_sock = NULL;	}}/** * eap_sim_db_init - Initialize EAP-SIM DB / authentication gateway interface * @config: Configuration data (e.g., file name) * @get_complete_cb: Callback function for reporting availability of triplets * @ctx: Context pointer for get_complete_cb * Returns: Pointer to a private data structure or %NULL on failure */void * eap_sim_db_init(const char *config,		       void (*get_complete_cb)(void *ctx, void *session_ctx),		       void *ctx){	struct eap_sim_db_data *data;	data = os_zalloc(sizeof(*data));	if (data == NULL)		return NULL;	data->sock = -1;	data->get_complete_cb = get_complete_cb;	data->ctx = ctx;	data->fname = os_strdup(config);	if (data->fname == NULL)		goto fail;	if (os_strncmp(data->fname, "unix:", 5) == 0) {		if (eap_sim_db_open_socket(data))			goto fail;	}	return data;fail:	eap_sim_db_close_socket(data);	os_free(data->fname);	os_free(data);	return NULL;}static void eap_sim_db_free_pseudonym(struct eap_sim_pseudonym *p){	os_free(p->identity);	os_free(p->pseudonym);	os_free(p);}static void eap_sim_db_free_reauth(struct eap_sim_reauth *r){	os_free(r->identity);	os_free(r->reauth_id);	os_free(r);}/** * eap_sim_db_deinit - Deinitialize EAP-SIM DB/authentication gw interface

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄人亚洲片| 欧美在线综合视频| 99久久er热在这里只有精品15| 精品视频在线免费看| 久久久一区二区| 日韩中文字幕区一区有砖一区 | 欧美韩国一区二区| 丝袜美腿亚洲色图| 91麻豆免费在线观看| 精品对白一区国产伦| 亚洲国产日韩综合久久精品| 国产激情一区二区三区| 日韩午夜av电影| 亚洲成人免费看| 91丝袜高跟美女视频| 欧美激情一区不卡| 激情丁香综合五月| 日韩欧美亚洲一区二区| 午夜免费欧美电影| 色吧成人激情小说| 亚洲精品成人少妇| av亚洲精华国产精华精华| 久久久久久影视| 国产一区久久久| 精品国产第一区二区三区观看体验| 亚洲成人在线网站| 欧美人成免费网站| 亚洲网友自拍偷拍| 欧美日韩免费一区二区三区视频 | 亚洲1区2区3区视频| 欧美自拍偷拍午夜视频| 日韩一区欧美一区| 91麻豆文化传媒在线观看| 自拍视频在线观看一区二区| www.日韩大片| 最新国产の精品合集bt伙计| 成人黄色国产精品网站大全在线免费观看 | 国产黄色成人av| 国产日产欧美精品一区二区三区| 国产一区二区视频在线| 久久久精品国产免大香伊| 国产九色sp调教91| 国产精品你懂的在线欣赏| 99精品视频在线观看免费| 亚洲美女在线一区| 在线观看国产91| 午夜电影一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 日韩在线观看一区二区| 欧美一区二区三区婷婷月色 | 久久久精品免费网站| 国产成人亚洲综合色影视| 国产精品看片你懂得| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲一区免费视频| 91精选在线观看| 国产成人在线看| 亚洲视频精选在线| 日韩一级黄色大片| 国产成人精品一区二区三区四区| 国产精品久久99| 在线观看91精品国产麻豆| 黄页网站大全一区二区| 国产精品久久久久久久久晋中 | 欧美日韩久久久久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久综合丝袜日本网| 91美女片黄在线| 捆绑调教美女网站视频一区| 国产精品天天摸av网| 欧美在线观看视频在线| 国产精品一线二线三线精华| 亚洲最大成人网4388xx| 精品国产不卡一区二区三区| 91日韩精品一区| 看片网站欧美日韩| 亚洲美女精品一区| 久久影音资源网| 欧美三级电影网站| 成人激情文学综合网| 日本成人在线网站| 一区二区三区不卡在线观看 | 午夜私人影院久久久久| 国产精品每日更新在线播放网址| 欧美日韩1234| 91美女蜜桃在线| 粉嫩蜜臀av国产精品网站| 蜜桃视频免费观看一区| |精品福利一区二区三区| 日韩精品一区二区三区中文不卡| 91蝌蚪porny| 国产99一区视频免费| 久久精品国产精品亚洲综合| 亚洲一区二区三区影院| 综合久久国产九一剧情麻豆| 久久久美女毛片| 日韩免费一区二区| 在线播放中文字幕一区| 91传媒视频在线播放| 成人国产视频在线观看| 国产在线精品免费| 久久se精品一区二区| 青青草成人在线观看| 亚洲精品v日韩精品| 亚洲欧美综合色| 国产精品乱人伦中文| 国产人成一区二区三区影院| 日韩一区二区三区视频在线观看| 欧美日韩一级片网站| 欧美日韩国产高清一区二区| 欧美视频一区二区三区| 欧美午夜精品理论片a级按摩| 色综合天天综合色综合av| 波多野结衣中文字幕一区| 成人黄色av电影| 95精品视频在线| 91福利精品视频| 欧美日韩国产欧美日美国产精品| 欧美羞羞免费网站| 7777精品伊人久久久大香线蕉完整版 | 91亚洲午夜精品久久久久久| 成人av免费观看| 色一情一伦一子一伦一区| 色婷婷一区二区| 欧美无乱码久久久免费午夜一区 | 色88888久久久久久影院野外| 99久久精品免费看国产| 一本在线高清不卡dvd| 欧美色手机在线观看| 欧美精品1区2区| 精品人在线二区三区| 久久婷婷综合激情| 中文字幕一区在线观看视频| 亚洲乱码中文字幕| 日本亚洲电影天堂| 国产99久久久国产精品| 色综合中文字幕国产| 99久久综合国产精品| 欧美日韩在线亚洲一区蜜芽| 欧美一级在线免费| 中文字幕成人网| 亚洲综合视频网| 狠狠久久亚洲欧美| 99v久久综合狠狠综合久久| 欧美日韩久久久久久| 久久婷婷久久一区二区三区| 国产精品久久毛片av大全日韩| 夜夜嗨av一区二区三区| 韩国三级在线一区| 在线看日韩精品电影| 欧美xingq一区二区| 国产精品久久国产精麻豆99网站 | 亚洲免费电影在线| 美女一区二区视频| www.性欧美| 日韩精品中文字幕一区二区三区 | 一本一道综合狠狠老| 精品免费视频.| 亚洲精品欧美在线| 国产一区二区三区电影在线观看| 一本到一区二区三区| 精品奇米国产一区二区三区| 亚洲美女偷拍久久| 国产一区福利在线| 在线播放91灌醉迷j高跟美女 | 久久久久久久网| 亚洲高清不卡在线观看| 国产麻豆一精品一av一免费| 色婷婷综合五月| 亚洲精品在线电影| 亚洲一区二区三区激情| 国产91精品一区二区麻豆亚洲| 欧美日韩日日夜夜| 亚洲乱码中文字幕综合| 国产xxx精品视频大全| 日韩片之四级片| 亚洲国产视频直播| 91啪九色porn原创视频在线观看| 日韩免费高清av| 午夜视频一区二区| 欧美亚洲尤物久久| 最新不卡av在线| 成人18精品视频| 欧美国产禁国产网站cc| 久久不见久久见免费视频1| 欧美挠脚心视频网站| 艳妇臀荡乳欲伦亚洲一区| av电影在线观看完整版一区二区| 精品国产乱码久久久久久浪潮| 五月天丁香久久| 欧美高清激情brazzers| 亚洲综合丁香婷婷六月香| 91亚洲精华国产精华精华液| 国产精品欧美精品| 国产91精品精华液一区二区三区| 久久影院电视剧免费观看| 久久97超碰国产精品超碰| 精品久久久久一区| 激情欧美一区二区| 国产女主播视频一区二区|