decoder-plus-plus


Namedecoder-plus-plus JSON
Version 1.2.1 PyPI version JSON
download
home_pagehttps://github.com/bytebutcher/decoder-plus-plus
SummaryAn extensible application for penetration testers and software developers to decode/encode data into various formats.
upload_time2021-04-10 00:01:43
maintainer
docs_urlNone
authorbytebutcher
requires_python
licenseGPL-3.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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, 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



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/bytebutcher/decoder-plus-plus",
    "name": "decoder-plus-plus",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "bytebutcher",
    "author_email": "thomas.engel.web@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/37/be/e95f8db2dca93e4733b960918a50c867824b674ab2e03c411c608cf10433/decoder-plus-plus-1.2.1.tar.gz",
    "platform": "",
    "description": "# Decoder++\n\n![Decoder++ Logo](https://raw.githubusercontent.com/bytebutcher/decoder-plus-plus/master/dpp/images/dpp.png)\n\nAn extensible application for penetration testers and software developers to decode/encode data into various formats. \n\n## Setup\n\n```Decoder++``` can be either installed by using ```pip``` or by pulling the source from this repository: \n```bash\n# Install using pip\npip3 install decoder-plus-plus\n```\n\n## Overview\n\nThis section provides you with an overview about the individual ways of interacting with ```Decoder++```.\n For additional usage information check out the ```Advanced Usage``` section.\n\n### Graphical User Interface\nIf you prefer a graphical user interface to transform your data \n```Decoder++``` gives you two choices: a ```main-window-mode``` and a ```dialog-mode```.\n\n![Decoder++ Screenshot](https://raw.githubusercontent.com/bytebutcher/decoder-plus-plus/master/images/dpp-preview-001.png)\n\nWhile the ```main-window-mode``` supports tabbing, the ```dialog-mode``` has the ability to return the transformed content to ```stdout``` \nready for further processing. This comes quite in handy if you want to call ```Decoder++``` from other tools \nlike BurpSuite (check out the [BurpSuite Send-to extension](https://github.com/bytebutcher/burp-send-to)) or any other script\nin which you want to add a graphical user interface for flexible transformation of any input.\n\n![Decoder++ Screenshot](https://raw.githubusercontent.com/bytebutcher/decoder-plus-plus/master/images/dpp-preview-dialog.png)\n\n### Command Line\n\nIf you don't want to startup a graphical user interface but still make use of the various transformation methods of \n```Decoder++``` you \n can use the commandline mode:\n\n```bash\n$ dpp -e base64 -h sha1 \"Hello, world!\"\ne52d74c6d046c390345ae4343406b99587f2af0d\n```\n\n### Features\n\n* User Interfaces:\n    * Graphical User Interface\n    * Command Line Interface\n* Preinstalled Scripts and Codecs:\n    * **Encode/Decode:** Base16, Base32, Base64, Base64 (URL-safe), Binary, Gzip, Hex, Html, JWT, HTTP64, Octal, Url, Url+, Zlib\n    * **Hashing:** Adler-32, Apache-Md5, CRC32, FreeBSD-NT, Keccak224, Keccak256, Keccak384, Keccak512, LM, Md2, Md4,\n        Md5, NT, PHPass, RipeMd160, Sha1, Sha3 224, Sha3 256, Sha3 384, Sha3 512, Sha224, Sha256, Sha348, Sha512,\n        Sun Md5\n    * **Scripts:** CSS-Minify, Caesar, 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\n* Smart-Decode\n* Plugin System\n* Load & Save Current Session\n* Platforms:\n    * Windows\n    * Linux\n    * MAC\n\n\n## Advanced Usage\n\nThis section provides you with additional information about how the command line interface can be used.\n\n### Command Line Interface\n\nThe commandline interface gives you easy access to all available codecs.\n\nTo list them you can use the ```-l``` argument. To narrow down your search the ```-l```\n argument accepts additional parameters which are used as filter:\n\n```bash\n$ dpp -l base enc\n\nCodec                 Type\n-----                 ----\nbase16                encoder\nbase32                encoder\nbase64                encoder\n\n```\n```Decoder++``` distinguishes between encoders, decoders, hashers and scripts.\nLike the graphical user interface the command line interface allows you to use multiple codecs in a row:\n```bash\n$ dpp \"H4sIAAXmeVsC//NIzcnJ11Eozy/KSVEEAObG5usNAAAA\" -d base64 -d gzip\nHello, world!\n```\n\nWhile encoders, decoders and hashers can be used right away, some of the scripts may require additional configuration.\nTo show all available options of a specific script you can add the ```help``` parameter:\n```\n$ dpp \"Hello, world!\" -s split_and_rejoin help\n\nSplit & Rejoin\n==============\n\n             Name  Value  Group            Required  Description\n             ----  -----  -----            --------  -----------\n   split_by_chars         split_behaviour  yes       the chars used at which to split the text\n  split_by_length  0      split_behaviour  yes       the length used at which to split the text\nrejoin_with_chars                          yes       the chars used to join the splitted text\n\n```\n\nTo configure a specific script you need to supply the individual options as name-value pairs (e.g. ```search_term=\"Hello\"```):\n\n```\n$ dpp \"Hello, world!\" -s search_and_replace search_term=\"Hello\" replace_term=\"Hey\"\nHey, world!\n```\n\n### Plugin Development\n\nTo add custom codecs just copy them into the ```$HOME/.config/dpp/plugins/``` folder. \n\n```python\nfrom dpp.core.plugin.abstract_plugin import DecoderPlugin\n\nclass Plugin(DecoderPlugin):\n    \"\"\"\n    Possible plugins are DecoderPlugin, EncoderPlugin, HasherPlugin, ScriptPlugin or IdentifyPlugin.\n    See AbstractPlugin or it's implementations for more information.\n    \"\"\" \n\n    def __init__(self, context):\n        plugin_name = \"URL\"\n        plugin_author = \"Your Name\"\n        # Python Libraries which are required to be able to execute the run method of this plugin.\n        plugin_requirements = [\"urllib\"]\n        super().__init__(plugin_name, plugin_author, plugin_requirements, context)\n\n    def run(self, text):\n        # Load the required libraries here ...\n        import urllib.parse\n        # Run your action ...\n        return urllib.parse.unquote(text)\n```\n\n## Contribute\n\nFeel free to open a new ticket for feature requests or bugs. Also don't hesitate to issue a pull-request for new features/plugins.\n\nThanks to \n* Tim Menapace (RIPEMD160, KECCAK256)\n* Robin Krumnow (ROT13)\n\n## Troubleshooting\n\n### Signals are not working on Mac OS\n\nWhen starting ```Decoder++``` in Mac OS signals are not working.\n\nThis might happen when ```PyQt5``` is installed using homebrew. To fix this issue it is recommended to install the ```libdbus-1```\nlibrary. See http://doc.qt.io/qt-5/osx-issues.html#d-bus-and-macos for more information regarding this issue.  \n\n### Can not start Decoder++ in Windows using CygWin\n\nWhen starting ```Decoder++``` in ```CygWin``` an error occurs:\n```\n  ModuleNotFoundError: No module named 'PyQt5'\n```\n\nThis happens although ```PyQt5``` is installed using pip. Currently there is no fix for that. Instead it is recommended\nto start ```Decoder++``` using the Windows command line.\n\n### No Module PyQt5.sig \n\nWhen starting ```Decoder++``` the error ```No module named 'PyQt5.sig'``` is displayed on the console. \nThis may happen when there are competing versions of PyQt5 installed. Reinstalling PyQt5 should fix this error.\n\n```\n$ sudo pip3 uninstall PyQt5  \n$ sudo pip3 install PyQt5\n```\n\n## Inspired By\n* PortSwigger's Burp Decoder\n\n## Powered By\n* PyQt5\n* QtAwesome\n\n\n",
    "bugtrack_url": null,
    "license": "GPL-3.0",
    "summary": "An extensible application for penetration testers and software developers to decode/encode data into various formats.",
    "version": "1.2.1",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "50e18cadff496750e1d1b897cc8b0366",
                "sha256": "b0e1eb8c20a4ea165944f5bdeb373f0e3a21316844957e92dcc74d6fd6ed8eba"
            },
            "downloads": -1,
            "filename": "decoder_plus_plus-1.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "50e18cadff496750e1d1b897cc8b0366",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 237822,
            "upload_time": "2021-04-10T00:01:41",
            "upload_time_iso_8601": "2021-04-10T00:01:41.421096Z",
            "url": "https://files.pythonhosted.org/packages/1f/a3/4b0a61ef101189ab632b62f79ba0cf8b88c671b210755d8b33016a2da0b6/decoder_plus_plus-1.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "1e5ffeed2bc54a144c55c6849c035812",
                "sha256": "65d7ec3e42084c16052b9e665c663a6b62bc2c53e0c2f67028fd4daa283d2418"
            },
            "downloads": -1,
            "filename": "decoder-plus-plus-1.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "1e5ffeed2bc54a144c55c6849c035812",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 148239,
            "upload_time": "2021-04-10T00:01:43",
            "upload_time_iso_8601": "2021-04-10T00:01:43.702829Z",
            "url": "https://files.pythonhosted.org/packages/37/be/e95f8db2dca93e4733b960918a50c867824b674ab2e03c411c608cf10433/decoder-plus-plus-1.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2021-04-10 00:01:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": null,
    "github_project": "bytebutcher",
    "error": "Could not fetch GitHub repository",
    "lcname": "decoder-plus-plus"
}
        
Elapsed time: 0.31541s