Examples

Practical examples for common JWT-HACK use cases and workflows.

Basic Operations

Decode a JWT Token

# Decode and display token contents
jwt-hack decode eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.5mhBHqs5_DTLdINd9p5m7ZJ6XD0Xc55kIaCRY5r6HRA

Create a New JWT

# Create with HMAC-SHA256
jwt-hack encode '{"sub":"1234", "name":"John Doe", "admin":true}' --secret=mysecret

# Create with RSA
jwt-hack encode '{"sub":"1234", "role":"admin"}' --private-key=private.pem --algorithm=RS256

Verify JWT Signature

# Verify HMAC token
jwt-hack verify eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0In0.SIG --secret=mysecret

# Verify RSA token with expiration
jwt-hack verify <RSA_TOKEN> --private-key=public.pem --validate-exp

Security Testing Workflows

Full Token Analysis

# Step 1: Decode to understand structure
jwt-hack decode <TOKEN>

# Step 2: Try cracking the secret
jwt-hack crack -w wordlist.txt <TOKEN>

# Step 3: Generate attack payloads
jwt-hack payload <TOKEN> --target=all

Password Cracking

# Quick dictionary attack with common passwords
jwt-hack crack -w /usr/share/wordlists/rockyou.txt <TOKEN>

# Brute force attack (short secrets)
jwt-hack crack -m brute <TOKEN> --max=4 --power

# Custom wordlist with verbose output
jwt-hack crack -w custom-secrets.txt <TOKEN> --verbose

None Algorithm Bypass

# Generate none algorithm payloads
jwt-hack payload <TOKEN> --target=none

# Test each variant manually

Advanced Use Cases

Compressed Tokens

# Create compressed JWT
jwt-hack encode '{"data":"very long payload content..."}' --secret=test --compress

# Decode automatically handles decompression
jwt-hack decode <COMPRESSED_TOKEN>

# Crack compressed token
jwt-hack crack -w wordlist.txt <COMPRESSED_TOKEN>

Custom Headers

# Add custom header fields
jwt-hack encode '{"sub":"1234"}' \
  --secret=test \
  --header='{"kid":"key-123","x5u":"https://example.com/certs"}'

Multiple Algorithms

# HS256 (HMAC SHA-256)
jwt-hack encode '{"sub":"1234"}' --secret=secret --algorithm=HS256

# HS512 (HMAC SHA-512)
jwt-hack encode '{"sub":"1234"}' --secret=secret --algorithm=HS512

# RS256 (RSA SHA-256)
jwt-hack encode '{"sub":"1234"}' --private-key=rsa.pem --algorithm=RS256

# ES256 (ECDSA SHA-256)
jwt-hack encode '{"sub":"1234"}' --private-key=ec.pem --algorithm=ES256

Integration with Other Tools

With curl

# Create token and use in API request
TOKEN=$(jwt-hack encode '{"sub":"user123"}' --secret=mysecret)
curl -H "Authorization: Bearer $TOKEN" https://api.example.com/data

With jq

# Extract specific claims from decoded token
jwt-hack decode <TOKEN> --json | jq '.payload.sub'

Performance Optimization

Parallel Cracking

# Use all CPU cores
jwt-hack crack -m brute <TOKEN> --max=5 --power

# Custom concurrency
jwt-hack crack -w huge-wordlist.txt <TOKEN> -c 16

Best Practices

Always Decode First

# Before any attack, understand the token
jwt-hack decode <TOKEN>

Use Targeted Wordlists

# Start with small, targeted wordlists
jwt-hack crack -w top-100.txt <TOKEN>

# Then try larger sets if needed
jwt-hack crack -w rockyou.txt <TOKEN>

Responsible Testing

  • Only test systems you own or have permission to test
  • Always get written authorization
  • Follow responsible disclosure practices
  • Document all testing activities