Instacracker-cli -
#!/usr/bin/env python3 """ instacracker-cli - A command-line password strength testing tool For educational and security assessment purposes only """ import hashlib import itertools import string import time import sys import argparse import re from typing import Dict, List, Tuple, Optional import json
def dictionary_attack(self, target_hash: str, hash_type: str = "md5", wordlist: List[str] = None) -> Tuple[Optional[str], int]: """Perform dictionary attack against hash""" wordlist = wordlist or self.common_passwords self.attempts = 0 self.start_time = time.time() print(f"[*] Starting dictionary attack with len(wordlist) words...") for word in wordlist: self.attempts += 1 if self._check_hash(word, target_hash, hash_type): elapsed = time.time() - self.start_time return word, self.attempts, elapsed elapsed = time.time() - self.start_time return None, self.attempts, elapsed instacracker-cli
def hybrid_attack(self, target_hash: str, hash_type: str = "md5", base_words: List[str] = None) -> Tuple[Optional[str], int]: """Hybrid attack combining dictionary with mutations""" base_words = base_words or self.common_passwords mutations = [ lambda x: x + "123", lambda x: x + "1234", lambda x: x + "!", lambda x: x.capitalize(), lambda x: x.upper(), lambda x: x + "2023", lambda x: x + "@", ] self.attempts = 0 self.start_time = time.time() print(f"[*] Starting hybrid attack...") for word in base_words: # Check original self.attempts += 1 if self._check_hash(word, target_hash, hash_type): elapsed = time.time() - self.start_time return word, self.attempts, elapsed # Check mutations for mutation in mutations: mutated = mutation(word) self.attempts += 1 if self._check_hash(mutated, target_hash, hash_type): elapsed = time.time() - self.start_time return mutated, self.attempts, elapsed elapsed = time.time() - self.start_time return None, self.attempts, elapsed Optional import json def dictionary_attack(self
if args.command == 'hash': cracker = InstaCrackerCLI(verbose=args.verbose) # Load custom wordlist if provided wordlist = None if args.wordlist: with open(args.wordlist, 'r') as f: wordlist = [line.strip() for line in f] if args.method == 'dict': result, attempts, elapsed = cracker.dictionary_attack( args.target, args.type, wordlist ) elif args.method == 'brute': result, attempts, elapsed = cracker.brute_force_attack( args.target, args.type, args.max_length ) else: # hybrid result, attempts, elapsed = cracker.hybrid_attack( args.target, args.type, wordlist ) print(f"\n[+] Results:") print(f" Password found: result if result else 'Not found'") print(f" Attempts: attempts:,") print(f" Time: elapsed:.2f seconds") print(f" Speed: attempts/elapsed:.0f attempts/second") elif args.command == 'analyze': cracker = InstaCrackerCLI() analysis = cracker.analyze_password(args.password) print(f"\n[+] Password Analysis for: args.password") print(f" Strength: analysis['strength']") print(f" Score: analysis['score']/6") print(f" Entropy: analysis['entropy_bits']:.0f bits") print(f" Length: analysis['length']") print(f" Contains:") print(f" - Uppercase: analysis['has_upper']") print(f" - Lowercase: analysis['has_lower']") print(f" - Digits: analysis['has_digits']") print(f" - Special: analysis['has_special']") if analysis['feedback']: print(f"\n Suggestions:") for suggestion in analysis['feedback']: print(f" - suggestion") elif args.command == 'generate': cracker = InstaCrackerCLI() base_words = args.words.split(',') cracker.generate_wordlist( base_words, args.output, add_numbers=not args.no_numbers, add_special=not args.no_special ) elif args.command == 'interactive': print(""" ╔══════════════════════════════════════════════════════════════╗ ║ InstaCracker CLI - Interactive Mode ║ ║ For Educational Use Only ║ ╚══════════════════════════════════════════════════════════════╝ """) hash_type: str = "md5"