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

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

?? sm_handler.c

?? Linux dot1x認證的實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
  if (!card_hdl)    {      debug_printf(DEBUG_NORMAL, "Invalid card handle passed to "		   "sm_handler_2g_imsi()!\n");      return NULL;    }  if (strlen(pin)>8)    {      debug_printf(DEBUG_NORMAL, "PIN is too long!  Aborting!\n");      return NULL;    }  // Select the card master file in 2g mode.  len = MAXBUFF;  if (cardio(card_hdl, SELECT_MF, reader_mode, MODE2G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error trying to select the master file! "		   "(%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  if (cardio(card_hdl, SELECT_DF_GSM, reader_mode, MODE2G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error selecting GSM authentication! "		   "(%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  if (!(buf2[13] & 0x80))    {      if (pin == NULL) return NULL;      strcpy((char *)&buf2, "A020000108");      for (i=0;i < strlen(pin); i++)	{	  bzero((char *)&buf3, 8);	  sprintf(buf3, "%02X", pin[i]);	  strcat(buf2, buf3);	}      for (i=strlen(pin); i<8; i++)	{	  strcat(buf2, "FF");	}            len = MAXBUFF;      if (cardio(card_hdl, buf2, reader_mode, MODE2G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)	{	  debug_printf(DEBUG_NORMAL, "Error sending PIN to smart card! "		       "(%s:%d)\n", __FUNCTION__, __LINE__);	  return NULL;	}      // XXX When we get a GUI going, this should be sent to it.      if ((len == 2) && (buf[0] = 0x98))	{	  if (buf[1] == 0x04)	    {	      debug_printf(DEBUG_NORMAL, "Incorrect PIN, at least one attempt "			   "remaining!\n");	      return NULL;	    } 	  else if (buf[1] == 0x40)	    {	      debug_printf(DEBUG_NORMAL, "Incorrect PIN, no attempts "			   "remaining!\n");	      return NULL;	    }	}    }  len = MAXBUFF;  if (cardio(card_hdl, SELECT_EF_IMSI, reader_mode, MODE2G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to select the IMSI on the"		   " smart card!  (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  len = MAXBUFF;  bzero((char *)&buf, 512);  if (cardio(card_hdl, GET_IMSI, reader_mode, MODE2G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to get the IMSI from the "		   "smart card! (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  return decode_imsi((unsigned char *)&buf[1]);}int sm_handler_do_2g_auth(SCARDHANDLE *card_hdl, char reader_mode, 			  unsigned char *challenge, unsigned char *response, 			  unsigned char *ckey){  unsigned char buf[MAXBUFF], buff2[MAXBUFF], buff3[MAXBUFF];  int i;  DWORD len;  if ((!challenge) || (!response) || (!ckey))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed to "		   "sm_handler_do_2g_auth!\n");      return -1;    }  strcpy(buff2, RUN_GSM);  bzero(&buff3, MAXBUFF);  for (i = 0; i < 16; i++)    {      sprintf(buff3,"%02X",challenge[i]);      strcat(buff2, buff3);    }  len = MAXBUFF;  if (cardio(card_hdl, buff2, reader_mode, MODE2G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to run the GSM algorithm!\n");      return -1;    }  memcpy(response, &buf[0], 4);  memcpy(ckey, &buf[4], 8);  return XENONE;}char *sm_handler_3g_imsi(SCARDHANDLE *card_hdl, char reader_mode, char *pin){  DWORD len;  unsigned char buf[MAXBUFF], buf2[MAXBUFF], aid[MAXBUFF], temp[MAXBUFF], *p;  unsigned char cmd[MAXBUFF], buf3[MAXBUFF];  int i,l,q, foundaid=0, pinretries=0;  unsigned char threeG[2] = { 0x10, 0x02 };  struct t_efdir *t;  if (!card_hdl)    {      debug_printf(DEBUG_NORMAL, "Invalid card handle passed to "		   "sm_handler_3g_imsi()!\n");      return NULL;    }  if (strlen(pin) > 8)    {      // XXX This should be returned to a GUI when we have one!      debug_printf(DEBUG_NORMAL, "PIN is too long!\n");      return NULL;    }  // Select the USIM master file.  if (cardio(card_hdl, SELECT_MF_USIM, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to select the master file "		   "on the SIM card! (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  if (buf[0] == 0x6e)    {      debug_printf(DEBUG_NORMAL, "3G mode not supported by this card!\n");      return NULL;    }  // Select the ICCID of the card.  if (cardio(card_hdl, SELECT_EF_ICCID, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to select the ICCID of "		   "this SIM card! (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  if (cardio(card_hdl, SELECT_FCP, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to select the FCP of this "		   "SIM card!  (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  if (cardio(card_hdl, SELECT_EFDIR, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error selecting the EFDIR on this SIM card!"		   " (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  if (cardio(card_hdl, EFDIR_READREC1, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to read record #1 from "		   "this SIM card! (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  l = buf[len-1];  i = 1;  // Loop over EFdir  do {        sprintf(buf, "00B2%2.2X04%2.2X",i,l);    if (cardio(card_hdl, buf, reader_mode, MODE3G, (LPBYTE)&buf2, &len, DO_DEBUG) != 0)      {	debug_printf(DEBUG_NORMAL, "Error attempting to read a record from "		     "this SIM card! (%s:%d)\n", __FUNCTION__, __LINE__);	return NULL;      }    i++;    t = (struct t_efdir *)&buf2;        if (!memcmp(&t->app_code, &threeG, 2))      {	bzero((unsigned char *)&aid, MAXBUFF);	p = (unsigned char *)&t->rid;	for (q=0; q< 12; q++)	  {	    sprintf(temp, "%02X", *p++);	    strcat(aid,temp);	  }	foundaid = 1;      }      } while ((buf2[len-2] == 0x90) && (buf2[len-1] == 0));  // Select the USIM aid.  strcpy(cmd, "00A404040C");  strcat(cmd, aid);  if (cardio(card_hdl, cmd, reader_mode, MODE3G, (LPBYTE)&buf2, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Couldn't select the USIM application ID! "		   "(%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  // Determine remaining CHV retires.  if (cardio(card_hdl, CHV_RETRIES, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error requesting the remaining number of "		   "PIN attempts from this SIM!  (%s:%d)\n", __FUNCTION__,		   __LINE__);      return NULL;    }  if (buf[0] == 0x63)    {      pinretries = buf[1] & 0x0f;    }  //  if (!(buf2[13] & 0x80))    {      if (pinretries == 0)	{	  debug_printf(DEBUG_NORMAL, "No PIN retries remaining!\n");	  return NULL;	}      // Otherwise, enter the PIN.      strcpy(buf2, CHV_ATTEMPT);      for (i=0;i < strlen(pin); i++)	{	  bzero((char *)&buf3, 8);	  sprintf(buf3, "%02X", pin[i]);	  strcat(buf2, buf3);	}      for (i=strlen(pin); i<8; i++)	{	  strcat(buf2, "FF");	}      if (cardio(card_hdl, buf2, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)	{	  debug_printf(DEBUG_NORMAL, "Invalid PIN! (%d tries remain.)\n",		       pinretries-1);	  return NULL;	}      if (cardio(card_hdl, buf2, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)	{	  debug_printf(DEBUG_NORMAL, "Invalid PIN! (%d tries remain.)\n",		       pinretries-1);	  return NULL;	}    } //else {      //      debug_printf(DEBUG_AUTHTYPES, "PIN not needed!\n");      //}  // Now, get the IMSI  if (cardio(card_hdl, USELECT_EF_IMSI, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to select the IMSI for this"		   " SIM card! (%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  // XXX For now, assume that IMSIs are 9 bytes.  if (cardio(card_hdl, READ_IMSI, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error reading the IMSI on this SIM card! "		   "(%s:%d)\n", __FUNCTION__, __LINE__);      return NULL;    }  return decode_imsi((unsigned char *)&buf[1]);}/* tack on a sequence of hex command bytes to a string * buffer is assumed to already contain a zero-terminated string */voidaddhex(u8 *buffer, const u8 *bytes, int len){  u8 temp[5];  int i;  for (i = 0; i < len; i++) {      sprintf(temp,"%02X", *bytes++);      strcat(buffer, temp);  }}// return -2 on sync failure. -1 for all other errors.int sm_handler_do_3g_auth(SCARDHANDLE *card_hdl, char reader_mode, 			  unsigned char *Rand, unsigned char *autn, 			  unsigned char *c_auts, char *res_len, 			  unsigned char *c_sres, unsigned char *c_ck, 			  unsigned char *c_ik, unsigned char *c_kc){  unsigned char cmd[MAXBUFF], buf[MAXBUFF], sw1, sw2, *s;  DWORD len;  strcpy(cmd, "008800812210");  addhex(cmd, Rand, 16);  strcat(cmd, "10");  addhex(cmd, autn, 16);  debug_printf(DEBUG_EVERYTHING, "Sending in '%s'\n", cmd);  len = MAXBUFF;  if (cardio(card_hdl, cmd, reader_mode, MODE3G, (LPBYTE)&buf, &len, DO_DEBUG) != 0)    {      debug_printf(DEBUG_NORMAL, "Error attempting to execute 3G "		   "authentication! (%s:%d)\n", __FUNCTION__, __LINE__);      return -1;    }  sw1 = buf[len-2]; sw2 = buf[len-1];  if ((sw1 == 0x90) && (sw2 == 0x00) && (buf[0] == 0xdc))    {      debug_printf(DEBUG_NORMAL, "Sync failure! (Result length = %d)\n",		   len);      memcpy(c_auts, buf+2, len);      return -2;    }  if ((sw1 == 0x90) && (sw2 == 0x00) && (buf[0] == 0xdb))    {      // Success.      s = buf+1;      *res_len = *s;      memcpy(c_sres, s+1, *s);       s += (*s+1);  // Step over TLV vectors      memcpy(c_ck, s+1, *s);      s += (*s+1);  // Ditto.      memcpy(c_ik, s+1, *s);      s += (*s+1);      memcpy(c_kc, s+1, *s); s += *s;      return 0;    }    // Otherwise, we failed.  return -1;}int sm_handler_card_disconnect(SCARDHANDLE *card_hdl){  long ret = 0;  if (card_hdl)    {      ret = SCardDisconnect(*card_hdl, SCARD_UNPOWER_CARD);      if (ret != SCARD_S_SUCCESS)	{	  debug_printf(DEBUG_NORMAL, "Couldn't disconnect from Smart Card! ");	  print_sc_error(ret);	} else {	  card_hdl = NULL;	}    }    return ret;}int sm_handler_close_sc(SCARDHANDLE *card_hdl, SCARDCONTEXT *card_ctx){  long ret;  if (card_hdl)    {      ret = SCardDisconnect(*card_hdl, SCARD_UNPOWER_CARD);      if (ret != SCARD_S_SUCCESS)	{	  debug_printf(DEBUG_NORMAL, "Couldn't disconnect from Smart Card! ");	  print_sc_error(ret);	}    }  if (card_ctx)    {      ret = SCardReleaseContext(*card_ctx);      if (ret != SCARD_S_SUCCESS)	{	  debug_printf(DEBUG_NORMAL, "Couldn't release Smart Card context!  ");	  print_sc_error(ret);	}    }  return 0;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品亚洲一区二区三区免费| 国产天堂亚洲国产碰碰| 夜夜嗨av一区二区三区网页| 91久久精品一区二区二区| 亚洲午夜视频在线| 欧美一区二区三区视频在线| 韩国成人福利片在线播放| 久久精品视频在线免费观看| 成人高清视频在线观看| 亚洲人成小说网站色在线| 欧美性高清videossexo| 日韩在线观看一区二区| 精品欧美久久久| 99国产精品视频免费观看| 亚洲国产毛片aaaaa无费看| 日韩一区二区三| 丰满放荡岳乱妇91ww| 亚洲乱码国产乱码精品精小说| 欧美日韩视频一区二区| 国产麻豆精品95视频| 亚洲视频一二三区| 欧美电视剧免费观看| 国产成人亚洲综合色影视| 亚洲精品中文字幕在线观看| 日韩午夜激情免费电影| 成人久久视频在线观看| 日本一道高清亚洲日美韩| 国产亚洲综合性久久久影院| 欧美日韩国产综合视频在线观看| 久久99精品久久久久| 亚洲精品中文在线影院| 欧美成人乱码一区二区三区| 粉嫩13p一区二区三区| 天堂久久久久va久久久久| 国产欧美日韩亚州综合| 欧美精品久久天天躁| 豆国产96在线|亚洲| 日韩综合小视频| 最新日韩av在线| 精品久久久久久久久久久院品网| 日本精品视频一区二区| 国产成人午夜高潮毛片| 日韩精品乱码av一区二区| 综合激情网...| 久久精品欧美一区二区三区麻豆| 777xxx欧美| 欧美自拍偷拍午夜视频| 99视频在线观看一区三区| 国内精品久久久久影院薰衣草 | 美女爽到高潮91| 一区二区三区资源| 中文字幕国产一区| 久久亚洲一区二区三区四区| 欧美三级蜜桃2在线观看| 波多野结衣亚洲| 国产精品一区二区在线看| 毛片av一区二区| 男男视频亚洲欧美| 亚洲观看高清完整版在线观看| 国产精品成人免费精品自在线观看 | 国产欧美一区二区三区在线看蜜臀| 欧美浪妇xxxx高跟鞋交| 日本大香伊一区二区三区| av综合在线播放| 国产成人综合在线播放| 国产一区二区免费看| 毛片基地黄久久久久久天堂| 日韩av一区二区三区四区| 亚洲一区二区三区激情| 亚洲精品乱码久久久久久| 自拍偷在线精品自拍偷无码专区 | 91福利国产成人精品照片| 成人国产电影网| 99精品久久只有精品| 91在线国产观看| 97久久超碰国产精品| 色婷婷一区二区| 在线视频国内一区二区| 在线观看不卡一区| 欧美日韩免费视频| 欧美日韩国产综合视频在线观看| 欧美日韩的一区二区| 3atv在线一区二区三区| 欧美一卡2卡3卡4卡| 日韩你懂的电影在线观看| 欧美精品一区二区三区在线| 26uuu色噜噜精品一区| 国产亚洲欧美一级| 综合激情成人伊人| 亚洲成人av福利| 麻豆专区一区二区三区四区五区| 久久国产生活片100| 国产精品996| 色综合中文综合网| 亚洲国产综合色| 日本中文字幕一区二区有限公司| 狠狠色丁香九九婷婷综合五月| 国产精品中文欧美| 99国产一区二区三精品乱码| 欧美视频第二页| 精品伦理精品一区| 国产精品青草综合久久久久99| 亚洲欧美韩国综合色| 日韩va欧美va亚洲va久久| 国产精品自拍网站| 91久久精品网| 精品国精品国产| 亚洲手机成人高清视频| 日韩精品一二区| 成人性色生活片免费看爆迷你毛片| 色综合av在线| 精品嫩草影院久久| 亚洲欧美二区三区| 精品一区二区在线视频| 成人午夜视频在线| 欧美一区二区三区在线电影 | 91年精品国产| 日韩一区二区三区电影在线观看| 国产精品―色哟哟| 日精品一区二区| 99re亚洲国产精品| 欧美videos中文字幕| 中文字幕亚洲精品在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 不卡的av网站| 精品欧美一区二区在线观看| 一区二区三区色| 国产精品亚洲成人| 欧美一区二区三区白人| 亚洲日本中文字幕区| 老色鬼精品视频在线观看播放| 在线视频国内自拍亚洲视频| 国产亚洲综合在线| 琪琪久久久久日韩精品| 91美女蜜桃在线| 国产亚洲成aⅴ人片在线观看| 亚洲第一激情av| 91啦中文在线观看| 国产亚洲成年网址在线观看| 蜜桃视频一区二区三区| 欧美三级日本三级少妇99| 综合久久一区二区三区| 国产精品77777| 精品国产91亚洲一区二区三区婷婷| 一区二区三区精品久久久| 国产91露脸合集magnet | 国产丝袜在线精品| 久久精品国产77777蜜臀| 欧美日本一区二区| 亚洲制服丝袜av| 色综合天天综合色综合av| 国产午夜亚洲精品午夜鲁丝片| 久久av中文字幕片| 91麻豆精品国产91久久久使用方法 | 99精品在线免费| 国产欧美一区二区精品性| 激情综合色综合久久| 欧美一区二区三区在线看| 性欧美疯狂xxxxbbbb| 欧美三级资源在线| 亚洲综合色噜噜狠狠| 日本精品免费观看高清观看| 亚洲日本在线天堂| 91丨porny丨国产| 中文字幕日韩一区二区| av不卡一区二区三区| 国产精品久久久久一区| 国产成人免费视频一区| 久久久亚洲精华液精华液精华液 | 亚洲丝袜精品丝袜在线| 91丝袜高跟美女视频| 亚洲欧美另类久久久精品2019| 91碰在线视频| 亚洲线精品一区二区三区八戒| 欧亚洲嫩模精品一区三区| 一区二区三区日韩| 欧美日韩国产在线观看| 舔着乳尖日韩一区| 日韩精品专区在线影院观看 | eeuss鲁片一区二区三区| 中文字幕日韩一区| 欧洲一区在线电影| 丝袜美腿亚洲色图| 日韩欧美高清一区| 国产精品69久久久久水密桃 | 五月天中文字幕一区二区| 777色狠狠一区二区三区| 精品在线播放午夜| 国产精品乱码久久久久久| 91亚洲精品一区二区乱码| 亚洲观看高清完整版在线观看| 日韩一区和二区| 国产91精品在线观看| 一区二区三区四区视频精品免费 | 欧美xingq一区二区| 菠萝蜜视频在线观看一区| 亚洲情趣在线观看| 日韩欧美国产综合在线一区二区三区| 国产在线一区二区| 亚洲猫色日本管|