X-Git-Url: https://hackdaworld.org/gitweb/?p=rfid%2Flibrfid.git;a=blobdiff_plain;f=gemtag%2Fgemtag.c;fp=gemtag%2Fgemtag.c;h=e674d4989c2f33b338d75adb9f819610b3adb6e6;hp=121170f9c0dafa9da84f03faac256af59fc0adde;hb=03006df71d07c88b1fd9f01839336801207b7ec4;hpb=1557eeb9a2ba194aaa608c85dba73779476badf4 diff --git a/gemtag/gemtag.c b/gemtag/gemtag.c index 121170f..e674d49 100644 --- a/gemtag/gemtag.c +++ b/gemtag/gemtag.c @@ -1,5 +1,6 @@ /* - * (C) 2006 by Frank Zirkelbach + * (C) 2006 by Harald Welte + * Frank Zirkelbach * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 @@ -25,21 +26,20 @@ #include "gemtag.h" int asciidump(unsigned char *data,int len) { + int i; for(i=0;i0x19)&&(data[i]<0x7f)) printf("%c",data[i]); - else printf("."); - //printf("\n"); + printf("%c",(data[i]>0x19)&&(data[i]<0x7f)?data[i]:'.'); return 0; } int hexdump(unsigned char *data,int len) { + int i; for(i=0;iserial,4); + buf[5]=0; + buf[6]=sector; + ret=gemtag_transceive(gh,GEMTAG_CMD_PICC_AUTH_E2,buf,7,buf,&len); + if(ret) return -AUTH_E2_FAILED; + + return 0; } @@ -302,8 +318,9 @@ int gemtag_write16(struct gemtag_handle *gh,int sector,unsigned char *data) { buf[0]=sector; memcpy(buf+1,data,16); ret=gemtag_transceive(gh,GEMTAG_CMD_PICC_WRITE,buf,17,buf,&len); + if(ret) return -WRITE_FAILED; - return ret; + return 0; } int gemtag_select_picc(struct gemtag_handle *gh) { @@ -342,14 +359,6 @@ int main(int argc, char **argv) { gh->caps|=GEMTAG_CAP_CRC; //gh->caps|=GEMTAG_CAP_VERB_TRANSMIT; - /* - printf("Device:\n"); - gemtag_transceive(gh,GEMTAG_CMD_GET_FW_VERSION, - NULL,0,buf,&buflen); - asciidump(buf,buflen); - printf("\n"); - */ - if(gemtag_select_picc(gh)) { printf("no card found!\n"); return -NO_PICC; @@ -360,7 +369,7 @@ int main(int argc, char **argv) { gh->serial[3],gh->serial[2],gh->serial[1],gh->serial[0]); i=0; while(!gemtag_auth_mifare_key(gh,key6,i)) { - gemtag_read16(gh,i,buf); + ret=gemtag_read16(gh,i,buf); printf("%02x: ",i); hexdump(buf,16); printf(" | "); @@ -370,23 +379,6 @@ int main(int argc, char **argv) { } printf("\n"); - /* try to write some data */ - printf("write some data to the sector 04:\n"); - for(i=0;i<16;i++) buf[i]=i; - i=4; - ret=gemtag_auth_mifare_key(gh,key6,i); - printf("return = %d\n",ret); - if(ret) printf("auth failed!\n"); - ret=gemtag_write16(gh,i,buf); - if(ret) printf("write failed!\n"); - printf("return = %d\n",ret); - ret=gemtag_read16(gh,i,buf); - if(ret) printf("read failed!\n"); - printf("return = %d\n",ret); - printf("%02x: ",i); - hexdump(buf,16); - printf("\n"); - gemtag_close(gh); return 0;