krylon/3.mind.txt

255 lines
15 KiB
Plaintext

# -*- 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 = ['▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄', '█ █', '█ █', '█ █', '█ █', '█ ░ ░ █', '█ ░ █', '█ █', '█ ░ █', '█ ░ █', '█ ▐ ▌ █', '█ █', '█ ░ ░ █', '█ ░ ░ █', '█ █', '█ ▒ ░ ▌ ░ █', '█ ▌ ▌ ░ █', '█ ░ ▒ █', '█ ░ █', '█ ░ ░ ▌ ░ █', '█ ░ ░ ░ █', '█ ░ ░ ░ ░ ░ █', '█ ▒░ ░ ▒ ░ █', '█ ░ ░ ░ ▒░ ░ ░ ░ ▒ █', '█ ▒ ░ ░ ▒ ░ ░ ▒ ▒ █', '█ ▒ ░▒▒░ ░ ▒ ▒░▒ ▒ ░ ▒ ░ ▒ ▓ █', '█ ▓ ▒ ▓▓ ▓ ▓▒▓ ▒▓▓▒▒ ▒ ▓▓▒▒▓▓ █', '█ █ ██▒░ ▌ █ ▓█▓█▓███▓▓▒ ▓ ▓███▓██▒ █', '█ ▐▄ ░▒▒░▌ █ ░███████████▒▀ ▄█████████▓ █', '█ ▄▀ ▓███▓▄ ▓▐█ ▐███████░▀▀▄▄▄█████ █████▒ █', '█ ▀ ▐██▌██▓▒▄▄ ▄█ ░███████▓███████████████████░ █', '█ ▄▒█▌ ▒██▒▄▀█▓▓░▒▓▄▒ ▐ ░██████▀▀▀█▀██ ████████▓██████ █', '█ ▄░▓▒░█▄▒▌░██▓██░▀███░█▓▐▐▌ ░█▀ ▄▄█▌▓█████ ███████████████ █', '█ █▄▀░██████▒████▀ ▀▀██░██▄ ░█████▒███████████████ ▓█████▌ █', '█ ▐▒▌░▀█░░█▄░███ ▀▀█▌░ ███████████ ███▒███████▀▒█████ █', '█ ▀ ▀▀█████ ░ ▄█▄ ░▒█ ▀██████▓███ ███▀█████▌ ░████░ █', '█ ▌█▀▄▄ ▀██▌▄ ░▌▐███▌ ▀▓█▄ ██████▓███ ███ █████▌ ▀███▐▌ █', '█ ▐▓██▓▄█▀▄▄ ▀▀██▄ █████ ▄█ ▀██▄ ▀█████▓███ ███░▐█████ ████ █', '█ ▄▓▒█▀█████▄ ▀▀▄▄ ▀░▐██▓██▒▄█▒ ░ ▀█░▄ ▀██████ ███▀░██████▌ ▐███ █', '█ ▄▓▌██░████████░ ▀ ██████▓█▀ ▄▒ ▄ ▀░ ▀█▓██████▄▀▓▀████▒█████▌ █', '█ ▄▒░█░ ▀▐██░░█████ ░▄▄▄░ ███▒██▀ ▄█▒▌ ░█▌ ▄ ░ ▒██████▀ ▄▓███░███▐██ █', '█ ▄▀▀ ▀█████ ████▒█████▌ ██▐███ █ ░██▀▀▀█░▀ ▀░▀ ▄████▓░ ██████ █', '█ ▀▄ ▀▀████████▓██▀▄▓█ ████▌ █▓ ▄█▄░░███▄▄ ░▄█████▒ ███████ █', '█ ▀▀▄▄ ▀▀▀██▀▀▀░█████ ░██ ▀█▌ ▀██▓█▀▀▀██▀ ░ ██▒█▀░ ███████ █', '█ ▀▀▄▄ ░███████▌ ▀ ▀ ░▀██▌████▄░▀ █', '█ ▀▀▄ ▀▀████▀ █████████▄▒▀ █', '█ ▀▀▄▄ ░ ▀ ███████████▄▓▀ █', '█ ▀▀▀▀ ▐█▄ ████████ ▄█▀ █', '█ ▄▄▄▀ ▓▄ █▄██ ▄▄▀▀ █', '█ ▐░█▓░▄ ▀▓ ▄ ▀▀▀▀ █', '█ ▄▄█▀▀▒▄ █▓▄ █', '█ ▐░████▄▀▓ ▀█▄ █', '█ ▄▄▄▀▀▀▓ ░▒▄▄ █', '█ ▐ ░████ ▀▀▀ █', '█ ▄▄░▀▀█▓▀ ░▓█▄ █', '█ █ ░███▄▄ ▀▀▀█▄ █', '█ ░ ▀████▓▌▒▓▄▄▄ █', '█ ▐░▀▄▄▄▄ ▀████▄ █', '█ █▌▒▓███▄ ▀▀▀███▌ █', '█ █', '█ Medium 2015 █', '▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀']
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)