source: wiki/Overview.wiki @ 52

Last change on this file since 52 was 33, checked in by tmorgan, 12 years ago

doc

File size: 4.5 KB
Line 
1Bletchley provides a variety of tools that make black box
2cryptanalysis easier by taking care of some of the more tedious
3engineering challenges. Bletchley is maintained by <a href="http://vsecurity.com/">VSR</a>.
4Bletchley is currently in the early stages of development, which means
5documentation may be lacking.  Contributions are welcome.
6
7*Contents*
8<wiki:toc max_depth="2" />
9
10= Installation =
11See: <a href="http://code.google.com/p/bletchley/source/browse/trunk/INSTALL">INSTALL</a>
12
13= Command Line Tools =
14
15== bletchley-analyze ==
16
17Analyzes samples of encrypted data in an attempt to decode samples to
18binary and identify patterns useful in cryptanalysis.  The purpose of
19the tool is to provide an cryptanalyst with a variety of information
20that is useful in determining how a token is encoded, encrypted and
21formatted.
22<br />
23bletchley-analyze currently performs two primary functions: iterative
24encoding detection and ciphertext-only block analysis.  Encrypted tokens
25are processed in multiple rounds. Within each round, the following
26occurs:
27<ul>
28 <li>Token length analysis is performed to attempt to determine possible
29 ciphertext block sizes, where applicable</li>
30 <li>The tokens are analyzed for blocks of data that are repeated
31 throughout any of the tokens</li>
32 <li>A hexadecimal dump and escaped binary/ascii string is printed for
33 each token with repeated blocks highlighted</li>
34 <li>The full set of all known and possible data encodings is
35 determined<sup>1</sup></li>
36 <li>An educated guess is made as to the most likely encoding is</li>
37 <li>All tokens are decoded using the most likely encoding, and then the
38 process is repeated until no further encodings are detected</li>
39</ul>
40
41`bletchley-analyze` can read from stdin or from a file.  Tokens are
42delimited with newlines.  Various options are provided to give the
43analyst control over the block sizes and encoding used during analysis.
44See the tool's usage statement for more information.
45
46As an example, several tokens were encrypted using ECB mode and encoded
47using base64, and then percent (URL) encoded:
48{{{
49zRW5bHxcRYHHqi0nriqOzg%3D%3D
50meU8SyxVHE3Hqi0nriqOzg%3D%3D
51vTA9eA4hhbFlktsbYI4hIg%3D%3D
52meU8SyxVHE1lktsbYI4hIg%3D%3D
53}}}
54
55These tokens were then fed to `bletchley-analyze`:
56<img src="http://bletchley.googlecode.com/svn/wiki/images/bletchley-analyze.png" />
57
581. <i>Bletchley's blobtools module currently supports 33 encoding variants,
59including various forms of hexadecimal, base32, base64, and percent
60encodings. Try '`-e ?`' to list them.</i>
61
62
63== bletchley-encode ==
64A simple tool to encode arbitrary data using a specified encoding chain.
65See the usage statement for more information.  A quick example:
66{{{
67$ echo 'Mallory Is My Friend.' | bletchley-encode -e percent/upper-plus,base64/rfc3548
68TWFsbG9yeSBJcyBNeSBGcmllbmQuCg%3D%3D
69}}}
70
71NOTE: The encoding chain is applied from right to left in order to be consistent with other tools. 
72That is, one can use the same encoding chain ordering for
73`bletchley-encode`, `bletchley-decode`, and `bletchley-analyze`.
74
75
76== bletchley-decode ==
77A simple tool to decode data using a specified encoding chain.  See the
78usage statement for more information.  A quick example:
79{{{
80$ echo 'TWFsbG9yeSBJcyBNeSBGcmllbmQuCg%3D%3D' | bletchley-decode -e percent/upper-plus,base64/rfc3548
81Mallory Is My Friend.
82}}}
83
84== bletchley-http2py ==
85This script parses an HTTP request (provided via stdin or as a text
86file) and generates a Python script that sends (approximately) the same
87request.  This is useful when one wants to repeatedly send variations of
88a request that was observed to be sent by an application or web
89browser.  For more information, see the script's usage statement.
90
91== bletchley-nextrand ==
92A simple program which computes the state of a Java Random class
93instance given two sequential outputs of
94<a href="http://docs.oracle.com/javase/6/docs/api/java/util/Random.html#nextInt()">`nextInt()`</a>.
95For more information, see the usage statement.
96
97
98= Libraries =
99
100Hint: start with '`pydoc bletchley`'?
101TODO
102
103== blobtools ==
104TODO
105
106== CBC ==
107TODO
108
109
110= Support =
111
112Having trouble?  Submit an issue <a href="http://code.google.com/p/bletchley/issues/list">here</a>.
113
114
115= Contributing =
116
117We welcome any kind of help with the project, from new tools to bug
118fixes and documentation.  You might want to start with our
119<a href="http://code.google.com/p/bletchley/source/browse/trunk/doc/TODO">TODO</a>
120list. To submit a patch, just check out a copy of our Subversion
121repository, make your changes, and submit the output of `svn diff` to one of the project leaders.
Note: See TracBrowser for help on using the repository browser.