lunes, 12 de enero de 2009

Tarjeta CHIP

/*Lector de Tarjetas Chip */
/*Autor: Jose Maria Quiroga */
/*mail: chispilinux@gmail.com */



/*bit 7 busy 11 invertido I/O */
/* 6 ack 10 */
/* 5 paper ut 12 S/N */
/* 4 select in 13 */
/* 3 spare-error 15 */
/* */
/* 0 Reset 2 */
/* 1 Clock 3 */
/* 2 R/W 4 */

/* aqui ponga el include de cada uno stdio.h sys/io.h string.h*/
/* xD no me dejaa asi que bueno no tengo ganas de editar eso : P*/

#define PortDatos 888 /*0x378*/
#define PortStatus 889 /*0x379*/
#define PortControl 890 /*0x37a*/
/*----------------------------------------*/
void output(int,int);
int input(int);
/*----------------------------------------*/
void output(int dato,int Puerto)
{
ioperm(Puerto,1,1);
outb(dato,Puerto);
ioperm(Puerto,1,0);
}
/*----------------------------------------*/
int input(int Puerto)
{
int aux;
ioperm(Puerto,1,1);
aux=inb(Puerto);
ioperm(Puerto,1,0);
return(aux);
}
/*----------------------------------------*/
int Datos,aux,i,Cont,aux2;
char Vector[257];

main (int argc,char **argv)
{
system("clear");
FILE *Archivo;
/*Verifica si esta o no la Tarjeta*/

aux=input(PortStatus);

if (aux & 32)
printf("Inserte Tarjeta\n");
else
{
printf("Tarjeta Insertada\n");

/*Reset*/
output(0,PortDatos);
output(2,PortDatos); /*CLOCK*/
output(0,PortDatos);
output(1,PortDatos); /*RESET*/

/*Lectura de los 256 bits*/
for (i=1;i<257;i++)
{
Datos=input(PortStatus);

if (Datos & 128 )
Vector[i]='0';
else
Vector[i]='1';
output(3,PortDatos);
output(1,PortDatos);

}


/*Mostrando tarjeta*/

for (Cont=1;Cont<33;Cont++)
{
printf("%i ",Cont-1);
for (i=1+aux2;i<9+aux2;i++)
{
printf("%c",Vector[i]);
}
aux2=aux2+8;
printf("\n");
}


printf("Tipo de tarjeta:");
for (Cont=9;Cont<=16;Cont++){
printf("%c",Vector[Cont]);
}
printf("\n");

printf("Fabricante:");
for (Cont=33;Cont<=40;Cont++){
printf("%c",Vector[Cont]);
}
printf("\n");

printf("Numero de serie:");
for(Cont=41;Cont<=64;Cont++){
printf("%c",Vector[Cont]);
}
printf("\n");

printf("Cantidad de pulsos:");
for(Cont=65;Cont<=80;Cont++){
printf("%c",Vector[Cont]);
}
printf("\n");

printf("Codigo de pais:");
for(Cont=89;Cont<=96;Cont++){
printf("%c",Vector[Cont]);
}
printf("\n");
}
}

IRC

#freenode->#usljujuy

Seguidores

Eventos n_n

Tira Ecol Nano,Bilo y Luca