A52HackTool 1.3.0
Turnkey & easy to use tool for cracking the GSM A5/2 cipher
Defines
const_A52.h File Reference

Constants definition for A5/2 cipher. These are not to be modified, as one single change could have desastrous consequences on the global process. More...

Go to the source code of this file.

Defines

#define SECRETKEY_BITS   64
 Secret Key length.
#define FRAMEID_BITS   22
 Frame Id length.
#define REGS_TOTAL_VARS   (REGS_SIMPLE_VARS + REGS_PROD_VARS + 1)
 Total Amount of Variables (including constant "1")
#define TOTAL_MATRICES   (1<<(R4_BITS-1))
 Number of possible values of the fourth LFSR (R4)
#define PROCESSING_THREADS   (1<<5)
 Number of threads used for both matrices generation and attack (must be a power of 2)
#define THREAD_CHUNKSIZE   (TOTAL_MATRICES/PROCESSING_THREADS)
 Amount of data that will be processed by each thread.
#define RESOLUTION_MATRIX_INT_WIDTH   ((REGS_TOTAL_VARS+31)/32)
 A matrix of integers will be used for faster decryption. The last integer of the line will be half-loaded with two bytes.
#define R1_BITS   19
 LFSR capacity.
#define R2_BITS   22
 LFSR capacity.
#define R3_BITS   23
 LFSR capacity.
#define R4_BITS   17
 LFSR capacity.
#define REGS_BITS   (R1_BITS+R2_BITS+R3_BITS+R4_BITS)
 LFSR capacity.
#define R4_CLOCKTAP_R1   10
 Clocking Unit Tap.
#define R4_CLOCKTAP_R2   3
 Clocking Unit Tap.
#define R4_CLOCKTAP_R3   7
 Clocking Unit Tap.
#define R1_OUTTAP_1   12
 Output Tap.
#define R1_OUTTAP_2   14
 Output Tap to be xored with 1.
#define R1_OUTTAP_3   15
 Output Tap.
#define R2_OUTTAP_1   9
 Output Tap.
#define R2_OUTTAP_2   13
 Output Tap.
#define R2_OUTTAP_3   16
 Output Tap to be xored with 1.
#define R3_OUTTAP_1   13
 Output Tap to be xored with 1.
#define R3_OUTTAP_2   16
 Output Tap.
#define R3_OUTTAP_3   18
 Output Tap.
#define R1_SHIFTTAP_1   13
 Shift Tap.
#define R1_SHIFTTAP_2   16
 Shift Tap.
#define R1_SHIFTTAP_3   17
 Shift Tap.
#define R1_SHIFTTAP_4   18
 Shift Tap.
#define R2_SHIFTTAP_1   20
 Shift Tap.
#define R2_SHIFTTAP_2   21
 Shift Tap.
#define R3_SHIFTTAP_1   7
 Shift Tap.
#define R3_SHIFTTAP_2   20
 Shift Tap.
#define R3_SHIFTTAP_3   21
 Shift Tap.
#define R3_SHIFTTAP_4   22
 Shift Tap.
#define R4_SHIFTTAP_1   11
 Shift Tap.
#define R4_SHIFTTAP_2   16
 Shift Tap.
#define R1_INITIAL_CONST_POS   15
 Location of Constant Value defined at the end of KeySetup Phase.
#define R2_INITIAL_CONST_POS   16
 Location of Constant Value defined at the end of KeySetup Phase.
#define R3_INITIAL_CONST_POS   18
 Location of Constant Value defined at the end of KeySetup Phase.
#define R4_INITIAL_CONST_POS   10
 Location of Constant Value defined at the end of KeySetup Phase.
#define R1_SIMPLE_VARS   (R1_BITS - 1)
 Simple Variables (exactly one location of each register is set to constant "1" at the beginning, thus reducing the number of variables to R{1,2,3}_SIMPLE_VARS = (R{1,2,3}_BITS-1))
#define R2_SIMPLE_VARS   (R2_BITS - 1)
 Simple Variables (exactly one location of each register is set to constant "1" at the beginning, thus reducing the number of variables to R{1,2,3}_SIMPLE_VARS = (R{1,2,3}_BITS-1))
#define R3_SIMPLE_VARS   (R3_BITS - 1)
 Simple Variables (exactly one location of each register is set to constant "1" at the beginning, thus reducing the number of variables to R{1,2,3}_SIMPLE_VARS = (R{1,2,3}_BITS-1))
#define REGS_SIMPLE_VARS   (R1_SIMPLE_VARS + R2_SIMPLE_VARS + R3_SIMPLE_VARS)
 Simple Variables (exactly one location of each register is set to constant "1" at the beginning, thus reducing the number of variables to R{1,2,3}_SIMPLE_VARS = (R{1,2,3}_BITS-1))
#define R1_PROD_VARS   ((R1_SIMPLE_VARS * (R1_SIMPLE_VARS-1)) / 2)
 Product Variables (products may be done at the register level when outputing keystream)
#define R2_PROD_VARS   ((R2_SIMPLE_VARS * (R2_SIMPLE_VARS-1)) / 2)
 Product Variables (products may be done at the register level when outputing keystream)
#define R3_PROD_VARS   ((R3_SIMPLE_VARS * (R3_SIMPLE_VARS-1)) / 2)
 Product Variables (products may be done at the register level when outputing keystream)
#define REGS_PROD_VARS   (R1_PROD_VARS + R2_PROD_VARS + R3_PROD_VARS)
 Product Variables (products may be done at the register level when outputing keystream)

Detailed Description

Constants definition for A5/2 cipher. These are not to be modified, as one single change could have desastrous consequences on the global process.

Author:
Nicolas Paglieri & Olivier Benjamin
Version:
File Revision #8
Date:
24/06/2011