CoolFace
Apppublic

abdullahawan1/dictionary-attack-detector

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes
test_attack.py48 linesDownload Raw Back to root
1import requests, time2 3url = 'http://127.0.0.1:5000/api/login'4passwords = ['password','123456','password123','qwerty','letmein','admin123','welcome','monkey','dragon','master']5 6print('=' * 55)7print('  DICTIONARY ATTACK SIMULATION')8print('=' * 55)9print('  Target:', url)10print('  Username: demo_user')11print('  Wordlist:', len(passwords), 'passwords')12print('=' * 55)13 14for i, pwd in enumerate(passwords, 1):15    try:16        r = requests.post(url, json={'username': 'demo_user', 'password': pwd}, timeout=10)17        code = r.status_code18        msg = r.json().get('message', '')19        if code == 403:20            print('  [{}] {:20s} -> BLOCKED! {}'.format(i, pwd, msg))21            for j, p2 in enumerate(['test', 'root'], i + 1):22                r2 = requests.post(url, json={'username': 'demo_user', 'password': p2}, timeout=10)23                print('  [{}] {:20s} -> BLOCKED! {}'.format(j, p2, r2.json().get('message', '')))24            break25        elif code == 200:26            print('  [{}] {:20s} -> SUCCESS!'.format(i, pwd))27            break28        else:29            print('  [{}] {:20s} -> FAILED ({})'.format(i, pwd, code))30    except Exception as e:31        print('  [{}] ERROR: {}'.format(i, e))32        break33    time.sleep(0.3)34 35print('=' * 55)36print('  ATTACK FINISHED')37print('=' * 55)38 39# Check blocked IPs40print()41print('Checking blocked IPs...')42r = requests.get('http://127.0.0.1:5000/api/blocked-ips')43data = r.json()44print('  Blocked IPs:', len(data.get('blocked_ips', [])))45for b in data.get('blocked_ips', []):46    mins = b['expires_in'] // 6047    print('    -> IP: {} | Reason: {} | Expires in: {}m'.format(b['ip_address'], b['reason'], mins))48