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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mifare.c.bak

?? 用于小商品消費的SMS消費機程序
?? BAK
?? 第 1 頁 / 共 5 頁
字號:
#include <api.h>
#include <console.h>
#include <mifare530.h>
#include <database.h>
#include "PPOS.h"

const unsigned char gcDefaultKeyA[6] = {0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5};
const unsigned char gcDefaultKeyB[6] = {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5};
const unsigned char gcDefaultKeyAf[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
const unsigned char gcDefaultKeyBf[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};

extern unsigned char *BCD2ASC(unsigned char *strBCD, unsigned char cLenBCD);
extern unsigned char *ASC2BCD(unsigned char *strASC, unsigned char cLenASC);
extern void OverTurnString(void *strSource, void *strTarge, unsigned char cLength);

//認證卡片
unsigned char AuthenCard(unsigned long *lSerialNo, unsigned char Sector, unsigned char ModeSel)
{
	unsigned char keysel1, keysel2;
//	unsigned char cKey[6];
	unsigned char *pKey;
	int i;

	if (Sector>15) return 0;
	if(ModeSel == MIF_READ)
	{
		keysel1 = PICC_AUTHENT1A;
		pKey = gstWorkCardKey.cKeyA[Sector];
	}
	else if(ModeSel == MIF_WRITE)
	{
//		if ((gstWorkCardInfomation.cKeyVerision == 0xa0)||(gstWorkCardInfomation.cKeyVerision == 0xff))
//		{
//			keysel1 = PICC_AUTHENT1A;
//			pKey = gstWorkCardKey.cKeyA[Sector];
//		}
//		else
//		{
			keysel1 = PICC_AUTHENT1B;
			pKey = gstWorkCardKey.cKeyB[Sector];
//		}
	}
	else 
		return 0;		
	for(i=0;i<3;i++)
	{
//		clr_scr();
//		move_cursor(i,0);
//		puts("CardTypeARequest");
		if (CardTypeARequest(PICC_REQIDL, gcATQ)==MI_OK)
		{
//			move_cursor(i,1);
//			puts("CardTypeASelect");
			if (CardTypeASelectLevel1((unsigned char*)lSerialNo, gcATS)==MI_OK)
			{
//				move_cursor(i,2);
//				puts("CardMFCAuthKey");
				if (CardMFCAuthKey(keysel1, (unsigned char*)lSerialNo, pKey, Sector*4+3)==MI_OK)
				{
					break;
				}
			}
		}
	}
	if(i==3)
	{
//		move_cursor(i,3);
//		puts("ERR");
		return 0;
	}
	
//	move_cursor(i,3);
//	puts("OK");
	return 1;
}
/*
//認證卡片
unsigned char AuthenCard(unsigned long *lSerialNo, unsigned char Sector, unsigned char ModeSel)
{
	unsigned char keysel1, keysel2;
//	unsigned char cKey[6];
	unsigned char *pKey;
	int i;

	if (Sector>15) return 0;
	if(ModeSel == MIF_READ)
	{
		keysel1 = PICC_AUTHENT1A;
		pKey = gstWorkCardKey.cKeyA[Sector];
	}
	else if(ModeSel == MIF_WRITE)
	{
//		if ((gstWorkCardInfomation.cKeyVerision == 0xa0)||(gstWorkCardInfomation.cKeyVerision == 0xff))
//		{
//			keysel1 = PICC_AUTHENT1A;
//			pKey = gstWorkCardKey.cKeyA[Sector];
//		}
//		else
//		{
			keysel1 = PICC_AUTHENT1B;
			pKey = gstWorkCardKey.cKeyB[Sector];
//		}
	}
	else 
		return 0;		
	for(i=0;i<3;i++)
	{
//		clr_scr();
//		move_cursor(i,0);
//		puts("CardTypeARequest");
		if (CardTypeARequest(PICC_REQIDL, gcATQ)==MI_OK)
		{
//			move_cursor(i,1);
//			puts("CardTypeASelect");
			if (CardTypeASelectLevel1((unsigned char*)lSerialNo, gcATS)==MI_OK)
			{
//				move_cursor(i,2);
//				puts("CardMFCAuthKey");
				if (CardMFCAuthKey(keysel1, (unsigned char*)lSerialNo, pKey, Sector*4+3)==MI_OK)
				{
					break;
				}
			}
		}
	}
	if(i==3)
	{
//		move_cursor(i,3);
//		puts("ERR");
		return 0;
	}
	
//	move_cursor(i,3);
//	puts("OK");
	return 1;
}
*/
//M1卡復(fù)制數(shù)據(jù)塊
unsigned char CopyBlock(unsigned char cSector, unsigned char cSource, unsigned char cTarget, unsigned char cMode)
{
	unsigned char i, k;

	for(k=0;k<3;k++)
	{
		if (CardMFCRead16Bytes(cSource, gcMifBuffer)==MI_OK)
		{
			if (cMode==1)
			{
				for(i=0;i<16;i++)
					gcMifBuffer[i] = 0xff - gcMifBuffer[i];
			}
			if (CardMFCWrite16Bytes(cTarget, gcMifBuffer)==MI_OK)
				break;
		}
	}
	if(k==3) return 0;
	return 1;
}
//M1卡比較數(shù)據(jù)塊
unsigned char CompareBlock(unsigned char cSector, unsigned char cBlock1, unsigned char cBlock2, unsigned char cMode)
{
	unsigned char cBuffer[16];
	unsigned char i;
	
	if (CardMFCRead16Bytes(cBlock2, gcMifBuffer)!=MI_OK) return 0;
	memcpy(cBuffer, gcMifBuffer, 16);
	if (CardMFCRead16Bytes(cBlock1, gcMifBuffer)!=MI_OK) return 0;
	if (cMode==1)
	{
		for(i=0;i<16;i++)
			gcMifBuffer[i] = 0xff - gcMifBuffer[i];
	}
	if (memcmp(cBuffer, gcMifBuffer, 16)!=0)
		return 1;
	else
		return 2;
}
//判斷錢包結(jié)構(gòu)的合法性
unsigned char IsValidMoney(unsigned char cSector, unsigned char cBlock)
{
	unsigned char   i;

	CardMFCRead16Bytes(cBlock, gcMifBuffer);
	for(i=0;i<4;i++)
	{
		if(gcMifBuffer[i] != 0xff - gcMifBuffer[i+4]) return 0;
		if(gcMifBuffer[i]  != gcMifBuffer[i+8]) return 0;
	}
	if(gcMifBuffer[12] != gcMifBuffer[14]) return 0;
	if(gcMifBuffer[13] != gcMifBuffer[15]) return 0;
	if(gcMifBuffer[12] !=  0xff - gcMifBuffer[13]) return 0;
	return 1;
}
/*
//判斷是否在黑名單中
unsigned char IsInBlack(unsigned long lCardNo)
{
	unsigned int i, start, end;
	unsigned char buf[4], cFlag, j;
	
	start = 0;
	end = giBlackListNum - 1;
	if(lCardNo < gcBlackList[start])
		return 0;
	else if(lCardNo == gcBlackList[start])
		return 1;
	if(lCardNo > gcBlackList[end])
		return 0;
	else if(lCardNo == gcBlackList[end])
		return 1;
	while(start!=end-1)
	{
        	i = (start + end) / 2;
		if(lCardNo < gcBlackList[i])
		{
			cFlag = 1;	
			break;
		}
		else if(lCardNo > gcBlackList[i])
		{
			cFlag = 2;	
			break;
		}
		else
			return 1;
		if(cFlag == 1)
		{
			end = i;
		}
		else
		{
			start = i;
		}
	}
	return 0;
}
*/
//生成交易記錄
unsigned char BuildRecord()
{
	unsigned char  i;
	unsigned char  tmpbuf[100], tmpbuf2[20];
	struct sttSysRunTime srt;
	
	move_cursor(0,0);
	puts("BuildRecord");
	
	if( getSysRunTime(&srt) != 0 )                                //得到運行時參數(shù)出錯
	{
		return 1;
	}
	glTradeCounter = srt.lTradeCounter;

	memset(&gstWorkChargeRecord, 0, sizeof(gstWorkChargeRecord));
	OverTurnString(gstWorkChargeRecord.cTraderCounter, &glTradeCounter, 4);
	OverTurnString(gstWorkChargeRecord.cSerialNo, &glSerialNo, 4);
	memcpy(gstWorkChargeRecord.cCityCode, gstWorkCardInfomation.cCityCode, 2);
	memcpy(gstWorkChargeRecord.cTradeCode, gstWorkCardInfomation.cTradeCode, 2);
	memcpy(gstWorkChargeRecord.cCardNo, &gstWorkCardInfomation.lCardNo, 4);
	memcpy(gstWorkChargeRecord.cCardAuthenCode, gstWorkCardInfomation.cAuthenCode, 4);
	gstWorkChargeRecord.cCardType = ((gstWorkCardInfomation.cCardType / 10) << 4) + (gstWorkCardInfomation.cCardType % 10);
	gstWorkChargeRecord.cChargeType = gcChargeType;
	memcpy((unsigned char*)&gstWorkChargeRecord.cChargeDateTime, gcNowTime, 7);	
	switch(gcChargeType)
	{
	case CHARGETYPE_LOGON:
		//管理卡設(shè)置流水號
		OverTurnString(gstWorkChargeRecord.cTotleChargeTimes, &gstWorkCardInfomation.iMoneyTotleTimes, 2);
		//操作員編號
		memcpy(gstWorkChargeRecord.cMoneyOrTimes, &gstWorkCardInfomation.lMoney, 4);
		
		gstWorkChargeRecord.cDate[0] = 0xff;						
		gstWorkChargeRecord.cDate[1] = 0xff;						
//		gstWorkChargeRecord.cRecordType = 2;
		break;
	case CHARGETYPE_SALE:
		gstWorkChargeRecord.cCardType = gcNewCardType;							
	case CHARGETYPE_INCMONEY:
	case CHARGETYPE_DECMONEY:
	case CHARGETYPE_PURMONEY:
//		memcpy(gstWorkChargeRecord.cTotleChargeTimes, &gstWorkCardInfomation.iMoneyTotleTimes, 2);
		OverTurnString(gstWorkChargeRecord.cTotleChargeTimes, &gstWorkCardInfomation.iMoneyTotleTimes, 2);
//		memcpy(gstWorkChargeRecord.cMoneyOrTimes, &gstWorkCardInfomation.lMoney, 4);
		OverTurnString(gstWorkChargeRecord.cMoneyOrTimes, &gstWorkCardInfomation.lMoney, 4);
//		memcpy(gstWorkChargeRecord.cChargeMoneyOrTimes, &glChargeMoney, 3);
		OverTurnString(gstWorkChargeRecord.cChargeMoneyOrTimes, (unsigned char*)&glChargeMoney+1, 3);
		gstWorkChargeRecord.cDate[0] = 0xff;						
		gstWorkChargeRecord.cDate[1] = 0xff;						
//		gstWorkChargeRecord.cRecordType = 2;
		break;
	case CHARGETYPE_INCTIMES:
	case CHARGETYPE_DECTIMES:
	case CHARGETYPE_PURTIMES:
//		memcpy(gstWorkChargeRecord.cTotleChargeTimes, &gstWorkCardInfomation.iTimesTotleTimes, 2);
		OverTurnString(gstWorkChargeRecord.cTotleChargeTimes, &gstWorkCardInfomation.iTimesTotleTimes, 2);
//		memcpy(gstWorkChargeRecord.cMoneyOrTimes, &gstWorkCardInfomation.lTimes, 4);
		OverTurnString(gstWorkChargeRecord.cMoneyOrTimes, &gstWorkCardInfomation.lTimes, 4);
//		memcpy(gstWorkChargeRecord.cChargeMoneyOrTimes, &glChargeMoney, 3);
		OverTurnString(gstWorkChargeRecord.cChargeMoneyOrTimes, (unsigned char*)&glChargeMoney+1, 3);
		gstWorkChargeRecord.cDate[0] = ((gcChargeTimesDate[1]/10)<<4)+gcChargeTimesDate[1]%10;						
		gstWorkChargeRecord.cDate[1] = ((gcChargeTimesDate[1]/10)<<4)+gcChargeTimesDate[1]%10;
//		gstWorkChargeRecord.cRecordType = 2;
		break;
	}

	memcpy(tmpbuf, (unsigned char*)&gstWorkChargeRecord+4, 36);
	tmpbuf[36] = 0x80;
	tmpbuf[37] = 0x00;
	tmpbuf[38] = 0x00;
	tmpbuf[39] = 0x00;
	
	memset(tmpbuf2, 0x00, sizeof(tmpbuf2));
	memcpy(tmpbuf2+8, gcCityNo, 2);
	tmpbuf2[10] = 0xff;
	for(i=0;i<8;i++)
		tmpbuf2[i] = 0xff - tmpbuf2[i+8];
//		
//	set_console_english();
//	clr_scr();
//	Dispbcd(0,0,tmpbuf2, 16);
//	set_console_chinese();
	
	delay_n_ms(20);
	if(!SelectFile(0, 0x1001)) return ERR_PSAM_SPKEY;
	delay_n_ms(20);

	i = InitForDescrypt(0x10, tmpbuf2, 0x44, 0x01);

	if (i != 1) return ERR_PSAM_SPKEY;
	delay_n_ms(2);
	i = MAC(40, tmpbuf);

	if (i != 4) return ERR_PSAM_SPKEY;
	delay_n_ms(20);
	if(!GetResponse(tmpbuf, i)) return ERR_PSAM_FUNC;

	memcpy(gstWorkChargeRecord.cTAC, tmpbuf, 4);
//	set_console_english();
//	clr_scr();
//	Dispbcd(0,0,(unsigned char*)&gstWorkChargeRecord+4, 40);
//	set_console_chinese();

	i=appendTradeRecord(&gstWorkChargeRecord);
	i = 0;
	if(i!=ST_OK)
	{
		return ERR_CHG_WRITEEEPROM;
	}
	return ST_OK;
}
//寫交易進程標志
unsigned char WriteChargeStep(unsigned char cFlag)
{
	unsigned char  i;
	
	gcSector = gstWorkCardInfomation.stCardStruct.cPublicSector;
	gcBlock = gcSector * 4;
	if (cFlag > 2) return 0;
	if(!AuthenCard(&glSerialNo,gcSector,MIF_READ)) return 0;
	for(i=0;i<3;i++)
	{
		if (CardMFCRead16Bytes(gcBlock, gcMifBuffer)==MI_OK)
			break;
	} 
	if(i==3)return 0;
	gcMifBuffer[3] = cFlag;
	gstWorkCardInfomation.cChargeStep = cFlag;
	gcMifBuffer[15] = 0;
	for(i=0;i<15;i++)
		gcMifBuffer[15] ^= gcMifBuffer[i];
	for(i=0;i<3;i++)
	{
		if (CardMFCWrite16Bytes(gcBlock, gcMifBuffer)==MI_OK)
			break;
	} 
	if(i==3)return 0;
	return 1;
}
//更改錢包
unsigned char ModifyMoney(unsigned char cMode,unsigned char blck, unsigned long lMoney)
{
	unsigned char  i;

	switch(blck)
	{
	case 9:
		for(i=0;i<3;i++)
		{
			gcSector = gstWorkCardInfomation.stCardStruct.cMoneySector;
			if(AuthenCard(&glSerialNo,gcSector,MIF_READ))
				if(CardMFCValueWithTransfer(cMode, 9, 10, lMoney)==MI_OK)
					break;
		}
		if (i==3) return 0;
		break;
	case 10:
		for(i=0;i<3;i++)
		{
			gcSector = gstWorkCardInfomation.stCardStruct.cMoneySector;
			if(AuthenCard(&glSerialNo,gcSector,MIF_READ))
				if(CardMFCValueWithTransfer(cMode, 10, 9, lMoney)==MI_OK)
					break;
		}
		if (i==3) return 0;
		break;
	case 33:
		for(i=0;i<3;i++)
		{
			gcSector = gstWorkCardInfomation.stCardStruct.cEveTimesSector;
			if(AuthenCard(&glSerialNo,gcSector,MIF_READ))
				if(CardMFCValueWithTransfer(cMode, 33, 34, lMoney)==MI_OK)
					break;
		}
		if (i==3) return 0;
		break;
	case 34:
		for(i=0;i<3;i++)
		{
			gcSector = gstWorkCardInfomation.stCardStruct.cEveTimesSector;
			if(AuthenCard(&glSerialNo,gcSector,MIF_READ))

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品人成在线观看免费| 亚洲国产精品一区二区尤物区| 欧美在线观看禁18| 精品亚洲aⅴ乱码一区二区三区| 国产精品理论在线观看| 日韩免费性生活视频播放| 在线免费av一区| 风流少妇一区二区| 蜜桃av噜噜一区| 亚洲国产精品久久人人爱蜜臀| 中文字幕第一区综合| 日韩视频免费直播| 欧美性videosxxxxx| 99视频在线精品| 国产91精品露脸国语对白| 久久99热这里只有精品| 性欧美大战久久久久久久久| 亚洲乱码一区二区三区在线观看| 国产农村妇女精品| 久久这里只精品最新地址| 欧美日韩国产一级二级| 欧美伊人久久久久久久久影院| aaa亚洲精品| 成人aaaa免费全部观看| 国产成人精品一区二区三区四区| 精品写真视频在线观看| 久久综合综合久久综合| 免费成人在线视频观看| 日韩国产成人精品| 亚洲综合偷拍欧美一区色| 一区二区三区日韩精品视频| 亚洲色图视频免费播放| 国产精品国产三级国产普通话蜜臀 | 91在线视频免费91| 丰满亚洲少妇av| 成人伦理片在线| 成人av在线一区二区三区| 国产成人av电影| 成人av免费在线播放| www.av亚洲| 不卡电影一区二区三区| 91在线观看视频| 色哟哟欧美精品| 欧美日韩一区三区四区| 欧美日韩视频一区二区| 69久久夜色精品国产69蝌蚪网| 69堂亚洲精品首页| 精品国产第一区二区三区观看体验 | 国产精品进线69影院| 中文字幕中文字幕在线一区| 中文字幕亚洲一区二区av在线| 亚洲欧美区自拍先锋| 一级做a爱片久久| 日韩激情在线观看| 经典三级视频一区| 成人免费视频视频在线观看免费| aaa国产一区| 欧美三级午夜理伦三级中视频| 欧美日韩夫妻久久| 久久亚洲一区二区三区明星换脸| 久久精品视频在线看| 亚洲婷婷综合色高清在线| 亚洲电影在线免费观看| 奇米精品一区二区三区在线观看| 国产麻豆精品视频| 91精品办公室少妇高潮对白| 欧美日韩国产小视频在线观看| 日韩美女视频一区二区在线观看| 国产亚洲欧美一区在线观看| 尤物在线观看一区| 久久国产精品区| av一二三不卡影片| 欧美中文字幕一区二区三区亚洲| 日韩无一区二区| 国产欧美精品一区aⅴ影院 | 亚洲色图制服诱惑| 蜜桃视频免费观看一区| av电影在线观看一区| 欧美一区二区三区四区在线观看 | 一区二区三区在线看| 日本不卡高清视频| 成人黄色免费短视频| 欧美欧美欧美欧美首页| 欧美国产精品久久| 日本免费在线视频不卡一不卡二| 成人影视亚洲图片在线| 欧美久久久久久久久| 国产午夜精品一区二区 | 国产裸体歌舞团一区二区| 色94色欧美sute亚洲13| 精品乱人伦一区二区三区| 亚洲美女免费在线| 国产一区福利在线| 一本大道久久精品懂色aⅴ | 亚洲国产精品欧美一二99| 国产福利一区二区三区| 欧美日韩国产一二三| 国产精品久久久久7777按摩| 开心九九激情九九欧美日韩精美视频电影 | 精品久久一区二区三区| 一区二区三区日韩欧美| 国产69精品久久久久777| 91麻豆精品国产无毒不卡在线观看 | 亚洲色图制服诱惑 | 亚洲一区av在线| 丁香天五香天堂综合| 欧美一区二区私人影院日本| 亚洲色图在线播放| 国产.精品.日韩.另类.中文.在线.播放| 欧美日韩国产系列| 亚洲精品免费视频| 成人听书哪个软件好| 欧美成人国产一区二区| 亚洲超丰满肉感bbw| 色偷偷一区二区三区| 中文字幕一区二区视频| 国产成人综合视频| 精品久久人人做人人爱| 日韩国产精品久久久| 欧美日韩aaaaa| 亚洲一区二区三区在线播放| 91视频.com| 中文字幕一区二区三区不卡在线| 丁香婷婷综合色啪| 国产欧美日韩综合精品一区二区| 久草热8精品视频在线观看| 91精品国产美女浴室洗澡无遮挡| 午夜久久福利影院| 欧美日韩不卡视频| 日韩国产在线观看一区| 欧美电影一区二区三区| 亚洲1区2区3区4区| 91精品在线一区二区| 午夜成人在线视频| 欧美一区二区在线不卡| 麻豆国产精品官网| 日韩欧美色综合网站| 精品亚洲aⅴ乱码一区二区三区| 欧美成人video| 国产麻豆精品视频| 国产偷国产偷亚洲高清人白洁 | 麻豆精品视频在线观看免费| 欧美成人高清电影在线| 国产在线精品一区二区| 2021中文字幕一区亚洲| 国产毛片精品国产一区二区三区| 国产午夜精品一区二区三区嫩草| 成人黄色网址在线观看| 亚洲天堂福利av| 欧美亚洲综合一区| 日韩av一二三| 久久精品一区二区| 97国产精品videossex| 亚洲图片欧美视频| 日韩精品综合一本久道在线视频| 国产在线观看免费一区| 日本一区二区三区在线观看| 99久久精品国产麻豆演员表| 一区二区三区欧美在线观看| 欧美日韩二区三区| 国产伦精品一区二区三区免费迷| 国产精品久久久久影视| 91国产精品成人| 久久疯狂做爰流白浆xx| 欧美激情一区二区| 欧美午夜在线一二页| 麻豆极品一区二区三区| 国产欧美一区二区精品忘忧草| 91久久免费观看| 麻豆精品一区二区三区| 国产精品高清亚洲| 在线综合视频播放| 成人h动漫精品一区二| 亚洲国产日韩a在线播放性色| 日韩精品一区二区三区在线观看| 菠萝蜜视频在线观看一区| 石原莉奈在线亚洲二区| 亚洲国产精品t66y| 777欧美精品| av电影在线观看一区| 久久成人免费日本黄色| 亚洲免费在线电影| 久久影院视频免费| 欧美三级韩国三级日本三斤 | 欧美嫩在线观看| 成人少妇影院yyyy| 蜜桃视频在线观看一区二区| 亚洲欧美日韩久久| 精品国产一区二区三区av性色| 91色乱码一区二区三区| 极品瑜伽女神91| 亚洲高清视频在线| 国产精品久久久久影院亚瑟| 欧美成人精精品一区二区频| 欧美在线|欧美| 国产91丝袜在线播放| 日韩激情一区二区| 伊人一区二区三区| 日本一区二区三区高清不卡| 日韩视频免费观看高清完整版 |