shencode-encoder-multicoder

Description

Multicoder is an encoding / encryption module and comes with support for different algorithms.

Base32 and Base64

A basic Base32 and Base64 encoder. The --key argument is not needed for this.

AES

Support for AES encryption. This will replace the AES module as standalone module.

RSA

This is not native RSA encryption for files, but rather a hybrid encryption scheme. The --key argument is encrypted using a previously generated RSA key pair. The files themselves are encrypted symmetrically using AES, and the AES key is stored alongside the encrypted data, protected by RSA encryption. The --key argument shouldn’t be bigger than 446 bytes, because OAEP1 is used with SHA256:

\[\begin{aligned} max\_length &= key\_size\_bytes - 2 * hash\_size\_bytes - 2 \\ key\_size\_bytes &= 4096 : 8 = 512 \\ hash\_size\_bytes &= 256 : 8 = 32 \\ max\_length &= 512 - 2 * 32 -2 = 446 \end{aligned}\]

Command

shencode.py core multicoder [-h] -a {base32,base64,aes,rsa} [-m {encode,decode}] [-i INPUT] [-k KEY] [-o OUTPUT]

En- / Decoder for different algorithms. Supports: AES, Base32, Base64, RSA

options:
  -h, --help       show this help message and exit
  -a, --algorithm
  -m, --mode       Operation mode, choose encode / decode
  -i, --input      Input file
  -k, --key        If required, set the en- / decryption key
  -o, --output     Output file

Example Output

python shencode.py encoder multicoder -a rsa -m encode -k "pass_it?totheL1M1T" -i testfile.bin -o encoded_testfile.bin

[MultiC0DER]-[0.0.6]

[*] Load input file
[+] File testfile.bin loaded
[#] Size of encoded data: 28323440 bytes
[#] Hash: 7aec64d315525006a44952ea7a046ba67fd2b908
[*] Process input with RSA
[+] File created in encoded_testfile.bin
[#] Hash: 8b871cb13d627c2b775c1ea7d818aef680a3245e
[+] DONE!
  1. https://en.wikipedia.org/wiki/Optimal_asymmetric_encryption_paddingÂ