]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - client/loclass/main.c
   1 /***************************************************************************** 
   4  * THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.  
   6  * USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL  
   7  * PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,  
   8  * AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.  
  10  * THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.  
  12  ***************************************************************************** 
  14  * This file is part of loclass. It is a reconstructon of the cipher engine 
  15  * used in iClass, and RFID techology. 
  17  * The implementation is based on the work performed by 
  18  * Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and 
  19  * Milosch Meriac in the paper "Dismantling IClass". 
  21  * Copyright (C) 2014 Martin Holst Swende 
  23  * This is free software: you can redistribute it and/or modify 
  24  * it under the terms of the GNU General Public License version 2 as published 
  25  * by the Free Software Foundation. 
  27  * This file is distributed in the hope that it will be useful, 
  28  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  30  * GNU General Public License for more details. 
  32  * You should have received a copy of the GNU General Public License 
  33  * along with loclass.  If not, see <http://www.gnu.org/licenses/>. 
  37  ****************************************************************************/ 
  41 #include <cipherutils.h> 
  47 #include "cipherutils.h" 
  50 #include "fileutils.h" 
  51 #include "elite_crack.h" 
  55         int errors 
= testCipherUtils(); 
  57         errors 
+= doKeyTests(0); 
  58         errors 
+= testElite(); 
  63         prnlog("Usage: iclazz [options]"); 
  65         prnlog("-t                 Perform self-test"); 
  66         prnlog("-h                 Show this help"); 
  67         prnlog("-f <filename>      Bruteforce iclass dumpfile"); 
  68         prnlog("                   An iclass dumpfile is assumed to consist of an arbitrary number of malicious CSNs, and their protocol responses"); 
  69         prnlog("                   The the binary format of the file is expected to be as follows: "); 
  70         prnlog("                   <8 byte CSN><8 byte CC><4 byte NR><4 byte MAC>"); 
  71         prnlog("                   <8 byte CSN><8 byte CC><4 byte NR><4 byte MAC>"); 
  72         prnlog("                   <8 byte CSN><8 byte CC><4 byte NR><4 byte MAC>"); 
  73         prnlog("                  ... totalling N*24 bytes"); 
  74         prnlog("                  Check iclass_dump.bin for an example"); 
  79 int main (int argc
, char **argv
) 
  83         prnlog("IClass Cipher version 1.2, Copyright (C) 2014 Martin Holst Swende\n"); 
  84         prnlog("Comes with ABSOLUTELY NO WARRANTY"); 
  85         prnlog("Released as GPLv2\n"); 
  88         prnlog("THIS TOOL IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY. "); 
  90         prnlog("USAGE OF THIS TOOL IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL "); 
  91         prnlog("PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL, "); 
  92         prnlog("AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES. "); 
  94         prnlog("THIS TOOL SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS. "); 
  97         char *fileName 
= NULL
; 
  99         while ((c 
= getopt (argc
, argv
, "thf:")) != -1) 
 108                   return bruteforceFileNoKeys(fileName
); 
 111                         fprintf (stderr
, "Option -%c requires an argument.\n", optopt
); 
 112                   else if (isprint (optopt
)) 
 113                         fprintf (stderr
, "Unknown option `-%c'.\n", optopt
); 
 116                                          "Unknown option character `\\x%x'.\n",