mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-14 09:13:01 -07:00
Synchronized loclass library, imported the legal warning
This commit is contained in:
parent
758f1fd1f3
commit
d60418a05f
12 changed files with 342 additions and 25 deletions
|
@ -1,5 +1,17 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* This file is part of iClassCipher. It is a reconstructon of the cipher engine
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
* used in iClass, and RFID techology.
|
* used in iClass, and RFID techology.
|
||||||
*
|
*
|
||||||
* The implementation is based on the work performed by
|
* The implementation is based on the work performed by
|
||||||
|
@ -18,9 +30,13 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with IClassCipher. If not, see <http://www.gnu.org/licenses/>.
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include "cipher.h"
|
#include "cipher.h"
|
||||||
#include "cipherutils.h"
|
#include "cipherutils.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
|
@ -1,5 +1,17 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* This file is part of iClassCipher. It is a reconstructon of the cipher engine
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
* used in iClass, and RFID techology.
|
* used in iClass, and RFID techology.
|
||||||
*
|
*
|
||||||
* The implementation is based on the work performed by
|
* The implementation is based on the work performed by
|
||||||
|
@ -18,9 +30,13 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with IClassCipher. If not, see <http://www.gnu.org/licenses/>.
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef CIPHER_H
|
#ifndef CIPHER_H
|
||||||
#define CIPHER_H
|
#define CIPHER_H
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
|
@ -1,5 +1,17 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* This file is part of iClassCipher. It is a reconstructon of the cipher engine
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
* used in iClass, and RFID techology.
|
* used in iClass, and RFID techology.
|
||||||
*
|
*
|
||||||
* The implementation is based on the work performed by
|
* The implementation is based on the work performed by
|
||||||
|
@ -18,7 +30,10 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with IClassCipher. If not, see <http://www.gnu.org/licenses/>.
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
|
@ -1,5 +1,17 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* This file is part of iClassCipher. It is a reconstructon of the cipher engine
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
* used in iClass, and RFID techology.
|
* used in iClass, and RFID techology.
|
||||||
*
|
*
|
||||||
* The implementation is based on the work performed by
|
* The implementation is based on the work performed by
|
||||||
|
@ -18,9 +30,13 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with IClassCipher. If not, see <http://www.gnu.org/licenses/>.
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef CIPHERUTILS_H
|
#ifndef CIPHERUTILS_H
|
||||||
#define CIPHERUTILS_H
|
#define CIPHERUTILS_H
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
|
@ -1,3 +1,41 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
|
* used in iClass, and RFID techology.
|
||||||
|
*
|
||||||
|
* The implementation is based on the work performed by
|
||||||
|
* Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
|
||||||
|
* Milosch Meriac in the paper "Dismantling IClass".
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Martin Holst Swende
|
||||||
|
*
|
||||||
|
* This is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as published
|
||||||
|
* by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -514,6 +552,7 @@ int bruteforceDump(uint8_t dump[], size_t dumpsize, uint16_t keytable[])
|
||||||
*/
|
*/
|
||||||
int bruteforceFile(const char *filename, uint16_t keytable[])
|
int bruteforceFile(const char *filename, uint16_t keytable[])
|
||||||
{
|
{
|
||||||
|
|
||||||
FILE *f = fopen(filename, "rb");
|
FILE *f = fopen(filename, "rb");
|
||||||
if(!f) {
|
if(!f) {
|
||||||
prnlog("Failed to read from file '%s'", filename);
|
prnlog("Failed to read from file '%s'", filename);
|
||||||
|
@ -621,6 +660,21 @@ int _test_iclass_key_permutation()
|
||||||
prnlog("[+] Iclass key permutation OK!");
|
prnlog("[+] Iclass key permutation OK!");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
int _testHash1()
|
||||||
|
{
|
||||||
|
uint8_t csn[8]= {0x01,0x02,0x03,0x04,0xF7,0xFF,0x12,0xE0};
|
||||||
|
uint8_t k[8] = {0};
|
||||||
|
hash1(csn, k);
|
||||||
|
uint8_t expected[8] = {0x7E,0x72,0x2F,0x40,0x2D,0x02,0x51,0x42};
|
||||||
|
if(memcmp(k,expected,8) != 0)
|
||||||
|
{
|
||||||
|
prnlog("Error with hash1!");
|
||||||
|
printarr("calculated", k, 8);
|
||||||
|
printarr("expected", expected, 8);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int testElite()
|
int testElite()
|
||||||
{
|
{
|
||||||
|
@ -653,11 +707,13 @@ int testElite()
|
||||||
prnlog("[+] Hash2 looks fine...");
|
prnlog("[+] Hash2 looks fine...");
|
||||||
}
|
}
|
||||||
|
|
||||||
prnlog("[+] Testing key diversification ...");
|
|
||||||
|
|
||||||
int errors = 0 ;
|
int errors = 0 ;
|
||||||
errors +=_test_iclass_key_permutation();
|
prnlog("[+] Testing hash1...");
|
||||||
|
errors += _testHash1();
|
||||||
|
prnlog("[+] Testing key diversification ...");
|
||||||
|
errors +=_test_iclass_key_permutation();
|
||||||
errors += _testBruteforce();
|
errors += _testBruteforce();
|
||||||
|
|
||||||
return errors;
|
return errors;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,42 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
|
* used in iClass, and RFID techology.
|
||||||
|
*
|
||||||
|
* The implementation is based on the work performed by
|
||||||
|
* Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
|
||||||
|
* Milosch Meriac in the paper "Dismantling IClass".
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Martin Holst Swende
|
||||||
|
*
|
||||||
|
* This is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as published
|
||||||
|
* by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef ELITE_CRACK_H
|
#ifndef ELITE_CRACK_H
|
||||||
#define ELITE_CRACK_H
|
#define ELITE_CRACK_H
|
||||||
void permutekey(uint8_t key[8], uint8_t dest[8]);
|
void permutekey(uint8_t key[8], uint8_t dest[8]);
|
||||||
|
|
|
@ -1,3 +1,41 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
|
* used in iClass, and RFID techology.
|
||||||
|
*
|
||||||
|
* The implementation is based on the work performed by
|
||||||
|
* Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
|
||||||
|
* Milosch Meriac in the paper "Dismantling IClass".
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Martin Holst Swende
|
||||||
|
*
|
||||||
|
* This is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as published
|
||||||
|
* by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -40,14 +78,13 @@ int saveFile(const char *preferredName, const char *suffix, const void* data, si
|
||||||
/*Opening file for writing in binary mode*/
|
/*Opening file for writing in binary mode*/
|
||||||
FILE *fileHandle=fopen(fileName,"wb");
|
FILE *fileHandle=fopen(fileName,"wb");
|
||||||
if(!fileHandle) {
|
if(!fileHandle) {
|
||||||
PrintAndLog("Failed to write to file '%s'", fileName);
|
prnlog("Failed to write to file '%s'", fileName);
|
||||||
free(fileName);
|
free(fileName);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
fwrite(data, 1, datalen, fileHandle);
|
fwrite(data, 1, datalen, fileHandle);
|
||||||
fclose(fileHandle);
|
fclose(fileHandle);
|
||||||
PrintAndLog("Saved data to '%s'", fileName);
|
prnlog("Saved data to '%s'", fileName);
|
||||||
|
|
||||||
free(fileName);
|
free(fileName);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1,3 +1,41 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
|
* used in iClass, and RFID techology.
|
||||||
|
*
|
||||||
|
* The implementation is based on the work performed by
|
||||||
|
* Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
|
||||||
|
* Milosch Meriac in the paper "Dismantling IClass".
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Martin Holst Swende
|
||||||
|
*
|
||||||
|
* This is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as published
|
||||||
|
* by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef FILEUTILS_H
|
#ifndef FILEUTILS_H
|
||||||
#define FILEUTILS_H
|
#define FILEUTILS_H
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,15 +1,23 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* This file is part of iClassCipher. It is a reconstructon of the cipher engine
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
* used in iClass, and RFID techology.
|
* used in iClass, and RFID techology.
|
||||||
*
|
*
|
||||||
* The implementation is based on the work performed by
|
* The implementation is based on the work performed by
|
||||||
* Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
|
* Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
|
||||||
* Milosch Meriac in the paper "Dismantling IClass".
|
* Milosch Meriac in the paper "Dismantling IClass".
|
||||||
*
|
*
|
||||||
* This is a reference implementation of iclass key diversification. I'm sure it can be
|
|
||||||
* optimized heavily. It is written for ease of understanding and correctness, please take it
|
|
||||||
* and tweak it and make a super fast version instead, using this for testing and verification.
|
|
||||||
|
|
||||||
* Copyright (C) 2014 Martin Holst Swende
|
* Copyright (C) 2014 Martin Holst Swende
|
||||||
*
|
*
|
||||||
* This is free software: you can redistribute it and/or modify
|
* This is free software: you can redistribute it and/or modify
|
||||||
|
@ -22,8 +30,12 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with IClassCipher. If not, see <http://www.gnu.org/licenses/>.
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,41 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
|
* used in iClass, and RFID techology.
|
||||||
|
*
|
||||||
|
* The implementation is based on the work performed by
|
||||||
|
* Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
|
||||||
|
* Milosch Meriac in the paper "Dismantling IClass".
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Martin Holst Swende
|
||||||
|
*
|
||||||
|
* This is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as published
|
||||||
|
* by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef IKEYS_H
|
#ifndef IKEYS_H
|
||||||
#define IKEYS_H
|
#define IKEYS_H
|
||||||
|
|
||||||
|
|
4
client/loclass/loclass_main.h
Normal file
4
client/loclass/loclass_main.h
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#ifndef LOCLASS_MAIN_H
|
||||||
|
#define LOCLASS_MAIN_H
|
||||||
|
|
||||||
|
#endif // LOCLASS_MAIN_H
|
|
@ -1,5 +1,17 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* This file is part of iClassCipher. It is a reconstructon of the cipher engine
|
* WARNING
|
||||||
|
*
|
||||||
|
* THIS CODE IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY.
|
||||||
|
*
|
||||||
|
* USAGE OF THIS CODE IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL
|
||||||
|
* PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL,
|
||||||
|
* AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES.
|
||||||
|
*
|
||||||
|
* THIS CODE SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS.
|
||||||
|
*
|
||||||
|
*****************************************************************************
|
||||||
|
*
|
||||||
|
* This file is part of loclass. It is a reconstructon of the cipher engine
|
||||||
* used in iClass, and RFID techology.
|
* used in iClass, and RFID techology.
|
||||||
*
|
*
|
||||||
* The implementation is based on the work performed by
|
* The implementation is based on the work performed by
|
||||||
|
@ -18,11 +30,14 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with IClassCipher. If not, see <http://www.gnu.org/licenses/>.
|
* along with loclass. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <cipherutils.h>
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -40,11 +55,15 @@ int unitTests()
|
||||||
errors += testMAC();
|
errors += testMAC();
|
||||||
errors += doKeyTests(0);
|
errors += doKeyTests(0);
|
||||||
errors += testElite();
|
errors += testElite();
|
||||||
|
if(errors)
|
||||||
|
{
|
||||||
|
prnlog("OBS! There were errors!!!");
|
||||||
|
}
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
int showHelp()
|
int showHelp()
|
||||||
{
|
{
|
||||||
prnlog("Usage: iclazz [options]");
|
prnlog("Usage: loclass [options]");
|
||||||
prnlog("Options:");
|
prnlog("Options:");
|
||||||
prnlog("-t Perform self-test");
|
prnlog("-t Perform self-test");
|
||||||
prnlog("-h Show this help");
|
prnlog("-h Show this help");
|
||||||
|
@ -64,7 +83,18 @@ int main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
prnlog("IClass Cipher version 1.2, Copyright (C) 2014 Martin Holst Swende\n");
|
prnlog("IClass Cipher version 1.2, Copyright (C) 2014 Martin Holst Swende\n");
|
||||||
prnlog("Comes with ABSOLUTELY NO WARRANTY");
|
prnlog("Comes with ABSOLUTELY NO WARRANTY");
|
||||||
prnlog("This is free software, and you are welcome to use, abuse and repackage, please keep the credits\n");
|
prnlog("Released as GPLv2\n");
|
||||||
|
prnlog("WARNING");
|
||||||
|
prnlog("");
|
||||||
|
prnlog("THIS TOOL IS CREATED FOR EXPERIMENTATION AND EDUCATIONAL USE ONLY. ");
|
||||||
|
prnlog("");
|
||||||
|
prnlog("USAGE OF THIS TOOL IN OTHER WAYS MAY INFRINGE UPON THE INTELLECTUAL ");
|
||||||
|
prnlog("PROPERTY OF OTHER PARTIES, SUCH AS INSIDE SECURE AND HID GLOBAL, ");
|
||||||
|
prnlog("AND MAY EXPOSE YOU TO AN INFRINGEMENT ACTION FROM THOSE PARTIES. ");
|
||||||
|
prnlog("");
|
||||||
|
prnlog("THIS TOOL SHOULD NEVER BE USED TO INFRINGE PATENTS OR INTELLECTUAL PROPERTY RIGHTS. ");
|
||||||
|
|
||||||
|
|
||||||
char *fileName = NULL;
|
char *fileName = NULL;
|
||||||
int c;
|
int c;
|
||||||
while ((c = getopt (argc, argv, "thf:")) != -1)
|
while ((c = getopt (argc, argv, "thf:")) != -1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue