]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
CHG: moved some TEA crypto stuff from 14b into analyse.
authoriceman1001 <iceman@iuse.se>
Sun, 7 Aug 2016 19:08:17 +0000 (21:08 +0200)
committericeman1001 <iceman@iuse.se>
Sun, 7 Aug 2016 19:08:17 +0000 (21:08 +0200)
client/cmdanalyse.c
client/cmdanalyse.h
client/cmdhf14b.c
client/cmdhf14b.h

index 0ab2463d3458b0cd394a75b2158be9b7f3042fe8..e7a638eed8bd724a31422f21957c779db60039d9 100644 (file)
@@ -249,6 +249,40 @@ int CmdAnalyseDates(const char *Cmd){
        PrintAndLog("To be implemented. Feel free to contribute!");
        return 0;
 }
+int CmdAnalyseTEASelfTest(const char *Cmd){
+       
+       uint8_t v[8], v_le[8];
+       memset(v, 0x00, sizeof(v));
+       memset(v_le, 0x00, sizeof(v_le));
+       uint8_t* v_ptr = v_le;
+
+       uint8_t cmdlen = strlen(Cmd);
+       cmdlen = ( sizeof(v)<<2 < cmdlen ) ? sizeof(v)<<2 : cmdlen;
+       
+       if ( param_gethex(Cmd, 0, v, cmdlen) > 0 ){
+               PrintAndLog("can't read hex chars, uneven? :: %u", cmdlen);
+               return 1;
+       }
+       
+       SwapEndian64ex(v , 8, 4, v_ptr);
+       
+       // ENCRYPTION KEY:      
+       uint8_t key[16] = {0x55,0xFE,0xF6,0x30,0x62,0xBF,0x0B,0xC1,0xC9,0xB3,0x7C,0x34,0x97,0x3E,0x29,0xFB };
+       uint8_t keyle[16];
+       uint8_t* key_ptr = keyle;
+       SwapEndian64ex(key , sizeof(key), 4, key_ptr);
+       
+       PrintAndLog("TEST LE enc| %s", sprint_hex(v_ptr, 8));
+       
+       tea_decrypt(v_ptr, key_ptr);    
+       PrintAndLog("TEST LE dec | %s", sprint_hex_ascii(v_ptr, 8));
+       
+       tea_encrypt(v_ptr, key_ptr);    
+       tea_encrypt(v_ptr, key_ptr);
+       PrintAndLog("TEST enc2 | %s", sprint_hex_ascii(v_ptr, 8));
+
+       return 0;
+}
 
 static command_t CommandTable[] = {
        {"help",        CmdHelp,            1, "This help"},
@@ -256,6 +290,7 @@ static command_t CommandTable[] = {
        {"crc",         CmdAnalyseCRC,          1, "Stub method for CRC evaluations"},
        {"chksum",      CmdAnalyseCHKSUM,       1, "Checksum with adding, masking and one's complement"},
        {"dates",       CmdAnalyseDates,        1, "Look for datestamps in a given array of bytes"},
+       {"tea",         CmdAnalyseTEASelfTest,  1, "Crypto TEA test"},
        {NULL, NULL, 0, NULL}
 };
 
index ddce0ecc42db4f007721100d258d674315542917..ec05cee22d15010d1fef5731fb942acb1821aa08 100644 (file)
@@ -19,6 +19,7 @@
 #include "util.h"
 #include "crc.h"
 #include "../common/iso15693tools.h"
+#include "tea.h"
 
 int usage_analyse_lcr(void);
 int usage_analyse_checksum(void);
@@ -29,4 +30,5 @@ int CmdAnalyseLCR(const char *Cmd);
 int CmdAnalyseCHKSUM(const char *Cmd);
 int CmdAnalyseDates(const char *Cmd);
 int CmdAnalyseCRC(const char *Cmd);
+int CmdAnalyseTEASelfTest(const char *Cmd);
 #endif
index a328d03951a2530b310c14012cecff78e767ab0c..9dfa9afe99f764bbe57de0d202665abcc39c78cf 100644 (file)
@@ -8,10 +8,6 @@
 // High frequency ISO14443B commands
 //-----------------------------------------------------------------------------
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <stdint.h>
 #include "cmdhf14b.h"
 
 #define TIMEOUT 2000
@@ -139,18 +135,15 @@ int CmdHF14BSnoop(const char *Cmd) {
 }
 
 int CmdHF14BCmdRaw (const char *Cmd) {
-       bool reply = TRUE;
-       bool power = FALSE;
-       bool select = FALSE;
+       bool reply = TRUE, power = FALSE, select = FALSE;
        char buf[5]="";
-
        int i = 0;
        uint8_t data[USB_CMD_DATA_SIZE] = {0x00};
        uint16_t datalen = 0;
        uint32_t flags = ISO14B_CONNECT;
        uint32_t temp = 0;
        
-       if (strlen(Cmd)<3) return usage_hf_14b_raw();
+       if ( strlen(Cmd) < 3 ) return usage_hf_14b_raw();
 
     // strip
     while (*Cmd==' ' || *Cmd=='\t') ++Cmd;
@@ -159,8 +152,8 @@ int CmdHF14BCmdRaw (const char *Cmd) {
         if (Cmd[i]==' ' || Cmd[i]=='\t') { ++i; continue; }
         if (Cmd[i]=='-') {
             switch (Cmd[i+1]) {
-                               case 'H':
                                case 'h':
+                               case 'H':
                                        return usage_hf_14b_raw();
                 case 'r': 
                 case 'R': 
@@ -227,11 +220,11 @@ int CmdHF14BCmdRaw (const char *Cmd) {
 
        bool success = TRUE;
        // get back iso14b_card_select_t, don't print it.
-       if(select) 
+       if (select) 
                success = waitCmd(FALSE);
 
        // get back response from the raw bytes you sent.
-       if(success && datalen>0) waitCmd(TRUE);
+       if (success && datalen>0) waitCmd(TRUE);
 
     return 1;
 }
@@ -704,7 +697,7 @@ int CmdHF14BWriteSri(const char *Cmd){
                );
        }
        
-       sprintf(str, "-ss -c %02x %02x %02x%02x%02x%02x", ISO14443B_WRITE_BLK, blockno, data[0], data[1], data[2], data[3]);
+       sprintf(str, "-ss -c %02x %02x %02x %02x %02x %02x", ISO14443B_WRITE_BLK, blockno, data[0], data[1], data[2], data[3]);
        CmdHF14BCmdRaw(str);
        return 0;
 }
@@ -809,41 +802,6 @@ int srix4kValid(const char *Cmd){
        return 0;
 }
 
-int CmdteaSelfTest(const char *Cmd){
-       
-       uint8_t v[8], v_le[8];
-       memset(v, 0x00, sizeof(v));
-       memset(v_le, 0x00, sizeof(v_le));
-       uint8_t* v_ptr = v_le;
-
-       uint8_t cmdlen = strlen(Cmd);
-       cmdlen = ( sizeof(v)<<2 < cmdlen ) ? sizeof(v)<<2 : cmdlen;
-       
-       if ( param_gethex(Cmd, 0, v, cmdlen) > 0 ){
-               PrintAndLog("can't read hex chars, uneven? :: %u", cmdlen);
-               return 1;
-       }
-       
-       SwapEndian64ex(v , 8, 4, v_ptr);
-       
-       // ENCRYPTION KEY:      
-       uint8_t key[16] = {0x55,0xFE,0xF6,0x30,0x62,0xBF,0x0B,0xC1,0xC9,0xB3,0x7C,0x34,0x97,0x3E,0x29,0xFB };
-       uint8_t keyle[16];
-       uint8_t* key_ptr = keyle;
-       SwapEndian64ex(key , sizeof(key), 4, key_ptr);
-       
-       PrintAndLog("TEST LE enc| %s", sprint_hex(v_ptr, 8));
-       
-       tea_decrypt(v_ptr, key_ptr);    
-       PrintAndLog("TEST LE dec | %s", sprint_hex_ascii(v_ptr, 8));
-       
-       tea_encrypt(v_ptr, key_ptr);    
-       tea_encrypt(v_ptr, key_ptr);
-       PrintAndLog("TEST enc2 | %s", sprint_hex_ascii(v_ptr, 8));
-
-       return 0;
-}
-
 bool waitCmd(bool verbose) {
 
        bool crc = FALSE;
@@ -896,7 +854,6 @@ static command_t CommandTable[] = {
        {"sriread",             CmdHF14BReadSri,  0, "Read contents of a SRI512 | SRIX4K tag"},
        {"sriwrite",    CmdHF14BWriteSri, 0, "Write data to a SRI512 | SRIX4K tag"},
        //{"valid",     srix4kValid,    1, "srix4k checksum test"},
-       //{"valid",     CmdteaSelfTest, 1, "tea test"},
        {NULL, NULL, 0, NULL}
 };
 
index 873e2d511c9b980cfe72af86de44816f2547b324..26eb9037af34460c5f9c9f8b28e7713bd1aec15f 100644 (file)
 #ifndef CMDHF14B_H__
 #define CMDHF14B_H__
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <stdint.h>
 #include "iso14443crc.h"
 #include "proxmark3.h"
 #include "data.h"
 #include "cmdparser.h"
 #include "cmdmain.h"
 #include "cmdhf14a.h"
-#include "tea.h"
 #include "cmdhf.h"
 #include "prng.h"
 #include "sha1.h"
 #include "mifare.h"            // structs/enum for ISO14B
 #include "protocols.h" // definitions of ISO14B protocol
 
-
 int usage_hf_14b_info(void);
 int usage_hf_14b_reader(void);
 int usage_hf_14b_raw(void);
Impressum, Datenschutz