source: trunk/bin/bletchley-encode @ 48

Last change on this file since 48 was 40, checked in by tmorgan, 12 years ago

Switched to python3 only, since supporting both 2.x and 3.x is such a pain

Added preliminary python-requests support to http2py

  • Property svn:executable set to *
File size: 1.9 KB
RevLine 
[40]1#!/usr/bin/env python3
[20]2
[40]3# Requires Python 3+
[20]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
[28]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.)')
[20]42options = parser.parse_args()
43
[28]44if options.encoding_chain == '?':
45    print('\n\t'.join(['Supported encodings:']+blobtools.supportedEncodings()))
46    sys.exit(0)
47
[40]48input_file = sys.stdin.buffer
[20]49if options.input_file is not None:
50    input_file = file(options.input_file, 'rb')
51
52blob = input_file.read()
53
54specified_encodings = options.encoding_chain.split(',')
55specified_encodings.reverse()
[28]56# XXX: report invalid encodings
[40]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.