source: trunk/bin/bletchley-encode

Last change on this file was 138, checked in by tim, 5 years ago

fixed reference to legacy file() built-in

  • Property svn:executable set to *
File size: 1.9 KB
Line 
1#!/usr/bin/env python3
2
3# Requires Python 3+
4
5'''
6Simple decoder script; useful in shell scripts
7
8Copyright (C) 2011-2012 Virtual Security Research, LLC
9Author: Timothy D. Morgan
10
11 This program is free software: you can redistribute it and/or modify
12 it under the terms of the GNU Lesser General Public License, version 3,
13 as published by the Free Software Foundation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program.  If not, see <http://www.gnu.org/licenses/>.
22'''
23
24
25import sys
26import argparse
27from bletchley import blobtools
28
29
30parser = argparse.ArgumentParser(
31    description='A simple encoder script that is useful in shell scripts.'
32    ' For more information, see:  http://code.google.com/p/bletchley/wiki/Overview')
33parser.add_argument(
34    'input_file', nargs='?', default=None,
35    help='File containing encrypted blobs to analyze, one per line. '
36    'Omit to read from stdin.')
37parser.add_argument(
38    '-e', dest='encoding_chain', type=str, required=True,
39    help='Comma-separated sequence of encoding formats used to encode the'
40    ' token, starting with the last encoding to apply.'
41    ' (Use "?" for a listing of supported encodings.)')
42options = parser.parse_args()
43
44if options.encoding_chain == '?':
45    print('\n\t'.join(['Supported encodings:']+blobtools.supportedEncodings()))
46    sys.exit(0)
47
48input_file = sys.stdin.buffer
49if options.input_file is not None:
50    input_file = open(options.input_file, 'rb')
51
52blob = input_file.read()
53
54specified_encodings = options.encoding_chain.split(',')
55specified_encodings.reverse()
56# XXX: report invalid encodings
57sys.stdout.buffer.write(blobtools.encodeChain(specified_encodings, blob))
58sys.stdout.buffer.write(b'\n')
Note: See TracBrowser for help on using the repository browser.