⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psam.c

📁 是上一个SMS消费机的充值机程序
💻 C
字号:
#include <api.h>
#include <console.h>
#include "string.h"
#include "stdio.h"

unsigned char ResetResponse(unsigned char *ptr, unsigned char *len)
{
	ICC_interface_power(ICC_POWER_ON);
	ICC_select_sock(ICC_SOCK_MAIN);
        if(ICC_cpucard_ATR(ptr,len, ICC_CLOCK_4M, ICC_VOLTAGE_5, 0x11, 1)==0)
        	return 1;
        else
        	return 0;
}

unsigned char GetChallenge(unsigned char *ptr)
{
	unsigned short sw;
	
	if(ICC_T0_TPDU(1,0x00,0x84,0x00,0x00,0x08,ptr,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}
	
unsigned char SelectFile(unsigned char mode,unsigned short file_ID)
{
	unsigned char cmd[40];
	unsigned short sw;
	
	cmd[0] = file_ID/256;
	cmd[1] = file_ID%256;
	if(ICC_T0_TPDU(0,0x00,0xa4,mode,0x00,0x02,cmd,&sw))
		return 0;
	else
	{
/*		clr_scr();
		move_cursor(0,0);
		set_console_english();
		Dispbcd(0,0, &sw, 2);
		set_console_chinese();
*/		if ((sw & 0xff00)== 0x6100)
			return 1;
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

unsigned char GetResponse(unsigned char  *ptr,unsigned char cLength)
{	
	unsigned short sw;

	if(ICC_T0_TPDU(1,0x00,0xc0,0x00,0x00,cLength,ptr,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}
unsigned char InternalAuth(unsigned char *ptr, unsigned char Keyno)
{	
	unsigned short sw;
	
	if(ICC_T0_TPDU(0,0x00,0x88,0x00,Keyno,0x08,ptr,&sw))
		return 0;
	else
	{
		if ((sw&0xff00) == 0x6100)
			return (sw&0xff);
		else
			return 0;
	}
}

unsigned char ExternalAuth(unsigned char *ptr, unsigned char Keyno)
{	
	unsigned char cmd[40];
	unsigned short sw;
	
	memcpy(cmd, ptr, 8);
	if(ICC_T0_TPDU(0,0x00,0x82,0x00,Keyno,0x08,cmd,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

unsigned char ReadBinary(unsigned char file_ID,unsigned char offset,unsigned char cLength,unsigned char *ptr)
{
	unsigned short sw;
	
	if(ICC_T0_TPDU(1,0x00,0xb0,file_ID|0x80,offset,cLength,ptr,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

unsigned char UpdateBinary(unsigned char cla,unsigned char file_ID,unsigned char offset,unsigned char cLength,unsigned char *ptr)
{
	unsigned char cmd[40];	
	unsigned short sw;
	
	memcpy(cmd, ptr, cLength);
	if(ICC_T0_TPDU(0,cla,0xd6,file_ID|0x80,offset,cLength,cmd,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

unsigned char ReadRecord(unsigned char file_ID,unsigned char recordNO,unsigned char cLength,unsigned char *ptr)
{
	unsigned short sw, buf[10];
	
	if(ICC_T0_TPDU(1,0x00,0xb2,recordNO,(file_ID<<3)|0x04,cLength,ptr,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

unsigned char AppendRecord(unsigned char file_ID,unsigned char cLength,unsigned char *ptr)
{	
	unsigned char cmd[40];
	unsigned short sw;
	
	memcpy(cmd, ptr, cLength);
	if(ICC_T0_TPDU(0,0x00,0xe2,0x00,file_ID<<3,cLength,cmd,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

unsigned char UpdateRecord(unsigned char file_ID,unsigned char recordNO,unsigned char cLength,unsigned char *ptr)
{	
	unsigned char cmd[40];
	unsigned short sw;
	
	memcpy(cmd, ptr, cLength);
	if(ICC_T0_TPDU(0,0x00,0xdc,recordNO,(file_ID<<3)|0x04,cLength,cmd,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}	

unsigned char GetMifKey(unsigned char KID, unsigned char MACKID, unsigned char  *ptr, unsigned char len)
{
	unsigned char cmd[80], clen;
	unsigned short sw;
	
	memcpy(cmd, ptr, len);
	if(ICC_T0_TPDU(0,0x80,0xfc,KID,MACKID,len,cmd,&sw))
		return 0;
	else
	{
//		clr_scr();
//		move_cursor(0,0);
//		set_console_english();
//		Dispbcd(0,0, &sw, 2);
//		set_console_chinese();

		if ((sw&0xff00) == 0x6100)
			return (sw&0xff);
		else
			return 0;
	}
}

unsigned char InitForDescrypt(unsigned char SepGeneLen, unsigned char *SepGene, unsigned char KeyTpye, unsigned char keyno)
{
	unsigned char cmd[40];
	unsigned short sw;
	
	memcpy(cmd, SepGene, SepGeneLen);
	if(ICC_T0_TPDU(1,0x80,0x1a,KeyTpye,keyno,SepGeneLen,cmd,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

unsigned char Descrypt(unsigned char mode,unsigned char cLength,unsigned char *ptr)
{
	unsigned char cmd[40];
	unsigned short sw;
	
	memcpy(cmd, ptr, cLength);
	if(ICC_T0_TPDU(1,0x80,0xfa,mode,0x00,cLength,cmd,&sw))
		return 0;
	else
	{
		if ((sw&0xff00) == 0x6100)
			return (sw&0xff);
		else
			return 0;
	}	
}

unsigned char MAC(unsigned char cLength, unsigned char *ptr)
{
	unsigned char cmd[40];
	unsigned short sw;
	
	memcpy(cmd, ptr, cLength);
	if(ICC_T0_TPDU(1,0x80,0xfa,0x05,0x00,cLength,cmd,&sw))
		return 0;
	else
	{
		if ((sw&0xff00) == 0x6100)
			return (sw&0xff);
		else
			return 0;
	}
}

unsigned char VerifyPIN(unsigned char cLength, unsigned char *ptr)
{
	unsigned char cmd[40];
	unsigned short sw;
	
	memcpy(cmd, ptr, cLength);
	if(ICC_T0_TPDU(0,0x00,0x20,0x00,0x00,cLength,cmd,&sw))
		return 0;
	else
	{
		if (sw == 0x9000)
			return 1;
		else
			return 0;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -