Skip to content

Commit deb0849

Browse files
authored
Merge pull request #5 from KiwiTG/main
Haze's Pull Request
2 parents d375609 + f87000f commit deb0849

39 files changed

Lines changed: 2138 additions & 502 deletions

README.MD

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,32 @@
55
[onlyrat]: https://github.com/CosmodiumCS/OnlyRAT
66

77
<!-- title -->
8-
# SkeletonKey
8+
# SkeletonKey V1.1
9+
10+
Under Development!
11+
12+
### Added:
13+
- Salt and Raw Hash Function to MD5
14+
- SHA1 to SHA512 Hashes
15+
- Blake2b and Blake2s Hashes
16+
- Twofish Encryption
17+
- Blowfish Encryption
18+
- Updated Pixel Encoding
19+
- Monoalphabetic Cipher
20+
- URL Encoding
21+
22+
### Plan:
23+
- Windows Capable
24+
- Fernet Encryption
25+
- AES Encryption
26+
- RSA Encryption
27+
- 3/DES Encryption
28+
- Compression Methods
29+
- Fast Hash Brute Force Option
30+
- Extend SHA Library
31+
32+
---
33+
934
SkeletonKey is an advanced cryptography hacking tool created by a joint development between [The Societal Security Guild](https://saintssec.com) and [Cosmodium CyberSecurity][ccs]. It was originally two seperate tools, one reffered to as "[Cryptex](https://github.com/SSGorg/Cryptex)" and the other as "[The Codex Project](https://github.com/CosmodiumCS/the-codex-project)". But on May 2, 2022, the lead developers [Cythes](https://github.com/AlexKollar) and [Blue Cosmo](https://github.com/CosmodiumCS) joined forces to build a central cryptography tool.
1035

1136
---

ciphers/1337.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@
55

66
# help menu for cipheringing process
77
help_menu = """
8-
+------------------------------------------------------+
9-
| [+] ARGUMENTS L33T 5P34K |
10-
| [+] ARG 1. Process |
11-
| [-e] ---------- Encrypt |
12-
| [-d] ---------- Decrypt |
13-
+------------------------------------------------------+
14-
| [+] ARG 2. Additional Aruments |
15-
| [-t <plaintext>] --------- Input Text |
16-
| [-i <input file>] -------- Input File [.txt] |
17-
| [-o <output file>] ------- Output File |
18-
+------------------------------------------------------+
19-
| [+] Example: |
20-
| cryptex l33t -e -t hello |
21-
+------------------------------------------------------+
8+
USAGE:
9+
key 1337 [FLAGS] [OPTIONS]
10+
11+
FLAGS:
12+
-d, --decode Decrypt input text or file
13+
-e, --encode Encrypt input text or file
14+
15+
OPTIONS:
16+
-i, --inputFile <input file> Input file to encrypt or decrypt
17+
-o, --output <output file> Output file for encrypted or decrypted text
18+
-t, --text <text> Input text to encode or decode
19+
20+
EXAMPLES:
21+
key 1337 -e -t hello
2222
"""
2323

2424
# leet chr
@@ -60,4 +60,4 @@ def decode(input):
6060
output += leet_dictionary_dec[character]
6161
else:
6262
output += character
63-
return [output.capitalize(), True]
63+
return [output.capitalize(), True]

ciphers/b64.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@
77

88
# help menu for cipheringing process
99
help_menu = """
10-
+-------------------------------------------------------+
11-
| [+] ARGUMENTS Base64 |
12-
| [+] ARG 1. Process |
13-
| [-e] ---------- Encrypt |
14-
| [-d] ---------- Decrypt |
15-
+-------------------------------------------------------+
16-
| [+] ARG 2. Additional Aruments |
17-
| [-t <plaintext>] --------- Input Text |
18-
| [-i <input file>] -------- Input File [.txt] |
19-
| [-o <output file>] ------- Output File |
20-
+-------------------------------------------------------+
21-
| [+] Example: |
22-
| cryptex b64 -e -t "hello" |
23-
+-------------------------------------------------------+
10+
USAGE:
11+
key b64 [FLAGS] [OPTIONS]
12+
13+
FLAGS:
14+
-d, --decode Decrypt input text or file
15+
-e, --encode Encrypt input text or file
16+
17+
OPTIONS:
18+
-i, --inputFile <input file> Input file to encrypt or decrypt
19+
-o, --output <output file> Output file for encrypted or decrypted text
20+
-t, --text <text> Input text to encrypt or decrypt
21+
22+
EXAMPLES:
23+
key b64 -e -t "hello"
2424
"""
2525

2626
# encode base64
@@ -41,4 +41,4 @@ def decode(input):
4141
b64_bytes = base64.b64decode(text)
4242
output = b64_bytes.decode('ascii')
4343

44-
return [output, True]
44+
return [output, True]

ciphers/bin.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,20 @@
55

66
# help menu for cipheringing process
77
help_menu = """
8-
+------------------------------------------------------+
9-
| [✓] ARGUMENTS Binary |
10-
| [✓] ARG 2. Additional Aruments |
11-
| [-t <plaintext>] --------- Input Text |
12-
| [-i <input file>] -------- Input File [.txt] |
13-
| [-o <output file>] ------- Output File |
14-
+------------------------------------------------------+
15-
| [✓] Example: |
16-
| cryptex bin -e -t hello |
17-
+------------------------------------------------------+
8+
USAGE:
9+
key bin [FLAGS] [OPTIONS]
10+
11+
FLAGS:
12+
-d, --decode Decrypt input text or file
13+
-e, --encode Encrypt input text or file
14+
15+
OPTIONS:
16+
-i, --inputFile <input file> Input file to encrypt or decrypt
17+
-o, --output <output file> Output file for encrypted or decrypted text
18+
-t, --text <text> Input text to encrypt or decrypt
19+
20+
EXAMPLES:
21+
key bin -e -t "hello"
1822
"""
1923
# encode binary
2024
def encode(input):
@@ -32,4 +36,4 @@ def decode(input):
3236
for binary in binary_list:
3337
output += chr(int(binary, 2))
3438

35-
return [output,True]
39+
return [output,True]

ciphers/blake2b.py

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
#!/usr/bin/env python3
2+
3+
# added by : H4Z3
4+
# edit of Mart | marvhus MD5 module
5+
6+
import hashlib
7+
8+
# help menu for cipheringing process
9+
help_menu = """
10+
USAGE:
11+
key blake2b [FLAGS] [OPTIONS]
12+
13+
FLAGS:
14+
-b, --brute Brute force hash
15+
-e, --encrypt Encrypt input text or file
16+
-h, --help Prints help information
17+
-V, --version Prints version information
18+
19+
OPTIONS:
20+
-i, --inputFile <input file> Input file to encrypt or decrypt
21+
-o, --output <output file> Output file for encrypted or decrypted text
22+
-r, --range <number> Max guess length (required if brute forcing dynamically)
23+
-t, --text <text> Input text to encrypt or decrypt
24+
-w, --wordlist <input file> Wordlist (required if brute forcing with wordlist)
25+
26+
EXAMPLES:
27+
key blake2b -e -t "hello"
28+
"""
29+
30+
# decode function [!] Each Cipher Must Have This <---------- [!]
31+
def encode(args):
32+
# Getting text from all passed in args
33+
# All other args can be grabbed the same way
34+
# Example key = input.key | range = input.range
35+
text = args.text
36+
salt = args.salt
37+
38+
if text:
39+
# Run Decode
40+
output = f'Encoding | {text}'
41+
42+
# Detect Salt
43+
if salt:
44+
rawresult = hashlib.blake2b( salt.encode('ascii') +
45+
text.encode('ascii') ).digest()
46+
output += f'Salt | {salt}'
47+
else:
48+
rawresult = hashlib.blake2b( text.encode('ascii') ).digest()
49+
50+
result = rawresult.hex()
51+
52+
output += f"\nBlake2b Raw Sum | {rawresult}\nBlake2b Sum | {result}"
53+
54+
# Output content as string for main.py to print
55+
# Pass True if Success Message
56+
return [output,True]
57+
else:
58+
# Pass False if Fail Message
59+
# Return Nothing to have no output
60+
return [f'"{text}" is not a valid input for -t', False]
61+
62+
# brute function [!] Optional Per Cipher <----------------- [!]
63+
def brute(args):
64+
# Getting text from all passed in args
65+
# All other args can be grabbed the same way
66+
# Example key = input.key | range = input.range
67+
text = args.text
68+
69+
if args.wordlist and args.range:
70+
return ["Please only pick one '-r' or '-w\'", False]
71+
72+
if text and args.wordlist:
73+
wordlist = args.wordlist
74+
75+
# Run Decode
76+
output = f'Bruteforcing | {text}'
77+
78+
length = len(wordlist)
79+
80+
print()
81+
for i, word in enumerate(wordlist):
82+
print(f'Checking {i + 1}/{length}', end='\r')
83+
guess = hashlib.blake2b( word.encode('ascii') ).hexdigest()
84+
if guess.lower() == text.lower():
85+
output += f'\nDecoded Blake2b | {word}'
86+
return [output, True]
87+
continuear
88+
print()
89+
90+
output = "Not found in wordlist"
91+
# Output content as string for main.py to print
92+
# Pass True if Success Message
93+
return [output, False]
94+
95+
if text and args.range:
96+
import string
97+
import itertools
98+
99+
alphabet = string.ascii_letters + string.punctuation + string.digits
100+
range_ = int(args.range)
101+
102+
if range_ <= 0:
103+
return ["Can't use a range that is 0 or lower", False]
104+
105+
i = 0
106+
print()
107+
for item in itertools.product(alphabet, repeat=range_):
108+
i += 1
109+
guess = "".join(item)
110+
print(f'Attempt {i} -- {guess}', end='\r')
111+
result = hashlib.blake2b( guess.encode('ascii') ).hexdigest()
112+
113+
if result.lower() == text.lower():
114+
return [f'Decoded Blake2b | {guess}', True]
115+
print()
116+
117+
return [f'Did not decode Blake2b with max range of {range_}', False]
118+
119+
120+
# Pass False if Fail Message
121+
# Return Nothing to have no output
122+
123+
if not text:
124+
return [f'"{text}" is not a valid input for -t', False]
125+
126+
return ['Unknown error', False]
127+
128+
129+

0 commit comments

Comments
 (0)