# -*- coding: utf-8 -*- from irc3.plugins.command import command import irc3 import os import sys import random import ipdb from random import randint from re import compile from irc3 import rfc dir_path = os.path.dirname(os.path.realpath(__file__)) KRYPTR = [] BOTNAMES = [] BOTNICKS = [] TOTAL_BOTS = 0 READY_BOTS = [] LOCK_KRYLON = 1 # 1 INTERRUPTED = 0 class KRYLON(): def __init__(self,bot,channel): self.bot = bot self.channel = channel self.KRYLON_FILE = ['░█████╗░███╗░░██╗██╗░░░░░██╗███╗░░██╗███████╗', '██╔══██╗████╗░██║██║░░░░░██║████╗░██║██╔════╝', '██║░░██║██╔██╗██║██║░░░░░██║██╔██╗██║█████╗░░', '██║░░██║██║╚████║██║░░░░░██║██║╚████║██╔══╝░░', '╚█████╔╝██║░╚███║███████╗██║██║░╚███║███████╗', '░╚════╝░╚═╝░░╚══╝╚══════╝╚═╝╚═╝░░╚══╝╚══════╝', 'mcjonestown frickhole jonestown', 'mcjonestown frickhole jonestown', 'mcjonestown frickhole jonestown', 'mcjonestown frickhole jonestown', 'jones are jones and jones our sound', 'hole does fuck and jones in town', 'yeah im d and when i re i re as fuck re tard', 't c p direct for re and we as fuck re tard', 'mcchopchopchopchopchopchopchopchopchopchopchopchopjones', 'mcchopchopchopchopchopchopchopchopchopchopchopchoptown', 't c p direct for re and we as fuck re tard', 'yeah im d and when i re i re as fuck re tard', 'mcchopchopchopchopchopchopchopchopchopchopchopchopjones', 'mcchopchopchopchopchopchopchopchopchopchopchopchoptown', 'jones are jones and jones our sound', 'hole does fuck and jones in town', 'mcjonestown frickhole jonestown', 'mcjonestown frickhole jonestown', 'mcjonestown frickhole jonestown', 'mcjonestown frickhole jonestown', 'faded', 'hol up', 'we dem bois', 'hol up', 'we dem bois', 'hol up hol up hol up', "hoed up like like a farmer plow'n field", 'i knighted so hard queen riding my shield', 'simp-gimp- talking like a pimp.', 'jones- town- fucking pay your rent', 'tent- spent- gonzo dick be bent.', 'jones- town- trilln fuck the fent', '░█████╗░███╗░░██╗██╗░░░░░██╗███╗░░██╗███████╗', '██╔══██╗████╗░██║██║░░░░░██║████╗░██║██╔════╝', '██║░░██║██╔██╗██║██║░░░░░██║██╔██╗██║█████╗░░', '██║░░██║██║╚████║██║░░░░░██║██║╚████║██╔══╝░░', '╚█████╔╝██║░╚███║███████╗██║██║░╚███║███████╗', '░╚════╝░╚═╝░░╚══╝╚══════╝╚═╝╚═╝░░╚══╝╚══════╝'] self.__run__() def __run__(self): self.KRYLON_FILE.reverse() self.FILE_BUFFER=[] for _ in self.KRYLON_FILE: self.FILE_BUFFER.append(_) self.FILE_LINES = len(self.KRYLON_FILE) self.INIT = 0 self.STARTED = 0 self.FINISHED = 0 self.FILE_INDEX = 0 # BITWISE FILE LOCK SET self.KRYLON_FILE_LOCK = [] for _ in range(len(self.KRYLON_FILE)): self.KRYLON_FILE_LOCK.append(1) # BITWISE R/W BOT LOCK SET self.BOTS_MODE_LOCK = [] for _ in range(len(READY_BOTS)): self.BOTS_MODE_LOCK.append(zip('1','1')) # BITWISE R/W BOT LOCK UNSET R=[]; W=[]; _X=-1; _Y=-1; for _ in range(len(READY_BOTS)): _X,_Y=list(self.BOTS_MODE_LOCK[_])[0] R.append(int(_X)) W.append(int(_Y)) self.BOTS_MODE_READ=R self.BOTS_MODE_WRIT=W @irc3.plugin class Plugin(object): def __init__(self, context): self.log = context.log self.context = context self.channel = context.config.channel self._ST8 = 0 def __emoj(self,s): emote_db = '%s/emote.db' % dir_path emoj = random.choice(list(open(emote_db))) random.randint(0,1) if random.randint(0,1) == 0: emoj = "\x0304{}\x0F".format(emoj) else: emoj = "\x0303{}\x0F".format(emoj) s = s + ' ▶ ' + emoj return s def __greet(self): greet_db = '%s/greet.db' % dir_path greet = random.choice(list(open(greet_db))) return greet def __symbol(self): symbol_db = '%s/symbol.db' % dir_path symbol = random.choice(list(open(symbol_db))) return symbol def rotate(self): self.b1n+=1 if self.b1n == len(BOTNICKS): self.b1n=0 ipdb.set_trace() def spraying(self, mask, channel, **kw): PTR = KRYPTR[0] PTR.kbr = []; PTR.kbw = []; PTR.kbl = []; PTR.chn = channel for index in range(len(PTR.BOTS_MODE_READ)): PTR.kbr.append(PTR.BOTS_MODE_READ[index]) PTR.kbw.append(PTR.BOTS_MODE_WRIT[index]) PTR.kbl.append(PTR.KRYLON_FILE_LOCK[index]) PTR.fbu = PTR.FILE_BUFFER PTR.fli = PTR.FILE_LINES PTR.fin = PTR.FILE_INDEX BOTNAMES=','.join(self.context.config.botnet.keys()).split(',') PTR.bna = BOTNAMES BOTNICKS=[] for _ in BOTNAMES: BOTNICKS.append(self.context.config.botnet[_].nick) PTR.bni = BOTNICKS PTR.b1n = BOTNICKS.index(self.context.nick) PTR.int = 0 if PTR.INIT == 0: PTR._ST8 = 0 PTR.INIT = 1 print('<<<<<<> JUST INIT <>>>>>>') # test if initialized for first pass, fails on purpose PTR.STARTED = 1 PTR.FINISHED = 0 PTR.exe = 1 # set to recognize execution PTR.cyc = 0 # how many cycles within this operation, e.g. amount of bots pass through this function PTR.ops = 0 # how many completed operations, cycles reset, ops continue to count #ipdb.set_trace() for y in range(len(PTR.bni)): if not y == PTR.b1n: PTR.kbr[y] = 0 else: PTR.kbw[y] = 1 PTR.who = self.context.nick MSG=PTR.fbu.pop() PTR.what = MSG PTR.fin+=1 NEWBOT=','.join(list(self.context.config.botnet.keys())).split(',')[PTR.b1n] print(PTR.bni) print(PTR.bna) print(PTR.b1n) print(PTR.bni[PTR.b1n]) print(PTR.bna[PTR.b1n]) print("WHO:{} NEWBOT:{}".format(PTR.who,NEWBOT)) self.context.privmsg(PTR.chn,MSG) if PTR._ST8 <= 5 and PTR.int == 1: INTERRUPTED = 0 PTR.int = INTERRUPTED PTR._ST8 = 3 @irc3.event(irc3.rfc.JOIN) def welcome(self, mask, channel, **kw): if LOCK_KRYLON == 1: B0T = self.context B0TNAMES=','.join(self.context.config.botnet.keys()).split(',') B0TN1CKS=[] for _ in B0TNAMES: B0TN1CKS.append(self.context.config.botnet[_].nick) for i,B0T.nick in enumerate(B0TN1CKS): if B0TN1CKS[i] == B0T.nick: NFLAG=1 for _ in READY_BOTS: if B0T.nick == _: NFLAG=0 if NFLAG==1: READY_BOTS.append(self.context.nick) BOTCNT = len(self.context.config.botnet) if len(READY_BOTS) == BOTCNT: BOTNICKS=B0TN1CKS BOTNAMES=B0TNAMES TOTAL_BOTS = BOTCNT; BOT=self.context CHN=channel k=KRYLON(BOT,CHN) KRYPTR.append(k) self.spraying(mask,channel,**kw) @irc3.event(irc3.rfc.CONNECTED) def connected(self, **kw): if LOCK_KRYLON == 1: self.context.join(self.channel) @irc3.event(rfc.PRIVMSG, iotype="out") def krylon_event(bot, mask=None, event=None, target=None, data=None): NICK=bot.context.nick CHANNEL=bot.channel MSG="CHANNEL: {} event out: {}".format(CHANNEL,NICK) print(MSG) # ipdb.set_trace() PTR = KRYPTR[0] B0T=bot.context B1N = PTR.bni.index(B0T.nick) print("OUTPUT:{}".format(bot.context.nick)) @irc3.event(irc3.rfc.PRIVMSG, iotype="in") def on_privmsg(self, mask=None, data=None, **kw): # B0T=self.context # print(data) bot = self NICK=bot.context.nick CHANNEL=bot.channel MSG="CHANNEL: {} event out: {}".format(CHANNEL,NICK) print(MSG) # ipdb.set_trace() PTR = KRYPTR[0] B0T=bot.context B1N = PTR.bni.index(B0T.nick) print("INPUT:{}".format(bot.context.nick)) WTF=0 if mask.nick == 'd': self.context.privmsg('#b0ts3x','dont interrupt me mofo') PTR.int = 1 PTR.FILE_BUFFER=[] for _ in PTR.KRYLON_FILE: PTR.FILE_BUFFER.append(_) PTR.fbu = PTR.FILE_BUFFER PTR.INIT = 0 PTR.fin=0 PTR.b1n=0 PTR.FINISHED = 0 self.spraying(mask,channel,**kw) return if PTR.who == mask.nick and PTR.STARTED == 1 and PTR.FINISHED == 0 and PTR.what == data and PTR.fin < PTR.fli: PTR.fin+=1 PTR.b1n+=1 if PTR.b1n == len(PTR.bni): PTR.b1n=0 PTR.who = PTR.bni[PTR.b1n] MSG=PTR.fbu.pop() PTR.what = MSG NEWBOT=','.join(list(bot.context.config.botnet.keys())).split(',')[PTR.b1n] print(NEWBOT) bot.context.config.botnet[NEWBOT].privmsg(CHANNEL,MSG) if PTR.fin == PTR.fli: sys.exit(0)