Metadata-Version: 2.1
Name: decoder-plus-plus
Version: 1.2.4
Summary: An extensible application for penetration testers and software developers to decode/encode data into various formats.
Home-page: https://github.com/bytebutcher/decoder-plus-plus
Author: bytebutcher
Author-email: thomas.engel.web@gmail.com
License: GPL-3.0
Description:  # Decoder++
        
        ![Decoder++ Logo](https://raw.githubusercontent.com/bytebutcher/decoder-plus-plus/master/dpp/images/dpp.png)
        
        An extensible application for penetration testers and software developers to decode/encode data into various formats. 
        
        ## Setup
        
        ```Decoder++``` can be either installed by using ```pip``` or by pulling the source from this repository: 
        ```bash
        # Install using pip
        pip3 install decoder-plus-plus
        ```
        
        ## Overview
        
        This section provides you with an overview about the individual ways of interacting with ```Decoder++```.
         For additional usage information check out the ```Advanced Usage``` section.
         
        ### Graphical User Interface
        If you prefer a graphical user interface to transform your data 
        ```Decoder++``` gives you two choices: a ```main-window-mode``` and a ```dialog-mode```.
        
        ![Decoder++ Screenshot](https://raw.githubusercontent.com/bytebutcher/decoder-plus-plus/master/images/dpp-preview-001.png)
        
        While the ```main-window-mode``` supports tabbing, the ```dialog-mode``` has the ability to return the transformed content to ```stdout``` 
        ready for further processing. This comes quite in handy if you want to call ```Decoder++``` from other tools 
        like BurpSuite (check out the [BurpSuite Send-to extension](https://github.com/bytebutcher/burp-send-to)) or any other script
        in which you want to add a graphical user interface for flexible transformation of any input.
        
        ![Decoder++ Screenshot](https://raw.githubusercontent.com/bytebutcher/decoder-plus-plus/master/images/dpp-preview-dialog.png)
        
        ### Command Line
        
        If you don't want to startup a graphical user interface but still make use of the various transformation methods of 
        ```Decoder++``` you 
         can use the commandline mode:
        
        ```bash
        $ dpp -e base64 -h sha1 "Hello, world!"
        e52d74c6d046c390345ae4343406b99587f2af0d
        ```
        
        ### Features
        
        * User Interfaces:
            * Graphical User Interface
            * Command Line Interface
        * Preinstalled Scripts and Codecs:
            * **Encode/Decode:** Base16, Base32, Base64, Base64 (URL-safe), Binary, Gzip, Hex, Html, JWT, HTTP64, Octal, Url, Url+, Zlib
            * **Hashing:** Adler-32, Apache-Md5, CRC32, FreeBSD-NT, Keccak224, Keccak256, Keccak384, Keccak512, LM, Md2, Md4,
                Md5, NT, PHPass, RipeMd160, Sha1, Sha3 224, Sha3 256, Sha3 384, Sha3 512, Sha224, Sha256, Sha348, Sha512,
                Sun Md5
            * **Scripts:** CSS-Minify, Caesar, Extract URLs, Filter-Lines, Identify File Format, Identify Hash Format, JS-Beautifier, JS-to-XML, JQ, JSONPath, HTML-Beautifier, Little/Big-Endian Transform, Reformat Text, Remove Newlines, Remove Whitespaces, Search and Replace, Split and Rejoin, Unescape/Escape String, XPath
        * Smart-Decode
        * Plugin System
        * Load & Save Current Session
        * Platforms:
            * Windows
            * Linux
            * MAC
        
        
        ## Advanced Usage
        
        This section provides you with additional information about how the command line interface can be used.
        
        ### Command Line Interface
        
        The commandline interface gives you easy access to all available codecs.
        
        To list them you can use the ```-l``` argument. To narrow down your search the ```-l```
         argument accepts additional parameters which are used as filter:
        
        ```bash
        $ dpp -l base enc
        
        Codec                 Type
        -----                 ----
        base16                encoder
        base32                encoder
        base64                encoder
        
        ```
        ```Decoder++``` distinguishes between encoders, decoders, hashers and scripts.
        Like the graphical user interface the command line interface allows you to use multiple codecs in a row:
        ```bash
        $ dpp "H4sIAAXmeVsC//NIzcnJ11Eozy/KSVEEAObG5usNAAAA" -d base64 -d gzip
        Hello, world!
        ```
        
        While encoders, decoders and hashers can be used right away, some of the scripts may require additional configuration.
        To show all available options of a specific script you can add the ```help``` parameter:
        ```
        $ dpp "Hello, world!" -s split_and_rejoin help
        
        Split & Rejoin
        ==============
        
                     Name  Value  Group            Required  Description
                     ----  -----  -----            --------  -----------
           split_by_chars         split_behaviour  yes       the chars used at which to split the text
          split_by_length  0      split_behaviour  yes       the length used at which to split the text
        rejoin_with_chars                          yes       the chars used to join the splitted text
        
        ```
        
        To configure a specific script you need to supply the individual options as name-value pairs (e.g. ```search_term="Hello"```):
        
        ```
        $ dpp "Hello, world!" -s search_and_replace search_term="Hello" replace_term="Hey"
        Hey, world!
        ```
        
        ### Plugin Development
        
        To add custom codecs just copy them into the ```$HOME/.config/dpp/plugins/``` folder. 
        
        ```python
        from dpp.core.plugin.abstract_plugin import DecoderPlugin
        
        class Plugin(DecoderPlugin):
            """
            Possible plugins are DecoderPlugin, EncoderPlugin, HasherPlugin, ScriptPlugin or IdentifyPlugin.
            See AbstractPlugin or it's implementations for more information.
            """ 
        
            def __init__(self, context):
                plugin_name = "URL"
                plugin_author = "Your Name"
                # Python Libraries which are required to be able to execute the run method of this plugin.
                plugin_requirements = ["urllib"]
                super().__init__(plugin_name, plugin_author, plugin_requirements, context)
        
            def run(self, text):
                # Load the required libraries here ...
                import urllib.parse
                # Run your action ...
                return urllib.parse.unquote(text)
        ```
        
        ## Contribute
        
        Feel free to open a new ticket for feature requests or bugs. Also don't hesitate to issue a pull-request for new features/plugins.
        
        Thanks to 
        * Tim Menapace (RIPEMD160, KECCAK256)
        * Robin Krumnow (ROT13)
        
        ## Troubleshooting
        
        ### Signals are not working on Mac OS
        
        When starting ```Decoder++``` in Mac OS signals are not working.
        
        This might happen when ```PyQt5``` is installed using homebrew. To fix this issue it is recommended to install the ```libdbus-1```
        library. See http://doc.qt.io/qt-5/osx-issues.html#d-bus-and-macos for more information regarding this issue.  
        
        ### Can not start Decoder++ in Windows using CygWin
        
        When starting ```Decoder++``` in ```CygWin``` an error occurs:
        ```
          ModuleNotFoundError: No module named 'PyQt5'
        ```
        
        This happens although ```PyQt5``` is installed using pip. Currently there is no fix for that. Instead it is recommended
        to start ```Decoder++``` using the Windows command line.
        
        ### No Module PyQt5.sig 
        
        When starting ```Decoder++``` the error ```No module named 'PyQt5.sig'``` is displayed on the console. 
        This may happen when there are competing versions of PyQt5 installed. Reinstalling PyQt5 should fix this error.
        
        ```
        $ sudo pip3 uninstall PyQt5  
        $ sudo pip3 install PyQt5
        ```
        
        ## Inspired By
        * PortSwigger's Burp Decoder
        
        ## Powered By
        * PyQt5
        * QtAwesome
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
