X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/6949aca9fa0e37539fc277bac78e3d7a22117467..72c4af087f2950bb445ae0c9c439724efe9a0d0e:/armsrc/iso15693.c diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 723d297d..acace295 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -10,8 +10,6 @@ //----------------------------------------------------------------------------- #include #include "apps.h" -#include -#include // FROM winsrc\prox.h ////////////////////////////////// #define arraylen(x) (sizeof(x)/sizeof((x)[0])) @@ -926,24 +924,18 @@ void ReaderIso15693(DWORD parameter) //DbpString(parameter); - BYTE *receivedAnswer0 = (((BYTE *)BigBuf) + 3560); // allow 100 bytes per reponse (way too much) - BYTE *receivedAnswer1 = (((BYTE *)BigBuf) + 3660); // - BYTE *receivedAnswer2 = (((BYTE *)BigBuf) + 3760); - BYTE *receivedAnswer3 = (((BYTE *)BigBuf) + 3860); + //BYTE *answer0 = (((BYTE *)BigBuf) + 3560); // allow 100 bytes per reponse (way too much) + BYTE *answer1 = (((BYTE *)BigBuf) + 3660); // + BYTE *answer2 = (((BYTE *)BigBuf) + 3760); + BYTE *answer3 = (((BYTE *)BigBuf) + 3860); //BYTE *TagUID= (((BYTE *)BigBuf) + 3960); // where we hold the uid for hi15reader -// int responseLen0 = 0; - int responseLen1 = 0; - int responseLen2 = 0; - int responseLen3 = 0; +// int answerLen0 = 0; + int answerLen1 = 0; + int answerLen2 = 0; + int answerLen3 = 0; // Blank arrays - int j; - for(j = 0; j < 100; j++) { - receivedAnswer3[j] = 0; - receivedAnswer2[j] =0; - receivedAnswer1[j] = 0; - receivedAnswer0[j] = 0; - } + memset(BigBuf + 3660, 0, 300); // Setup SSC FpgaSetupSsc(); @@ -997,24 +989,24 @@ void ReaderIso15693(DWORD parameter) //TransmitTo15693Tag(ToSend,ToSendMax+3,&tsamples, &wait); TransmitTo15693Tag(ToSend,ToSendMax,&tsamples, &wait); // No longer ToSendMax+3 // Now wait for a response - responseLen1 = GetIso15693AnswerFromTag(receivedAnswer1, 100, &samples, &elapsed) ; + answerLen1 = GetIso15693AnswerFromTag(answer1, 100, &samples, &elapsed) ; - if (responseLen1 >=12) // we should do a better check than this + if (answerLen1 >=12) // we should do a better check than this { - TagUID[0] = receivedAnswer1[2]; - TagUID[1] = receivedAnswer1[3]; - TagUID[2] = receivedAnswer1[4]; - TagUID[3] = receivedAnswer1[5]; - TagUID[4] = receivedAnswer1[6]; - TagUID[5] = receivedAnswer1[7]; - TagUID[6] = receivedAnswer1[8]; // IC Manufacturer code + TagUID[0] = answer1[2]; + TagUID[1] = answer1[3]; + TagUID[2] = answer1[4]; + TagUID[3] = answer1[5]; + TagUID[4] = answer1[6]; + TagUID[5] = answer1[7]; + TagUID[6] = answer1[8]; // IC Manufacturer code // Now send the SELECT command BuildSelectRequest(TagUID); TransmitTo15693Tag(ToSend,ToSendMax,&tsamples, &wait); // No longer ToSendMax+3 // Now wait for a response - responseLen2 = GetIso15693AnswerFromTag(receivedAnswer2, 100, &samples, &elapsed); + answerLen2 = GetIso15693AnswerFromTag(answer2, 100, &samples, &elapsed); // Now send the MULTI READ command // BuildArbitraryRequest(*TagUID,parameter); @@ -1024,34 +1016,25 @@ void ReaderIso15693(DWORD parameter) //TransmitTo15693Tag(ToSend,ToSendMax+3,&tsamples, &wait); TransmitTo15693Tag(ToSend,ToSendMax,&tsamples, &wait); // No longer ToSendMax+3 // Now wait for a response - responseLen3 = GetIso15693AnswerFromTag(receivedAnswer3, 100, &samples, &elapsed) ; + answerLen3 = GetIso15693AnswerFromTag(answer3, 100, &samples, &elapsed) ; } - char str1 [4]; - //char str2 [200]; - int i; + Dbprintf("%d octets read from IDENTIFY request: %x %x %x %x %x %x %x %x %x", answerLen1, + answer1[0], answer1[1], answer1[2], + answer1[3], answer1[4], answer1[5], + answer1[6], answer1[7], answer1[8]); - itoa(responseLen1,str1); - strcat(str1," octets read from IDENTIFY request"); - DbpString(str1); - for(i = 0; i < responseLen1; i+=3) { - DbpIntegers(receivedAnswer1[i],receivedAnswer1[i+1],receivedAnswer1[i+2]); - } + Dbprintf("%d octets read from SELECT request: %x %x %x %x %x %x %x %x %x", answerLen2, + answer2[0], answer2[1], answer2[2], + answer2[3], answer2[4], answer2[5], + answer2[6], answer2[7], answer2[8]); - itoa(responseLen2,str1); - strcat(str1," octets read from SELECT request"); - DbpString(str1); - for(i = 0; i < responseLen2; i+=3) { - DbpIntegers(receivedAnswer2[i],receivedAnswer2[i+1],receivedAnswer2[i+2]); - } + Dbprintf("%d octets read from XXX request: %x %x %x %x %x %x %x %x %x", answerLen3, + answer3[0], answer3[1], answer3[2], + answer3[3], answer3[4], answer3[5], + answer3[6], answer3[7], answer3[8]); - itoa(responseLen3,str1); - strcat(str1," octets read from XXX request"); - DbpString(str1); - for(i = 0; i < responseLen3; i+=3) { - DbpIntegers(receivedAnswer3[i],receivedAnswer3[i+1],receivedAnswer3[i+2]); - } // str2[0]=0; // for(i = 0; i < responseLen3; i++) { @@ -1077,26 +1060,11 @@ void SimTagIso15693(DWORD parameter) LED_C_OFF(); LED_D_OFF(); -//DbpString(parameter); - - BYTE *receivedAnswer0 = (((BYTE *)BigBuf) + 3560); // allow 100 bytes per reponse (way too much) - BYTE *receivedAnswer1 = (((BYTE *)BigBuf) + 3660); // - BYTE *receivedAnswer2 = (((BYTE *)BigBuf) + 3760); - BYTE *receivedAnswer3 = (((BYTE *)BigBuf) + 3860); - //BYTE *TagUID= (((BYTE *)BigBuf) + 3960); // where we hold the uid for hi15reader -// int responseLen0 = 0; - int responseLen1 = 0; -// int responseLen2 = 0; -// int responseLen3 = 0; + BYTE *answer1 = (((BYTE *)BigBuf) + 3660); // + int answerLen1 = 0; // Blank arrays - int j; - for(j = 0; j < 100; j++) { - receivedAnswer3[j] = 0; - receivedAnswer2[j] =0; - receivedAnswer1[j] = 0; - receivedAnswer0[j] = 0; - } + memset(answer1, 0, 100); // Setup SSC FpgaSetupSsc(); @@ -1122,66 +1090,19 @@ void SimTagIso15693(DWORD parameter) int wait = 0; int elapsed = 0; - // FIRST WE RUN AN INVENTORY TO GET THE TAG UID - // THIS MEANS WE CAN PRE-BUILD REQUESTS TO SAVE CPU TIME - // BYTE TagUID[7]; // where we hold the uid for hi15reader + answerLen1 = GetIso15693AnswerFromSniff(answer1, 100, &samples, &elapsed) ; - // Now send the IDENTIFY command - // BuildIdentifyRequest(); - // TransmitTo15693Tag(ToSend,ToSendMax,&tsamples, &wait); // No longer ToSendMax+3 - - // Now wait for a command from the reader - responseLen1=0; - // while(responseLen1=0) { - // if(BUTTON_PRESS()) break; - responseLen1 = GetIso15693AnswerFromSniff(receivedAnswer1, 100, &samples, &elapsed) ; - // } - - if (responseLen1 >=1) // we should do a better check than this + if (answerLen1 >=1) // we should do a better check than this { // Build a suitable reponse to the reader INVENTORY cocmmand BuildInventoryResponse(); - TransmitTo15693Reader(ToSend,ToSendMax,&tsamples, &wait); - - // Now wait for a command from the reader -// responseLen2 = GetIso15693AnswerFromTag(receivedAnswer2, 100, &samples, &elapsed); - - // Now wait for a command from the reader -// responseLen3 = GetIso15693AnswerFromTag(receivedAnswer3, 100, &samples, &elapsed) ; - + TransmitTo15693Reader(ToSend,ToSendMax, &tsamples, &wait); } - char str1 [4]; - //char str2 [200]; - int i; - - itoa(responseLen1,str1); - strcat(str1," octets read from reader command"); - DbpString(str1); - for(i = 0; i < responseLen1; i+=3) { - DbpIntegers(receivedAnswer1[i],receivedAnswer1[i+1],receivedAnswer1[i+2]); - } - -// itoa(responseLen2,str1); -// strcat(str1," octets read from SELECT request"); -// DbpString(str1); -// for(i = 0; i < responseLen2; i+=3) { -// DbpIntegers(receivedAnswer2[i],receivedAnswer2[i+1],receivedAnswer2[i+2]); -// } -// -// itoa(responseLen3,str1); -// strcat(str1," octets read from XXX request"); -// DbpString(str1); -// for(i = 0; i < responseLen3; i+=3) { -// DbpIntegers(receivedAnswer3[i],receivedAnswer3[i+1],receivedAnswer3[i+2]); -// } - -// str2[0]=0; -// for(i = 0; i < responseLen3; i++) { -// itoa(str1,receivedAnswer3[i]); -// strcat(str2,str1); -// } -// DbpString(str2); + Dbprintf("%d octets read from reader command: %x %x %x %x %x %x %x %x %x", answerLen1, + answer1[0], answer1[1], answer1[2], + answer1[3], answer1[4], answer1[5], + answer1[6], answer1[7], answer1[8]); LED_A_OFF(); LED_B_OFF();