Skip to content
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ env
**/*.egg-info/
dist/
build/
.idea/
.idea/
logs
.vscode
73 changes: 49 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,20 @@ A single-file cross-platform quality of life tool to obfuscate a given shellcode
These are going here because they deserve it
- An00bRektn [github](https://github.com/An00bRektn) [twitter](https://twitter.com/An00bRektn) ♥
- 0xtejas [github](https://github.com/0xtejas)
- Lavender-exe [github](https://github.com/Lavender-exe)

## Encryption Methods

Shellcrypt currently supports the following encryption methods (more to come in the future!)

- AES (128-bit CBC)
- AES CBC - 128
- AES CBC - 256
- AES ECB - 256
- ChaCha20
- RC4
- Salsa20
- XOR
- XOR with Linear Congruential Generator (LCG)

## Supported Formats

Expand All @@ -33,77 +37,98 @@ Shellcrypt currently supports the following output formats (more to come in the
- Visual Basic for Applications (VBA)
- Visual Basic Script (VBS)
- Rust
- Javascript
- Zig
- Raw

## Usage
**Encrypt shellcode with a random key**
```plaintext
```bash
python ./shellcrypt.py -i ./shellcode.bin -f c
```
**Encrypt shellcode with 128-bit AES CBC**
```plaintext
```bash
python ./shellcrypt.py -i ./shellcode.bin -e aes -f c
```
**Encrypt shellcode with a user-specified key**
```plaintext
```bash
python ./shellcrypt.py -i ./shellcode.bin -f c -k 6d616c77617265
```
**Output in nim format**
```plaintext
```bash
python ./shellcrypt.py -i ./shellcode.bin -f nim
```
**Output to file**
```plaintext
```bash
python ./shellcrypt.py -i ./shellcode.bin -f nim -o ./shellcode_out.nim
```
**Get a list of compression methods**
```bash
python ./shellcrypt.py --compressors
```
**Get a list of encoding methods**
```bash
python ./shellcrypt.py --encoders
```
**Get a list of encryption methods**
```plaintext
```bash
python ./shellcrypt.py --ciphers
```
**Get a list of output formats**
```plaintext
```bash
python ./shellcrypt.py --formats
```

**Help**
```plaintext
███████╗██╗ ██╗███████╗██╗ ██╗ ██████╗██████╗ ██╗ ██╗██████╗ ████████╗
██╔════╝██║ ██║██╔════╝██║ ██║ ██╔════╝██╔══██╗╚██╗ ██╔╝██╔══██╗╚══██╔══╝
███████╗███████║█████╗ ██║ ██║ ██║ ██████╔╝ ╚████╔╝ ██████╔╝ ██║
╚════██║██╔══██║██╔══╝ ██║ ██║ ██║ ██╔══██╗ ╚██╔╝ ██╔═══╝ ██║
███████║██║ ██║███████╗███████╗███████╗╚██████╗██║ ██║ ██║ ██║ ██║
╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
v1.5 beta
_____ __ ____ __
/ ___// /_ ___ / / /___________ ______ / /_
\__ \/ __ \/ _ \/ / / ___/ ___/ / / / __ \/ __/
___/ / / / / __/ / / /__/ / / /_/ / /_/ / /_
/____/_/ /_/\___/_/_/\___/_/ \__, / .___/\__/
/____/_/
v2.0 - Release

~ @0xLegacyy (Jordan Jay)
By: @0xLegacyy (Jordan Jay)

usage: shellcrypt [-h] [-i INPUT] [-e ENCRYPT] [-k KEY] [-n NONCE] [-f FORMAT] [--formats] [--ciphers] [-o OUTPUT]
[-v]
usage: shellcrypt [-h] -i INPUT [-e ENCRYPT] [--decrypt] [-d ENCODE] [-c COMPRESS] [-k KEY] [-n NONCE] [-f FORMAT] [--formats] [--ciphers] [--encoders] [--compressors] [-o OUTPUT] [-v] [--preserve-null]
[--key-length KEY_LENGTH]

options:
-h, --help show this help message and exit
-i INPUT, --input INPUT
Path to file to be encrypted.
-e ENCRYPT, --encrypt ENCRYPT
Encryption method to use, default 'xor'.
--decrypt Enable decryption functionality (not yet implemented).
-d ENCODE, --encode ENCODE
Encoding method to use, default None.
-c COMPRESS, --compress COMPRESS
Compression method to use.
-k KEY, --key KEY Encryption key in hex format, default (random 16 bytes).
-n NONCE, --nonce NONCE
Encryption nonce in hex format, default (random 16 bytes).
-f FORMAT, --format FORMAT
Output format, specify --formats for a list of formats.
--formats Show a list of valid formats
--ciphers Show a list of valid ciphers
--encoders Show a list of valid encoders
--compressors Show a list of valid compressors
-o OUTPUT, --output OUTPUT
Path to output file
-v, --version Shows the version and exits
--preserve-null Avoid XORing null bytes during XOR encryption.
--key-length KEY_LENGTH
Specify the key length in bytes (default is 16).
```

## Future Development Goals

1. More output formats (rust etc.)
2. More encryption methods
3. Compression methods
4. Create a config system that allows for chaining encryption/encoding/compression methods
5. Flag to add a decrypt method to the generated code
6. [Shikata](https://github.com/EgeBalci/sgn) encoder mayhaps?
- [x] More output formats (rust etc.)
- [x] More encryption methods
- [x] Compression methods
- [ ] Create a config system that allows for chaining encryption/encoding/compression methods
- [ ] Flag to add a decrypt method to the generated code
- [ ] [Shikata](https://github.com/EgeBalci/sgn) encoder mayhaps?

_**pssst** this is still heavily in development so if you'd like to contribute, have a go at working on one of the many `TODO`'s in the code :)_
Binary file modified requirements.txt
Binary file not shown.
Loading