Menu

Tree [434f08] master /
 History

HTTPS access


File Date Author Commit
 a5_gen 2013-07-13 Anton Blad Anton Blad [e42a8b] KC verification
 tests 2013-07-13 Anton Blad Anton Blad [e42a8b] KC verification
 CMakeLists.txt 2013-07-15 Anton Blad Anton Blad [48e55f] TCP server
 COPYING 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 Changelog 2013-08-04 Anton Blad Anton Blad [434f08] Add Changelog
 README 2013-07-21 Anton Blad Anton Blad [170f3c] Client list command
 a5.cc 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 a5.h 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 a5_chain.cc 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 a5_chain.h 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 a5_rmix.h 2013-07-13 Anton Blad Anton Blad [e42a8b] KC verification
 block_device.cc 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 block_device.h 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 fragment.h 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 main.cc 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 skraken.cc 2013-07-21 Anton Blad Anton Blad [170f3c] Client list command
 skraken.h 2013-07-21 Anton Blad Anton Blad [170f3c] Client list command
 skraken_client.cc 2013-07-21 Anton Blad Anton Blad [170f3c] Client list command
 skraken_client.h 2013-07-21 Anton Blad Anton Blad [d25279] Stability fixes
 skraken_server.cc 2013-07-21 Anton Blad Anton Blad [d9d55a] Remove client on broken connection
 skraken_server.h 2013-07-21 Anton Blad Anton Blad [170f3c] Client list command
 table.cc 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 table.h 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 utils.cc 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README
 utils.h 2013-07-16 Anton Blad Anton Blad [80add3] Add COPYING and README

Read Me

About Skraken:

Skraken is a tool to break the A5/1 ciphering used in GSM. It is a partial
rewrite of Kraken that solves its stability issues. The attack is based on
a CPU/storage tradeoff that attempts to find the internal state of the A5/1
registers given an observed keystream. The storage component requires a set
of 40 rainbow tables that totals ~1.7 TB, although any subset of the tables
can be used with a reduced success rate. Using all the tables, the success
rate of finding the internal state that generates a GSM burst is around 20%.

Skraken does not provide GPU-accelerated of the A5/1 state chains. Currently
there are no plans to implement this, although patches are welcome.


Requirements:

Compiling Skraken requires the following:
* a C++11 compiler
* cmake (>= 2.6)
* Boost (>= 1.46)

It has been tested with gcc 4.6.3 in Ubuntu 12.04. In Ubuntu, the required
libraries can be installed using:

$ sudo apt-get install g++-4.6 cmake libboost-dev


Compiling:

To compile Skraken, issue the following commands:

$ mkdir build
$ cd build
$ cmake ..
$ make

This generates the skraken binary. To install, simply copy the binary to a
binary directory, e.g.:

$ sudo cp skraken /usr/local/bin/


Copying the rainbow tables:

To use Skraken, the rainbow tables are needed. They are available as torrents
(link below), which must be downloaded and copied to a block device. This is
done using tools from Kraken (not included with Skraken). The general process
is as follows:

$ cd kraken/indexes
$ (edit the device list in tables.conf)
$ (download a set of rainbow tables)
$ ./Behemoth.py <path to downloaded tables>

Repeat step 3-4 until all tables are copied. For each table, an index file of
~80 MB is created.


Skraken usage:

See "skraken --help" for command line options. A console and optionally a TCP
socket is provided. The available commands are:

  crack <bits>
    Search for an A5/1 state that generates <bits>

  crack <bits> <fn>
    Search for an A5/1 state that generates <bits>. Perform back-clocking and
    unmixing with <fn> to retrieve Kc candidates.

  crack <bits> <fn> <bits2> <fn2>
    Search for an A5/1 state that generates <bits>. Perform back-clocking and
    unmixing with <fn> to retrieve Kc candidates. Verify the Kc candidates
    against <bits2> using <fn2>.

  test
    Perform test search with expected hits in tables 340 and 372.

  cancel <id>
    Cancel processing of job <id>.

  quit
    For console: shuts down Skraken. For client: disconnects.

For the crack commands, <bits> is a sequence of keystream bits, normally 114
in length, and <fn> is the TDMA frame number in modified format as used by
A5/1.

Skraken responds to each command with a response. Responses have a three-
digit identifier, a number of numeric parameters, and a textual description.
The following response codes are defined:

101:
  Informational message.

103:
  TCP connection closed.

104:
  Server was shut down.

200 <id>:
  Job <id> is put in the processing queue. This is sent as a response to the
  crack command and provides each job with a unique id.

201 <id>:
  Started processing of job <id>.

202 <id>:
  Processing of job <id> completed.

203 <id>:
  Job <id> was cancelled.

300 <id> <state> <bitpos>:
  A table hit was found for job <id>. <state> is the register state that
  generates the keystream at position <bitpos>.

301 <id> <kc>:
  A candidate Kc was found. This response is sent when a second burst was not
  provided to verify the candidates against.

302 <id> <kc>:
  Kc was found and has been verified against the second burst provided.

400:
  Illegal command.

401:
  Failed parsing arguments of command.

402 <id>:
  Error while parsing job <id>.

403 <id>:
  Unknown job <id> in command.

404:
  Permission denied

Author:

Skraken was written by Anton Blad <trolltok@gmail.com>. Parts of the code is
taken from Kraken.


License:

The code is released under the GNU General Public License. For details, see
the file COPYING.


References:

Kraken is available at:
https://opensource.srlabs.de/projects/a51-decrypt

Torrents for the rainbow tables can be downloaded from:
https://opensource.srlabs.de/projects/a51-decrypt/files