]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
ADD: Added a new main command group "analyse", first one is the find the missing...
authoriceman1001 <iceman@iuse.se>
Tue, 10 May 2016 13:30:46 +0000 (15:30 +0200)
committericeman1001 <iceman@iuse.se>
Tue, 10 May 2016 13:30:46 +0000 (15:30 +0200)
client/Makefile
client/cmdanalyse.c [new file with mode: 0644]
client/cmdanalyse.h [new file with mode: 0644]
client/cmdlfnedap.c
client/cmdmain.c

index 2aa7339cdcfca80657d9d33d5f8201003ac7790c..f76c955659f70d51bfaed973af025da4f1ec133e 100644 (file)
@@ -140,7 +140,9 @@ CMDSRCS =   nonce2key/crapto1.c \
                        tea.c \
                        prng.c \
                        radixsort.c \
-                       bucketsort.c
+                       bucketsort.c \
+                       cmdanalyse.c
+               
 ZLIBSRCS = deflate.c adler32.c trees.c zutil.c inflate.c inffast.c inftrees.c
 ZLIB_FLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED 
 #-DDEBUG -Dverbose=1
diff --git a/client/cmdanalyse.c b/client/cmdanalyse.c
new file mode 100644 (file)
index 0000000..d725d93
--- /dev/null
@@ -0,0 +1,64 @@
+//-----------------------------------------------------------------------------
+// Copyright (C) 2016 iceman
+//
+// This code is licensed to you under the terms of the GNU GPL, version 2 or,
+// at your option, any later version. See the LICENSE.txt file for the text of
+// the license.
+//-----------------------------------------------------------------------------
+// Analyse bytes commands
+//-----------------------------------------------------------------------------
+#include "cmdanalyse.h"
+
+static int CmdHelp(const char *Cmd);
+
+int usage_analyse_lcr(void) {
+       PrintAndLog("Specifying the bytes of a UID with a known LRC will find the last byte value");
+       PrintAndLog("needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.");
+       PrintAndLog("");
+       PrintAndLog("Usage:  analyse lcr [h] <bytes>");
+       PrintAndLog("Options:");
+       PrintAndLog("           h          This help");
+       PrintAndLog("           <bytes>    bytes to calc missing XOR in a LCR");
+       PrintAndLog("");
+       PrintAndLog("Samples:");
+       PrintAndLog("           analyse lcr 04008064BA");
+       PrintAndLog("expected output: Target (BA) requires final LRC XOR byte value: 5A");
+       return 0;
+}
+static uint8_t calculateLRC( uint8_t* bytes, uint8_t len) {
+    uint8_t LRC = 0;
+    for (uint8_t i = 0; i < len; i++)
+        LRC ^= bytes[i];
+    return LRC;
+}
+       
+int CmdAnalyseLCR(const char *Cmd) {
+       uint8_t data[50];
+       char cmdp = param_getchar(Cmd, 0);
+       if (strlen(Cmd) == 0|| cmdp == 'h' || cmdp == 'H') return usage_analyse_lcr();
+       
+       int len = 0;
+       param_gethex_ex(Cmd, 0, data, &len);
+       if ( len%2 ) return usage_analyse_lcr();
+       len >>= 1;      
+       uint8_t finalXor = calculateLRC(data, len);
+       PrintAndLog("Target [%02X] requires final LRC XOR byte value: 0x%02X",data[len-1] ,finalXor);
+       return 0;
+}
+
+static command_t CommandTable[] = {
+       {"help",            CmdHelp,            1, "This help"},
+       {"lcr",                         CmdAnalyseLCR,          0, "Generate final byte for XOR LRC"},
+       {NULL, NULL, 0, NULL}
+};
+
+int CmdAnalyse(const char *Cmd) {
+       clearCommandBuffer();
+       CmdsParse(CommandTable, Cmd);
+       return 0;
+}
+
+int CmdHelp(const char *Cmd) {
+       CmdsHelp(CommandTable);
+       return 0;
+}
diff --git a/client/cmdanalyse.h b/client/cmdanalyse.h
new file mode 100644 (file)
index 0000000..9f5132a
--- /dev/null
@@ -0,0 +1,24 @@
+//-----------------------------------------------------------------------------
+// Copyright (C) 2010 iZsh <izsh at fail0verflow.com>
+//
+// This code is licensed to you under the terms of the GNU GPL, version 2 or,
+// at your option, any later version. See the LICENSE.txt file for the text of
+// the license.
+//-----------------------------------------------------------------------------
+// Data and Graph commands
+//-----------------------------------------------------------------------------
+
+#ifndef CMDANALYSE_H__
+#define CMDANALYSE_H__
+
+#include <stdlib.h>  //size_t
+#include <string.h>
+#include "cmdmain.h"
+#include "proxmark3.h"
+#include "ui.h"                // PrintAndLog
+command_t * CmdDataCommands();
+
+int CmdAnalyse(const char *Cmd);
+int CmdAnalyseLCR(const char *Cmd);
+
+#endif
index 16c1585470b2a70e4fa62450a744130fc5252443..b5aba2f864854d01fe3826b6f1ce587b70bf130f 100644 (file)
@@ -109,7 +109,7 @@ int CmdLFNedapDemod(const char *Cmd) {
 
 /* Index map                                                     O
  preamble    enc tag type         encrypted uid                  P   d    33    d    90    d    04    d    71    d    40    d    45    d    E7    P
-1111111110 00101101000001011 01000110010010000101101010011010110 0 1 0 00110011 0 10010000 0 00000100 0 01110001 0 01000000 0 01000101 0 11100111 1
+1111111110 0010110100000101101000110010010000101101010011010110 0 1 0 00110011 0 10010000 0 00000100 0 01110001 0 01000000 0 01000101 0 11100111 1
                                                                          uid2       uid1       uid0         I          I          R           R    
         Tag ID is 049033 
         I = Identical on all tags
@@ -261,6 +261,8 @@ int CmdLFNedapSim(const char *Cmd) {
        return 0;
 }
 
+
+
 int CmdLFNedapChk(const char *Cmd){
     
        uint8_t data[256] = { 0x30, 0x16, 0x00, 0x71, 0x40, 0x21, 0xBE};
@@ -271,10 +273,9 @@ int CmdLFNedapChk(const char *Cmd){
        
        PrintAndLog("Input: [%d] %s", len, sprint_hex(data, len));
        
-       uint8_t last = GetParity(data, EVEN, 62);
-       PrintAndLog("TEST PARITY::  %d | %d ", DemodBuffer[62], last);
+       //uint8_t last = GetParity(data, EVEN, 62);
+       //PrintAndLog("TEST PARITY::  %d | %d ", DemodBuffer[62], last);
 
-       return 1;
     uint8_t cl = 0x1D, ch = 0x1D, carry = 0;
     uint8_t al, bl, temp;
     
index 04d8ad7aeab68a6647b59e89b7a56bff35e5255c..1ddf219a953d22be3725570e15cfbeecf8da7f62 100644 (file)
@@ -26,7 +26,7 @@
 #include "util.h"
 #include "cmdscript.h"
 #include "cmdcrc.h"
-
+#include "cmdanalyse.h"
 
 unsigned int current_command = CMD_UNKNOWN;
 
@@ -45,12 +45,13 @@ static int cmd_tail;//Starts as 0
 static command_t CommandTable[] = 
 {
        {"help",        CmdHelp,        1, "This help. Use '<command> help' for details of a particular command."},
+       {"analyse", CmdAnalyse, 1, "{ Analyse bytes... }"},
        {"data",        CmdData,        1, "{ Plot window / data buffer manipulation... }"},
        {"hf",          CmdHF,          1, "{ High Frequency commands... }"},
        {"hw",          CmdHW,          1, "{ Hardware commands... }"},
        {"lf",          CmdLF,          1, "{ Low Frequency commands... }"},
-       {"reveng",      CmdRev,         1, "Crc calculations from the software reveng 1.30"},
-       {"script",      CmdScript,      1, "{ Scripting commands }"},
+       {"reveng",      CmdRev,         1, "Crc calculations from the software reveng 1.40"},
+       {"script",      CmdScript,      1, "{ Scripting commands }"},   
        {"quit",        CmdQuit,        1, "Exit program"},
        {"exit",        CmdQuit,        1, "Exit program"},
        {NULL, NULL, 0, NULL}
Impressum, Datenschutz