From 47da3cdccdcb12a938ea951d1c1961c1fb45c882 Mon Sep 17 00:00:00 2001 From: decoded Date: Sun, 11 Jul 2021 07:51:58 +0000 Subject: [PATCH] revision --- 0.krylon_config | 72 ++++++++ 1.goth.txt | 264 ++++++++++++++++++++++++++++ 2.fh.txt | 254 +++++++++++++++++++++++++++ 3.mind.txt | 254 +++++++++++++++++++++++++++ 4.ghost.txt | 254 +++++++++++++++++++++++++++ 5.hack.txt | 254 +++++++++++++++++++++++++++ 6.tskull.txt | 254 +++++++++++++++++++++++++++ 7.acid.txt | Bin 0 -> 7995 bytes README.md | 81 +++++++++ plugins/b33p.py | 19 +++ plugins/emote.db | 426 ++++++++++++++++++++++++++++++++++++++++++++++ plugins/greet.db | 106 ++++++++++++ plugins/krylon.py | 254 +++++++++++++++++++++++++++ plugins/symbol.db | 4 + requirements.txt | 5 + run.sh | 130 ++++++++++++++ run_artop.sh | 22 +++ run_debug.sh | 1 + tool_ans2utf8.sh | 5 + tool_dconvutf8.py | 214 +++++++++++++++++++++++ 20 files changed, 2873 insertions(+) create mode 100644 0.krylon_config create mode 100644 1.goth.txt create mode 100644 2.fh.txt create mode 100644 3.mind.txt create mode 100644 4.ghost.txt create mode 100644 5.hack.txt create mode 100644 6.tskull.txt create mode 100644 7.acid.txt create mode 100644 README.md create mode 100644 plugins/b33p.py create mode 100644 plugins/emote.db create mode 100644 plugins/greet.db create mode 100644 plugins/krylon.py create mode 100644 plugins/symbol.db create mode 100644 requirements.txt create mode 100755 run.sh create mode 100755 run_artop.sh create mode 100755 run_debug.sh create mode 100755 tool_ans2utf8.sh create mode 100755 tool_dconvutf8.py diff --git a/0.krylon_config b/0.krylon_config new file mode 100644 index 0000000..36f5e50 --- /dev/null +++ b/0.krylon_config @@ -0,0 +1,72 @@ +[bot] +nick = krylon +username = krylon +realname = krylon +host = ircd.chat +port = 6697 +channel = #b0ts3x +version=1 +ssl = true +ssl_verify = cert_none + +includes = + irc3.plugins.command + irc3.plugins.asynchronious + irc3.plugins.storage + irc3.plugins.uptime + irc3.plugins.ctcp + irc3.plugins.cron + irc3.plugins.logger + irc3.plugins.userlist + plugins.b33p + plugins.krylon + +flood_burst = 0 +flood_rate = 1 +flood_rate_delay = 1 +storage = json://.krylon_database + +[irc3.plugins.command] +cmd = ? +guard = irc3.plugins.command.mask_based_policy + +[irc3.plugins.command.masks] +d!*dr1p@* = all_permissions +* = view + +ignore_list = + g1mp_!*@* + g1mp!*@* + ken_!*@* + ken!*@* + +[bot_1] +nick = 6yl6n9ro5_1k_ +username = 0ykblr3n4o +channel = #b0ts3x + +[bot_2] +nick = 5rnko_y2_lb20 +username = nkl15yf1or +channel = #b0ts3x + +[bot_3] +nick = b3n__lor54ky7 +username = k8lon807ry +channel = #b0ts3x + +[bot_4] +nick = 4ley5_nrck_ob +username = ykol1n7rdb +channel = #b0ts3x + +[bot_5] +nick = fyf5_kolr_n74 +username = ofb9nr2ylk +channel = #b0ts3x + +[bot_6] +nick = y11r_36_l7kon +username = ny5flbk8or +channel = #b0ts3x + diff --git a/1.goth.txt b/1.goth.txt new file mode 100644 index 0000000..ed6b938 --- /dev/null +++ b/1.goth.txt @@ -0,0 +1,264 @@ +# -*- 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 = [' .', ' ;', ' l', ' :l', ' ll', ' :$:', ' il', ' l$.', ' l$$.', ' _ .,┌-;lX$Xl-,._', ' .┌\\$$$$$$$$$$$$$$$$$$$S%┐,', ' .d$$$$$$$$$$$$$$$$$$$$$$$$$$$b,', ' d$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$b', ' <$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,', ' :$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$7', ' .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$K', ' j$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$b.', ' l$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$7', " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$j\\⌂'", ' \'^^"└*%jj7$$$$$$$$$$$$$$$\\$$$j*┘²\'^`', ' ,┐. ./$$$$$$$$$$$$$$$b,``', " '²┘j$$$$$$$$$$$$$$7'", " * .┐ Y$$$$$$$$$$$7' .┌⌐ * ,", " .,┐l7' l$$$$$$$$$$7 `└*Sb, ,7 :", ' j$$$$$$$$$$Y .$', ' _┌t$$$$$$$$$$$| ;l$S/a┐. _ .,┌\\$$', " '└7$$$$$$$$$$$$: :l$$$$$$$$$$$$$$M", ' .,┌\\$$$$$$$$$$$$$$$: l$$$$$$$$$$$$$$M', ' ,_ `/$$$$$$$$$$$$$$l :$$$$$$$$$$$$$$├', " `$./┐. 7$$$$$$$$$$$$$$ ?$$$$$$$$$$$$$'", " 7$$$$> .$$$$$$$$$$$$$$b Y$$$$$$$$$$$'", " . `$$$$$ ;$$$$$$$$$$$$$$$l :$$$$$$$$$$'", " `$$$'/$$$$$$$$$$$$$$*└' J$$$$$$$$$'", " : `7$$$$$$$$$$$$a┌. j$$$$$$$$$'", ' . .┐ `$$$$$││$$$$$$$t,.┌d$$│$$$$$├/', " : .7' `$$>. `^''²┘***┘ ²'^` /$$7", " :l l `$$$b. '\\%a¬┐,┌,.-' t$├'", " d$ : `7$$$k┐.`'²²²'` .d$$/", ' $.: . . `7$$$$$a ┌ ,,┌t$$7` .', " ;;l ` \\ '$$$$$$$$$$$$$7 / +", " $$$: . . '└⌂$││jj$⌂┘' .t(,_ .", " $$$ '/┌,. _.j.$S/┐,. ,┌t$$SS$' ,d'", " $$; $$²┘ $$$$$$$$$$$$St/⌐┌,,┌aS$$$$$$$' .,s├'", " └'. . ` . `'┘/y .┐t$$$$$$$$$$$$$$$$$$$$$$$$$$|:$├+' '", " ┌#$ `' ?$$$$$$$$$$$$$$$$$$$$$$t\\$jj$ └~ ./", " $$$ $>. ?$$$$$$$$$$$$$$$$$$$$$$, _.┐t'", " $$$ , `$$$. l$$$$$$$$$$$$$$$$$$$$$$*/#┐ S$$$$7'", " $$$ l. `$$$: :$$$$$$$$$$$$$$$$$$$$$$$\\. `.$7'", " $$$: ┤; `$7 . ┤$$$$7┘²'^``^└4j$$$$$$$'. <├' ,", ' $$$: ┤$. : ` /$ `,$$$ a%S$$$$S% ?$$$$$$$( :.: _ ,_', ' $$$| l$l : . \\` `.. M$$$ $$$$"$$$$ l$$$$$$$\' l$L ,$l ,├\' . .', ' $$$| l$$; l b, \' ` :$$$ └*⌂b $⌂┘\' |$$$$"\\├ .$$$b`\\l ,Q\' d\'', " $$$l i$$$. :b `$b, ` $$$ $S%> .at$ :$$$$$. J$S$$$t: ,$├ ,d' :(", " $$$l i$$$$\\ $b,`$$b,_ °4j $'.┌ b`4$ .$$$$7 _,┐$$$$ .$$l d7' :$", " ?$$$ |$$$$$$$$$$$$$$$$t┌._ |: j$$x$$b` $$7' d$\\`$$$$$l .$$$| j$: j |'", " `?$ |$$$$$$$$$$$$$$$$$$$$$t. L ~┘└$$$$ 7' d$$$$$$$$j7' .$$$$: $$t $", " ` :$$$$$$$$$$$$$$$$┘²'``` `b b%┌s%$$$$ `'²┘└²²└j$' .d$$$$$$\\$$$$7", " :$$$$$$$$$$$$$$$$ d$$$Y t$\\`$$$$$$7²'.t$$.Y$$$$b |$ t$$$$$$$$$$$$7'", " `4j$$$$$$$$$$$$$ $$$$'J$$$b.\\jj/'.d$$$$$$:$$$$$ |$b`$$$$$$$$j7┘'", " ~└/├$$$$$$$$$ $$$$:$$$$$├t, .$j│$$$$$┤|$$$$$ l$$$$$$jS*┘'", " ~└*⌂S$$$j.`²²² `²²²²,┌/$t┌,_`'²²² '²²²²' l⌂∟*┘²'", ' $$$Q/`l$l', " $$┘'. ,┌┌", ' .┌t$$\\$$$', ' $$$$$$$t.', ' $$├`$$$$$', " $$t ljS┘'", ' j└~ .┌at', ' /t$\\`$$$', ' l$$$$$$$$', ' ├$$$$$$$$', " _'└*⌂S⌂└'"] + 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 + B0T = self.context + B0TNAMES=','.join(self.context.config.botnet.keys()).split(',') + B0TN1CKS=[] + for _ in B0TNAMES: + B0TN1CKS.append(self.context.config.botnet[_].nick) + + BITCH=1 + for _ in B0TN1CKS: + if _ == mask.nick: + BITCH=666 + + if BITCH == 1: + self.context.privmsg('#tcpdirect','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) + diff --git a/2.fh.txt b/2.fh.txt new file mode 100644 index 0000000..50da042 --- /dev/null +++ b/2.fh.txt @@ -0,0 +1,254 @@ +# -*- 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) + diff --git a/3.mind.txt b/3.mind.txt new file mode 100644 index 0000000..4f6140d --- /dev/null +++ b/3.mind.txt @@ -0,0 +1,254 @@ +# -*- 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) + diff --git a/4.ghost.txt b/4.ghost.txt new file mode 100644 index 0000000..ba22268 --- /dev/null +++ b/4.ghost.txt @@ -0,0 +1,254 @@ +# -*- 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 = ['MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMms:-/NMMMMMMMMMMMMMMMMMMMMNmmdddmNMMMMMMMMMMMMMMMMMMMMMy+ohMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMN+....`sMMMMMMMMMMMMMMNds+:.--:::::-.-:oymMMMMMMMMMMMMMMh`...-yMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMmo-.` ..mMMMMMMMMMMNy/.-/shmNNNNNNNNmmho/-.+hMMMMMMMMMMN-.` `..:hMMMMMMMMMMMMMMMMMM', 'MMMMMNMMMMMMNh+.`` `.dMMMMMMMmo.-odNMMMMMMMMMMMMMMMMMNh+--sNMMMMMMN/`` `.:smMMMMMMMMMMMMMMM', 'MMMMMd+sys+:.` `/dMMMNo`:hNMMMMMMMMMMMMMMMMMMMMMMMms-.yMMMNy. `.:oydddyhMMMMMMM', 'MMMMMMh:` ```-+s-.yNMMMMMMMMMMMMMMMMMMMMMMMMMMMmo`/y/. ``.sMMMMMMMM', 'MMMMMMMNmysosyhdh+ -ohmmmmd/ :mMMMMMMMMNNMMMMMMMMMMMNNMMMMMMMMh. +hhhyo:` -+so+/:/+ymMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMo :dNMMMMMMd`:mMMMMMNds/::/ohNMMMMMh:..-yMMMMMMMd`-NMMMMMms. :NMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMdsNMMMMMMMN-`dMMMMNm/` `:dNMMN` dMMMMMMMy +MMMMMMMN+hMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMy oNMMMMN: .mMMNo. `/NMMMMMMMN-`NMMMMMMMMNMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMM/ hMMMMMm` dNMMMmhhdNMMMMMMMMNo yMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMM: mMMMMMNo :mMMMMMMMMMMMMMMMMMMs sMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMM/ dMMMMMMNs-` .omMMMMMMMMMMMMMMMMMMMo yMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMo yMMMMMMMMNhyooshmNMMMMMMMMMMMMMMMMMMMN+ dMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMy oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN- NMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMm :NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm`-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMM.`mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMM+ yMMMNhdMMMMMMMMMMMMMMMMMMMMMMNNMMMMN: dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMm`-mdo- oNMMMMMNMMMMMMMMNMMMMMMh-+hNMh`:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs -./o +NMMMm+sNMMMMMNh:yNMMMN: /.-o-`mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMsymMm :NMmo.``hMMMMd/`/.-yNMh /MNh/-dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM -mo.-hm..mMm+`:dMNo.-y: dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.`..yMMMd`:s..hMMMMMNo` /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-.sNMMMMMs `sNMMMMMMMMNomMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdNMMMMMMMMsmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM'] + 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) + diff --git a/5.hack.txt b/5.hack.txt new file mode 100644 index 0000000..b129f83 --- /dev/null +++ b/5.hack.txt @@ -0,0 +1,254 @@ +# -*- 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 = [' ┌------------------------------------------─┐', ' d"\' \' \' H A C K >> T H E >> P L A N E T \' \' \'"a', " '$r └------------------------------------------─┘ e$'", ' .a$ $a.', ' .e$$²² . ²²$$e.', ' $$4. "$s .4$$', ' `²$$$$$$$$$$sp. sP$#\'" .ps$$$$$$$$$$²`', ' ²²²$$$$ :$$$s_ o $$$$²²²', ' `²$$$$$$$$$$sp. .ps$ "s$$$$s : $$$$', ' $$$ $$$$$ ···$$$$e --──── .── |$$$$| ---─────────┘ $$$$1', ' . "$ss" ░ $$$$ ░ $$$$B$┐ ░ a$$ |$$$$\' ░░░░░ ░░ ░ $$$$0', ' .$ $$$$ $$$$ "$$ $$$ ░ °X°" $$$$', '$" ░ .eP7$²²²²²7e$$$$ee\' $$$$ "$$e.$$$ ░ .$$$²² .eP7$²²²²²7e$$$$$$$$$$7\' //', 'ss ░░ $$$$² $$$$ $$$$ 1 ╚$$$$$ ░ $$$$ $$$$² $$$$1 .', '`²²"\'.r ░░░ $$$$ ░░▓▓▓ $$$$ $$$$ O░ $$$$ $$$$ `"²$ $$$$0 ░░░ $.', ' .a$ ░░░ 0└$$7, ▀▀▀ $$$$ $$$$ 1▓▓░ $$$$ $$$$ └$$7, ░▓▓▄ $ $$$$1 ░░░ "$', '.e$$²² ░░░░1 $$$: \\s$$$$$$ $$$$ ▀▀ $$$$ $$$$ $$$: ▀▀ $ $$$$ ░░░ ss', '$$4. `"└└└=-- `$$$$ $$$$ .a$e"\' e"$$$w\' `"└└└=s// $$$$ ░░░ r."²²`', '`²$$$$$$$$$$sp. $$$$ ░ `²$$sP²²²²" `` "$ $$$$ ░░░ $a.', ' ²²²$$$$ ░░░░░░░ "└$$ ░░ ░░ ░░░░░░░ `"└$$ ²²$$e.', ' 1$$$$ ░░░░░░░░ "$ ░░░░░░ ░░░░░░░░░░░░ `$ .4$$', ' 0$$$$ ░░░░░░ e\' ░░░░ $$$$²² \'e ░░░░ " .ps$$$$$$$$$$²`', " ░ 1$$$$ ░░░░░░░ $$o.. ░░░░ $$$$ ..o$$ ░░░░ '7$$$$$$ $$$$²²²", ' $$$$ `²$$$$$ ░░ $$$$ $$$$$²` $$$$ ░░ $$$$', ' \'7$$$$$$$$e7²²²²²$7Pe. "$$$$ $$$$ ²²²$$$$e7²²²²²$7Pe. $$$$e ▄▓░ $$$$1░░░', ' $$$$ 1²$$$ $$$$ ""$ $$$$ $$$$ ²$$$ $$$$B$┐▀▀ $$$$0░░░', ' ░ $$$$ ░░░░░0 $$$$ $$$$ ░░ $ $$$$ ░ $$$$ ░░░░░ $$$$ $$$$ "$$ $$$$1░░', ' $$$$ ▀▓▓▓1 $$$$ $$$$ ▓▓░ $ $$$$ ▓░ $$$$ ░▓▓▄ ,7$$┘ $$$$ "$$e.$$$$', " \\ '7$$$$$$╗ 0.$$$$ $$$$ ▀▀ $$ $$$$ ▀ $$$$ ▀▀ :$$$ $$$$ ░ ╚$$$$$$7' //", ' $$$$ "$$. $$$" $$$$ .$$P $$$$ 1 $$$$ --=┘┘┘"` $$$$ $$$$$', ' $$$$ $$$$$$$" $$$$s$$╝ $$$$ 0 $$$$` "²²$ $$$$sss// "$$$', ' $$┘" "²²" $P╝" "e$$ 1²²$$$$ "$$$ $$┘"` $$', ' $" ` ┌─────────"───── -- - "$ ── "╚$$ ───--- ²²² ── $" ------··· `" 5m', ' : " "$', " o '"] + 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) + diff --git a/6.tskull.txt b/6.tskull.txt new file mode 100644 index 0000000..bd7352f --- /dev/null +++ b/6.tskull.txt @@ -0,0 +1,254 @@ +# -*- 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 = [' .................', ' .syhhso++++++++/++osyyhys+.', ' -oddyo+o+++++++++++++++o+oo+osdms:', ' :dmyo++oosssssssssssssssooooooo+/+ymm+`', ' hmyo++ossyyhhddddddddddddhyyyssss+//+ymd-', ' -mho+oosyhhhddmmmmmmmmmmmmmmddhhyyyso+//+hN+', ' my+++syhhhhdmmNNNNNNNNNNNNmmmmmdhhyyyyo//+sd:', ' hs//+oyhhhhdmNNNNNNNNNNNNNNNNNNmmdhyhhhyo//++y', ' s+++shddhhdmmNNNNNNNNNNNNNNNNNNNNmdhhhdhyo/++/', " 'hs+shmmmddmNNNNNNNNNNNNNNNNNNNNNmddddddhs+oh/", ' shsshdmmmmmNNMMMMMMMMMMMNNNNNNNNmmmmmmdhssdh-', ' +ssohdmmmmNNNNNMMMMMMMMNNNNNNmmmmmNNmdhhhs:`', ' -+oo++////++sydmNNNNNNNNNNNNNNNNNNNdyyys/--://+//:', ' d/+hmNNNmmdddhhhdmNNNNNNNNNNNNNNNmdhyyyhhhddmmNmdyd-', ' ++--+ymNMMNNNNNNmmmmNNNNNNNNNNNmdhddmNNMMMMMMNmhyss', ' /d+` -+ydmNMMMMMMNNmNMMMMMMMmmmmNNMMMMMNNmh- :sdo', ' sNo ` /ohdmNNMMMMNNMMMMMNNNMMMMMNmdyo/ ` hNh', " M+' ``-/oyhmNNMNhNMNhNMMMMNmho/ ` 'MN/", " ar' `-+osydh0w.nzmNNmho: 'co:", ' +o/ ` :oo+:s :+o/-` -dds', " :hdo x `-/ooss:':+ooo: ` 0 :sdm+", " +dNNNh+ :ydmNNm' `sddmyo +hmNmds", ' dhNMMNNNNmddhsyhdmmNNNM: NNmNmhyo+oyyyhmNMMNmysd', ' adNNNNNh+/++rhmMMMMNMNh cNNNNNNNmho++++yddhysso', " `:sNMMMMN' `mNMNNNd/`", ' XXXXXXXXX y/hMMNm/ .arco. -hdmdy: ` XXXXXXX', ' XXXXXXXX `o+hNNds. -ymNNy- .yhys+/`` XXXXXX', ' XXXXXXXX +-+//o/+odMNMMMNdmh++////-/s XXXXXX', ' XXXXXXX mhNd -+d/+myo++ysy/hs -mNsdh/ XXXXXX', ' XXXXXXXX mhMN+ dMm-/-smy-::dMN/sMMmdo XXXXXX', ' XXXXXXXXXX NMy+NMMh oMMMs yMMMyNMMs+ XXXXXXX', ' XXXXXXXXXXX dy-hMMm+dMMMdoNMMh ydo XXXXXXXXX', " XXXXXXXXXXXXX smm 'NMMy dms sm XXXXXXXXXX", ' XXXXXXXXXXXXXX XXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXER0'] + 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) + diff --git a/7.acid.txt b/7.acid.txt new file mode 100644 index 0000000000000000000000000000000000000000..92ebb87ef2a6bb8797330a108ba640866919ae05 GIT binary patch literal 7995 zcmbVR%W7L!6m>cb?^1~gmup#)IZ$A~fUWi&eNFxrfvDH;u&Pr&f7Z63! zrO!6~1w}X9P&#TVOEF{+zL}@SXg{2ivJk0NCpXv1fqK{LW1$S9;B`|=t`ex;?f6EP_9ihfPG{eT9hq)R^0u`(~ECwDP2TvB-y z+EmWq8HASlH<`4cz3PP7>)&hA%_vStpe%C_HAYx&IOu$E)jA*XPobT2SC<%CMpkHz zzX=JS;)sG{inz9sU2}@j8H5h(TM0wO_KXb6!=HbT4ysN|O;u8~m>ZT`^Y+jh^u)Jc zQ^xddE0@dfk}pe($N0;P4T2n4$@cd6Xjp2+%jXdN-5c+iI(K5?N4sJ2xJ@!ouM9y0 zQ08NKQxIc{l;KO#idXFbL)9nx`CtNtGTf2;=!U&LzOVCCYdUsu@HE6*kr(UIcBUS8 zZUW|qAk2%xpcsVNtG_U;0yR6ywTOqfWcow*pysU0&yF*)}8aF2zHp7Z(-{mlf$B3TaB7u48Gk~;hS1Ua0F z*fm3gX~#(r;OnS`&QCs1Oo0nUie&+^>lIJj%yAT`TKL%i(or0OGUPXZouE2tru`Xdp8DC=cxxn!5^?z>QJj#UMmmGB$HeM;xDI5%{Yx zyiSl)2t1gu7TRFx3%8NM!MxgMD_RP?rt$!fFSKLAkYMvwe6E~EImL*P3G9v=CXV)%>ipG9()mPo;s#& zA}x0i6s=PxJ*gxT(RCYX1ySRY2=E? zyFWF<>$A0~Tvt+O_V&VvNKvhWTFX#_A+GNR-*`PBmTTHm9LR>)&Kan$utk~zWdIdu zjftJ5V`Q!S?+_`dP4tm5eu)z3FiON!Mp=f~z;-n}8^WulnV%Smu&!F0!%(-U8^*Zx zzyn!ze=s10Evf%(bsgof(fpd5lYPm-Iv0%QxlW5mL;XYS(TRq+HLT6puKFre`bto+PR@_Pv(7G61LKqpB*F#~#PcbmLYp%6yrOv13 z40DM-Okwmoclog71+H!P(w4@#OtpBa4e3%|(pqw;;)t{Zo#mxwryw2oqulL5t!&sb zxH3SJf>`o~kg7`fB+5*8mNTj#^Um#w6-{FLftW;3(it5?aeKO7D~yd&AuAiT5Ed~H z&%|`i!+6fJtXl(2#wNIG23Hl&S&jHOL!w^Dccc}eOi`kddM2?ndI5gfW0P2SdVVxiZ9TD@y?5cdR9W)cx3LAumf-96bv6yhv()M-5%lyat(^i?Vv zZEJNlB5CWf!aoye#vn-F%{TVM5`C^20|unRH6qDwBE*y;DbK7d? zl(;&+3jn#t>F_4-y6X#=O~fkD&R+dZd!l}~lhf9RGUSwNl;MY?ZaiDWb41N?ydYYW z$z*Sji4*TbE&7<>=zl-S42l<+1!W$tH2U(2M-@`+5ghc(J`T71R*f!DkZ-qS?IaU1 z5OnyKM8=~cheVCjs3$4#YJ|=*Q ) | \ yd/ .hdh.hdhshddddddddddy + |__|_ \ |__| / ____||____/\____/|___| / `dh. `yddo:dd: ``-/+odddddo + \/ \/ \/ :hy +dddyhddhyo:. .sddddy: + +hy hddhdddhsyhdhohdddy:` + hdd` hdd/+hdhs//hddddy/` + .dddo`odd` .+yddddddh/` + `.--:://+-ydddyyds `+ddddh+` + .oso+. `:oyhhhddddddy.-odddd+ `:ydddh+. + :hddddh+`+ddddhyso++//+../ohddhyydddds. + +hdddds::..sdd/.` -hso+oosyyhyo+- + `odddhshy` `ody+-` -hdddy- ````+dh+ + `sdddy- -ys. /hddhs/-` .:+s/ -dddo + `yddh. `oy/` .+hddddhso/-..```````.:ydddd+`++. + `/hy+.` :yy+.` `/shdddddddhyyyssyyhddddddd-+dh/` + `/yhs-` `/yhs/.` ./shddyyyyyhdddddddddddo`oddds + `++-/yhy+-` -ohdy+:`` `-:+oyyysddddddddho-.odddds + .sddhs:-+hdhs/.`.:shdhyo:.`` `..-/+osso/:.-ohddddd: + `/hddddy- -/shdhs/--/ohdddhys+/:--..--:+shdddddddy + .sddddh/ `-+yhddyo+osyddddddddddddddddddddddd: + /hddddo` `-/oyhdddhddddddddddddddddddddds + .sddddy- `-/+shdddddddddddddddddddh. + /hdddh/ `.:/+osyhhhhhhys+/. + .:+syyy` .sddddo` /o. + .+ydddddddho- `-+ddddy- sdd+ + -sddddddhsoydddhhdddddh: .----. hddy + -sddddds/.`ohdddddddddd+` .:oyddddddddy/` .ddd+ + `odddddo. .ydddddhddddh- -+ydddddddhhhddddh/ +ddd- + /hddddh: .yhddo-.``odd/ .+hddddho/-.` `:ohhho` `hddh + -ydddddd- `yddd: od. -sddddh+-` `/yho oddd: + `+ddddddd+ +ddd: .d` .sdddds:` -ddodddy + -ydddh/hdd. `hddo h- `/hdddy- yddddh. + ydddo` hhy -ddh` so .` `sdddh/` .ddddd: + ddd+ shy :ddo -h/.``:/ `ydddy. sdddd/ + hdd: /dh :dd/ :hhyhs` oddds` odddd/ + odd/ `dd` .dd/ `/o/` `ddds` `sdddh: + .hdo od/ sdo .ddd- -ydddh- + +dh` `hy -dh` `hdd- `+hddds. + `yd+ /d/ od+ +dd/ `/hdddh/` + .hd/ oh- `yh- `sdh. ./ydddds- + -hd/ `yh- .yh. `odh+. `-ohddddy:` + .yd/ `yh- .yh: :yhhs+:----/oydddddy/` + .sdo` .yh: `sdo` `/ydddddddddddddy/` + `ody. `oy/` `+hy:` `-ohddddddddy/` + /hs-` `+sy- -yds- `` `./shdddddho- + -yy+. :hdo` `/hds:` -:.`` ``./sddddddho:` + `odh/` -ydh/` .+hdy+-` .syysyhddddddyo:` + :hdy- `+hdy/` .+hddhs+:---yddddddy+sd/ + `ohds- .ohdy/. `:shddddddddddddd:.ydh` + .shds:`-sdddo:` `:oyhhdddddddd+hddd- + -sddho::shddho:` `.-://///ohddh- + .+hdddsoydddddyo/-.` `odddy. + -ohddddddddddddddhhyhhddd+ + -+sdddddddddddddddddh- + .:+osyhdddddhys+` +``` + +# INSTALL: + +## NOTES: +``` +- install python3 +- install python3-pip +- install python3-venv +``` + +## COMMANDS: +``` +- `git clone --recursive https://git.tcp.direct/decoded/krylon` +- `cd krylon` +- `python3 -m venv .env` +- `. .env/bin/activate` +- `python3 -m pip install --upgrade pip -r requirements.txt` +- `bash run.sh` or `bash debug.sh` or `irc3 .krylon_config` diff --git a/plugins/b33p.py b/plugins/b33p.py new file mode 100644 index 0000000..06d79c9 --- /dev/null +++ b/plugins/b33p.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from irc3.plugins.command import command +import irc3 + +@irc3.plugin +class Plugin: + + def __init__(self, bot): + self.bot = bot + + @command(permission='view') + def b33p(self, mask, target, args): + """b33p an irc b0t, it should b00p back + %%b33p ... + """ + robostep='{}: b00p'.format(mask.nick) + roooboot = ''.join(args['']) + if roooboot == self.bot.nick: + self.bot.privmsg(target,robostep) diff --git a/plugins/emote.db b/plugins/emote.db new file mode 100644 index 0000000..fe80439 --- /dev/null +++ b/plugins/emote.db @@ -0,0 +1,426 @@ +¢‿¢ +©¿© o +ª{•̃̾_•̃̾}ª +¬_¬ +¯\(º_o)/¯ +¯\(º o)/¯ +¯\_(⊙︿⊙)_/¯ +¯\_(ツ)_/¯ +°ω° +°Д° +°‿‿° +°ﺑ° +´ ▽ ` )ノ +¿ⓧ_ⓧﮌ +Ò,ó +ó‿ó +ô⌐ô +ôヮô +ŎםŎ +ŏﺡó +ʕ•̫͡•ʔ +ʕ•ᴥ•ʔ +ʘ‿ʘ +˚•_•˚ +˚⌇˚ +˚▱˚ + ̿ ̿̿'̿'\̵͇̿̿\=(•̪●)=/̵͇̿̿/'̿̿ ̿ ̿ ̿ + ͡° ͜ʖ ͡° +Σ ◕ ◡ ◕ +Σ (゚Д゚;) +Σ(゚Д゚;≡;゚д゚) +Σ(゚Д゚ ) +Σ(||゚Д゚) +Φ,Φ +δﺡό +σ_σ +д_д +ф_ф +щ(゚Д゚щ) +щ(ಠ益ಠщ) +щ(ಥДಥщ) +Ծ_Ծ +أ‿أ +ب_ب +ح˚௰˚づ +ح˚ᆺ˚ว +حᇂﮌᇂ) +٩๏̯͡๏۶ +٩๏̯͡๏)۶ +٩◔̯◔۶ +٩(×̯×)۶ +٩(̾●̮̮̃̾•̃̾)۶ +٩(͡๏̯͡๏)۶ +٩(͡๏̯ ͡๏)۶ +٩(ಥ_ಥ)۶ +٩(•̮̮̃•̃)۶ +٩(●̮̮̃•̃)۶ +٩(●̮̮̃●̃)۶ +٩(。͡•‿•。)۶ +٩(-̮̮̃•̃)۶ +٩(-̮̮̃-̃)۶ +۞_۞ +۞_۟۞ +۹ↁﮌↁ +۹⌤_⌤۹ + ॓_॔ +१✌◡✌५ +१|˚–˚|५ +ਉ_ਉ +ଘ_ଘ +இ_இ +ఠ_ఠ +రృర +ಠ¿ಠi +ಠ‿ಠ +ಠ⌣ಠ +ಠ╭╮ಠ +ಠ▃ಠ +ಠ◡ಠ +ಠ益ಠ +ಠ益ಠ +ಠ︵ಠ凸 +ಠ , ಥ +ಠ.ಠ +ಠoಠ +ಠ_ృ +ಠ_ಠ +ಠ_๏ +ಠ~ಠ +ಡ_ಡ +ತಎತ +ತ_ತ +ಥдಥ +ಥ‿ಥ +ಥ⌣ಥ +ಥ◡ಥ +ಥ﹏ಥ +ಥ_ಥ +ಭ_ಭ +ರ_ರ +ಸ , ໖ +ಸ_ಸ +ക_ക +อ้_อ้ +อ_อ +โ๏௰๏ใ ื +๏̯͡๏﴿ +๏̯͡๏ +๏̯͡๏﴿ +๏[-ิิ_•ิ]๏ +๏_๏ +໖_໖ +ლ(´ڡ`ლ) +ლ(́◉◞౪◟◉‵ლ) +ლ(ಠ益ಠლ) +ლ(╹◡╹ლ) +ლ(◉◞౪◟◉‵ლ) +ლ,ᔑ•ﺪ͟͠•ᔐ.ლ +ᄽὁȍ ̪ őὀᄿ +ᕕ( ᐛ )ᕗ +ᕙ(⇀‸↼‶)ᕗ +ᕦ(ò_óˇ)ᕤ +ᶘ ᵒᴥᵒᶅ +‘︿’ +•▱• +•✞_✞• +•ﺑ• +•(⌚_⌚)• +•_•) +‷̗ↂ凸ↂ‴̖ +‹•.•› +‹› ‹(•¿•)› ‹› +‹(ᵒᴥᵒ­­­­­)› +‹(•¿•)› +ↁ_ↁ +⇎_⇎ +∩(︶▽︶)∩ +∩( ・ω・)∩ +≖‿≖ +≧ヮ≦ +⊂•⊃_⊂•⊃ +⊂⌒~⊃。Д。)⊃ +⊂(◉‿◉)つ +⊂(゚Д゚,,⊂⌒`つ +⊙ω⊙ +⊙▂⊙ +⊙▃⊙ +⊙△⊙ +⊙︿⊙ +⊙﹏⊙ +⊙0⊙ +⊛ठ̯⊛ +⋋ō_ō` +━━━ヽ(ヽ(゚ヽ(゚ヽ(゚゚ヽ(゚゚)ノ゚゚)ノ゚)ノ゚)ノ)ノ━━━ +┌∩┐(◕_◕)┌∩┐ +┌( ಠ_ಠ)┘ +┌( ಥ_ಥ)┘ +╚(•⌂•)╝ +╭╮╭╮☜{•̃̾_•̃̾}☞╭╮╭╮ +╭✬⌢✬╮ +╮(▽)╭ +╯‵Д′)╯彡┻━┻ +╰☆╮ +□_□ +►_◄ +◃┆◉◡◉┆▷ +◉△◉ +◉︵◉ +◉_◉ +○_○ +●¿●\ ~ +●_● +◔̯◔ +◔ᴗ◔ +◔ ⌣ ◔ +◔_◔ +◕ω◕ +◕‿◕ +◕◡◕ +◕ ◡ ◕ +◖♪_♪|◗ +◖|◔◡◉|◗ +◘_◘ +◙‿◙ +◜㍕◝ +◪_◪ +◮_◮ +☁ ☝ˆ~ˆ☂ +☆¸☆ +☉‿⊙ +☉_☉ +☐_☐ +☜ق❂Ⴢ❂ق☞ +☜(⌒▽⌒)☞ +☜(゚ヮ゚☜) +☜-(ΘLΘ)-☞ +☝☞✌ +☮▁▂▃▄☾ ♛ ◡ ♛ ☽▄▃▂▁☮ +☹_☹ +☻_☻ +☼.☼ +☾˙❀‿❀˙☽ +♀ح♀ヾ +♥‿♥ +♥╣[-_-]╠♥ +♥╭╮♥ +♥◡♥ +✌♫♪˙❤‿❤˙♫♪✌ +✌.ʕʘ‿ʘʔ.✌ +✌.|•͡˘‿•͡˘|.✌ +✖‿✖ +✖_✖ +❐‿❑ +_ +_Ꙩ +⨂_⨂ +〆(・・@) +《〠_〠》 +【•】_【•】 +〠_〠 +〴⋋_⋌〵 +の� �の +ニガー? ━━━━━━(゚゚)━━━━━━ ニガー? +ペ㍕˚\ +ヽ(´ー` )ノ +ヽ(๏๏ )ノ +ヽ(`Д´)ノ +ヽ(o`皿′o)ノ +ヽ(`Д´)ノ +ㅎ_ㅎ +乂◜◬◝乂 +凸ಠ益ಠ)凸 +句_句 +Ꙩ⌵Ꙩ +Ꙩ_Ꙩ +ꙩ_ꙩ +Ꙫ_Ꙫ +ꙫ_ꙫ +ꙮ_ꙮ +흫_흫 +句_句 +﴾͡๏̯͡๏﴿ O'RLY? +¯\(ºдಠ)/¯ +(·×·) +(⌒Д⌒) +(╹ェ╹) +(♯・・)⊃ +( ´`)☆ +( ´`) +(゜Д゜) +(・・) +(・A・) +(゚゚) +( ̄へ ̄) +( ´☣///_ゝ///☣`) +( つ Д `) +_☆( ´_⊃`)☆_ +。◕‿‿◕。 +。◕ ‿ ◕。 +!⑈ˆ~ˆ!⑈ +!(`・ω・。) +(¬‿¬) +(¬▂¬) +(¬_¬) +(°ℇ °) +(°°) +(´ω`) +(´◉◞౪◟◉) +(´ヘ`;) +(´・ω・`) +(´ー`) +(ʘ‿ʘ) +(ʘ_ʘ) +(˚இ˚) +(͡๏̯͡๏) +(ΘεΘ;) +(ι´Д`)ノ +(Ծ‸ Ծ) +(॓_॔) +(० ्०) +(ு८ு_ .:) +(ಠ‾ಠ) +(ಠ‿ʘ) +(ಠ‿ಠ) +(ಠ⌣ಠ) +(ಠ益ಠ ╬) +(ಠ益ಠ) +(ಠ_ృ) +(ಠ_ಠ) +(ಥ﹏ಥ) +(ಥ_ಥ) +(๏̯͡๏ ) +(ღ˘⌣˘ღ) ♫・*:.。. .。.:*・ +(ღ˘⌣˘ღ) +(ᵔᴥᵔ) +(•ω•) +(•‿•) +(•⊙ω⊙•) +(• ε •) +(∩▂∩) +(∩︵∩) +(∪ ◡ ∪) +(≧ω≦) +(≧◡≦) +(≧ロ≦) +(⊙ヮ⊙) +(⊙_◎) +(⋋▂⋌) +(⌐■_■) +(‿‿) +(┛◉Д◉)┛┻━┻ +(╥_╥) +(╬ಠ益ಠ) +(╬◣д◢) +(╬ ಠ益ಠ) +(╯°□°)╯︵ ┻━┻ +(╯ಊ╰) +(╯◕_◕)╯ +(╯︵╰,) +(╯3╰) +(╯_╰) +(╹◡╹)凸 +(▰˘◡˘▰) +(●´ω`●) +(●´`●) +(◑‿◐) +(◑◡◑) +(◕‿◕✿) +(◕‿◕) +(◕‿-) +(◕︵◕) +(◕ ^ ◕) +(◕_◕) +(◜௰◝) +(◡‿◡✿) +(◣_◢) +(☞゚゚)☞ +(☞゚ヮ゚)☞ +(☞゚ ゚ )☞ +(☼◡☼) +(☼_☼) +(✌゚゚)☞ +(✖╭╮✖) +(✪㉨✪) +(✿◠‿◠) +(✿ ♥‿♥) +( ・・) +( ・ัω・ั)? +( ゚゚)o彡゜えーりんえーりん!! +(。・_・。) +(つд`) +(づ。◕‿‿◕。)づ +(ノಠ益ಠ)ノ彡┻━┻ +(ノ ◑‿◑)ノ +(ノ_・。) +(・・ ) +(屮゚Д゚)屮 +(︶ω︶) +(︶︹︺) +(ﺧ益ﺨ) +(;一_一) +(`・ω・´)” +(。◕‿‿◕。) +(。◕‿◕。) +(。◕ ‿ ◕。) +(。♥‿♥。) +(。・ω..・)っ +(・ェ-) +(ノ◕ヮ◕)ノ*:・゚✧ +(゚Д゚) +(゚Д゚)y┛~~ +(゚゚) +(゚ヮ゚) +( ̄□ ̄) +( ̄。 ̄) +( ̄ー ̄) +( ̄(エ) ̄) +( °٢° ) +( ´_ゝ`) +( ͡° ͜ʖ ͡°) +( ͡~ ͜ʖ ͡°) +( ಠ◡ಠ ) +( •_•)>⌐■-■ +(  ゚,_ゝ゚) +( ・ิз・ิ) +( ゚д゚)、 +( ^▽^)σ)~O~) +((((゜д゜;)))) +(*´д`*) +(*..Д`) +(*..д`*) +(*~▽~) +(-’๏_๏’-) +(-_- )ノ +(/◔ ◡ ◔)/ +(///_ಥ) +(;´Д`) +(=ω=;) +(=゜ω゜) +(>'o')> ♥ <('o'<) +(n˘v˘•)¬ +(o´ω`o) +(V)(°,,°)(V) +(\/) (°,,°) (\/) +(^▽^) +(`・ω・´) +(~ ̄▽ ̄)~ +/╲/\╭ºoꍘoº╮/\╱\ +<【☯】‿【☯】> += (゚д゚)ウ +@_@ +d(*⌒▽⌒*)b +o(≧≦)o +o(≧o≦)o +q(❂‿❂)p +y=ー( ゚д゚)・∵. +\˚ㄥ˚\ +\ᇂ_ᇂ\ +\(ಠ ὡ ಠ )/ +\(◕ ◡ ◕\) +^̮^ +^ㅂ^ +_(͡๏̯͡๏)_ +{´◕ ◡ ◕`} +{ಠ_ಠ}__,,|, +{◕ ◡ ◕} \ No newline at end of file diff --git a/plugins/greet.db b/plugins/greet.db new file mode 100644 index 0000000..2f0ba71 --- /dev/null +++ b/plugins/greet.db @@ -0,0 +1,106 @@ +Hallo +Mirë dita +مرحبا +Салам +سلام +Kaixo +Zdravo +Olá +Oi +Demat +Здравейте +Hola +Moni +Bonghjornu +Bok +Ahoj +Hej +Hallo +Hello +Saluton +Tere +سلام +درود بر تو +درود بر شما +Bula +Kamusta +Hei +Terve +Bonjour +მიესალმები +miesalmebi +Hallo +Χαίρε +Hello +Aloha +שלום +नमस्ते +Sziasztok +Halo +Hai +Dia dhuit +Ciao +こんにちは +Kon'nichiwa +ನಮಸ್ಕಾರ +Namaskār +ជំរាបសួរ +안녕 +Annyeong +ສະບາຍດີ +sabaidi +Salve +Sveiki +Hallau +Sveiki +Добар ден +Selamat tengahari +Ħelow +你好 +Nǐ hǎo +Kia ora +नमस्ते +Namaste +Hei +ନମସ୍କାର +Namaskār +سلام +salam +Cześć +Hej +Olá +Oi +Buna +Привет +Preevyet +Talofa +Haló +Здраво +Zdravo +侬好 +Noŋ hɔ +Mhoro +Ahoj +Zdravo +Hola +Grüss Gott +Hodi +Hej +Hallá +வனக்கம் +Vanakkam +Xin chào +Womenjeka +שלום +Sholem +வணக்கம் +Vanakaam +నమస్కారం +Namaskāram +สวัสดีค่ะ +Sawatdeekha +Merhaba +Chào bạn +Helo +העלא +Sawubona diff --git a/plugins/krylon.py b/plugins/krylon.py new file mode 100644 index 0000000..ba22268 --- /dev/null +++ b/plugins/krylon.py @@ -0,0 +1,254 @@ +# -*- 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 = ['MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMms:-/NMMMMMMMMMMMMMMMMMMMMNmmdddmNMMMMMMMMMMMMMMMMMMMMMy+ohMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMN+....`sMMMMMMMMMMMMMMNds+:.--:::::-.-:oymMMMMMMMMMMMMMMh`...-yMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMmo-.` ..mMMMMMMMMMMNy/.-/shmNNNNNNNNmmho/-.+hMMMMMMMMMMN-.` `..:hMMMMMMMMMMMMMMMMMM', 'MMMMMNMMMMMMNh+.`` `.dMMMMMMMmo.-odNMMMMMMMMMMMMMMMMMNh+--sNMMMMMMN/`` `.:smMMMMMMMMMMMMMMM', 'MMMMMd+sys+:.` `/dMMMNo`:hNMMMMMMMMMMMMMMMMMMMMMMMms-.yMMMNy. `.:oydddyhMMMMMMM', 'MMMMMMh:` ```-+s-.yNMMMMMMMMMMMMMMMMMMMMMMMMMMMmo`/y/. ``.sMMMMMMMM', 'MMMMMMMNmysosyhdh+ -ohmmmmd/ :mMMMMMMMMNNMMMMMMMMMMMNNMMMMMMMMh. +hhhyo:` -+so+/:/+ymMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMo :dNMMMMMMd`:mMMMMMNds/::/ohNMMMMMh:..-yMMMMMMMd`-NMMMMMms. :NMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMdsNMMMMMMMN-`dMMMMNm/` `:dNMMN` dMMMMMMMy +MMMMMMMN+hMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMy oNMMMMN: .mMMNo. `/NMMMMMMMN-`NMMMMMMMMNMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMM/ hMMMMMm` dNMMMmhhdNMMMMMMMMNo yMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMM: mMMMMMNo :mMMMMMMMMMMMMMMMMMMs sMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMM/ dMMMMMMNs-` .omMMMMMMMMMMMMMMMMMMMo yMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMo yMMMMMMMMNhyooshmNMMMMMMMMMMMMMMMMMMMN+ dMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMy oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN- NMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMm :NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm`-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMM.`mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMM+ yMMMNhdMMMMMMMMMMMMMMMMMMMMMMNNMMMMN: dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMm`-mdo- oNMMMMMNMMMMMMMMNMMMMMMh-+hNMh`:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs -./o +NMMMm+sNMMMMMNh:yNMMMN: /.-o-`mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMsymMm :NMmo.``hMMMMd/`/.-yNMh /MNh/-dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM -mo.-hm..mMm+`:dMNo.-y: dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.`..yMMMd`:s..hMMMMMNo` /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-.sNMMMMMs `sNMMMMMMMMNomMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdNMMMMMMMMsmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM', 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM'] + 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) + diff --git a/plugins/symbol.db b/plugins/symbol.db new file mode 100644 index 0000000..74a8548 --- /dev/null +++ b/plugins/symbol.db @@ -0,0 +1,4 @@ +ψ +☠ +☽ +☀ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..54c10ab --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +hupper +irc3 +aiocron +asyncio +ipdb diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..4fc6c4e --- /dev/null +++ b/run.sh @@ -0,0 +1,130 @@ +INIT=0 +CONFIG=".krylon_config"; #[ -f $CONFIG ] && rm $CONFIG +[ -f $CONFIG ] && INIT=1 +MEMORY="" + +kset() { + if [[ -z $1 ]] || [[ -z $2 ]]; then echo "error: no variable or value to kset()"; exit; fi + echo "$1 = $2" >> $CONFIG +} +kwrite() { + if [[ -z $1 ]]; then echo "error: no value to kwrite()"; exit; fi + echo "$1" >> $CONFIG +} +kblank() { + echo "" >> $CONFIG +} + +kprompt() { + if [[ -z $1 ]] || [[ -z $2 ]] || [[ -z $3 ]] || [[ -z $4 ]] || [[ -z $5 ]] || [[ -z $6 ]]; then echo "error: no variable, prompt, help, enforcement, type or memory passed to kprompt()"; exit; fi + local INIVAR=$1; local PROMPT=$2; local HALPLZ=$3; local ENFORCE=$4; local TYPE=$5; local MEMORIZE=$6; unset REPLY; + while [[ -z "${REPLY}" ]] || [[ $ENFORCE -eq 1 ]]; do + echo -en "$HALPLZ\n$PROMPT"; [ $ENFORCE -eq 0 ] && echo -n ": " || echo -n "[y/n]: " + read; + if [[ $ENFORCE -eq 1 ]] && [[ $TYPE -eq 0 ]]; then + while ! [[ -z $ENFORCE ]]; do + if ([ ${REPLY} == "y" ] || [ ${REPLY} == "Y" ]); then + return 0 + elif ([ ${REPLY} == "n" ] || [ ${REPLY} == "N" ]); then + return 9 + else + echo -n "$HALPLZ\n$PROMPT"; [ $ENFORCE -eq 0 ] && echo -n ": " || echo -n "[y/n]: " + read; + fi; + done; + elif [[ $TYPE -eq 1 ]]; then + while true; do + [[ ${REPLY} =~ ^-?[0-9]+$ ]] + if ! [ $? -eq 0 ]; then + echo -n "$HALPLZ\n$PROMPT"; [ $ENFORCE -eq 0 ] && echo -n ": " || echo -n "[y/n]: " + read; + else + return ${REPLY} + fi + done; + fi; + done; + + if [ $MEMORIZE -eq 1 ]; then + MEMORY=${REPLY} + fi; + + [ $TYPE -eq 1 ] && return ${REPLY} || kset "$INIVAR" "${REPLY}" + + return 0; +} + +if [ $INIT -eq 0 ]; then + kwrite "[bot]" + kprompt "nick" "bot ircnick" "bot's nickname to use on the network. e.g. here!*@*" 0 0 1 + BOTNICK=$(python -c "import random; print(''.join(random.sample('$MEMORY',len('$MEMORY'))))"); + kprompt "username" "bot username" "bot's username to use on the network. e.g. *!here@*" 0 0 1 + USERNAME=$(python -c "import random; print(''.join(random.sample('$MEMORY',len('$MEMORY'))))"); + kprompt "realname" "bot realname" "bot's realname that shows if someone. /whois bot." 0 0 0 + kprompt "host" "irc address" "the ip/hostname of the irc server this bot will connect to." 0 0 0 + kprompt "port" "irc port" "the port number of the irc server this bot will connect to." 0 0 0 + kprompt "channel" "irc channel" "the channel the bot(s) will join upon connection." 0 0 1 + CHANNEL=$MEMORY; + kwrite "version=1" + kprompt "ssl" "use ssl?" "is the connect to this irc server using secure socket layers?" 1 0 0 + [ $? -eq 0 ] && (kset "ssl" "true"; kset "ssl_verify" "cert_none") || (kset "ssl" "false") + kprompt "bots" "how many helper bots?[0-255]" "how many bots will connect to the ircserver?" 0 1 0 + BOTCOUNT=$?; + kblank + kwrite "includes =" + kwrite " irc3.plugins.command" + kwrite " irc3.plugins.asynchronious" + kwrite " irc3.plugins.storage" + kwrite " irc3.plugins.uptime" + kwrite " irc3.plugins.ctcp" + kwrite " irc3.plugins.cron" + kwrite " irc3.plugins.logger" + kwrite " irc3.plugins.userlist" + kwrite " plugins.b33p" + kwrite " plugins.krylon" + kblank + kwrite "flood_burst = 0" + kwrite "flood_rate = 1" + kwrite "flood_rate_delay = 1" + kwrite "storage = json://.krylon_database" + kblank + kwrite "[irc3.plugins.command]" + kwrite "cmd = ?" + kwrite "guard = irc3.plugins.command.mask_based_policy" + kblank + kwrite "[irc3.plugins.command.masks]" + kwrite "d"'!'"*dr1p@* = all_permissions" + kwrite "* = view" + kblank + kwrite "ignore_list =" + kwrite " g1mp_"'!'"*@*" + kwrite " g1mp"'!'"*@*" + kwrite " ken_"'!'"*@*" + kwrite " ken"'!'"*@*" + kblank + for i in $(seq 1 $BOTCOUNT); do + kwrite "[bot_$i]" + RANDOM=$((1 + $RANDOM % 255)) + SALT=$(printf '%x\n' $RANDOM) + THIS=$SALT"_krylon_$(printf '%x\n' $i)" + THAT=$(python -c "import random; print(''.join(random.sample('$THIS',len('$THIS'))))"); + kwrite "nick = $THAT" + RANDOM=$((1 + $RANDOM % 255)) + SALT=$(printf '%x\n' $RANDOM) + THIS=$SALT"$USERNAME" + THAT=$(python -c "import random; print(''.join(random.sample('$THIS',len('$THIS'))))"); + kwrite "username = $THAT" + kwrite "channel = $CHANNEL" + kblank + done; +fi; + +echo -e "\n-\n" + +[ -f $CONFIG ] && cat $CONFIG + +echo -e "\n-\nEXECUTING" + +irc3 $CONFIG + +exit diff --git a/run_artop.sh b/run_artop.sh new file mode 100755 index 0000000..bca5630 --- /dev/null +++ b/run_artop.sh @@ -0,0 +1,22 @@ +rm .krylon_config +bash run.sh +while : +do + cp 6.tskull.txt plugins/krylon.py + bash run.sh + sleep 0.5 + cp 5.hack.txt plugins/krylon.py + bash run.sh + sleep 0.5 + cp 4.ghost.txt plugins/krylon.py + bash run.sh + sleep 0.5 + cp 3.mind.txt plugins/krylon.py + bash run.sh + sleep 0.5 + cp 1.goth.txt plugins/krylon.py + bash run.sh + sleep 0.5 + cp 2.fh.txt plugins/krylon.py + bash run.sh +done diff --git a/run_debug.sh b/run_debug.sh new file mode 100755 index 0000000..4501cf6 --- /dev/null +++ b/run_debug.sh @@ -0,0 +1 @@ +hupper -m irc3 .krylon_config diff --git a/tool_ans2utf8.sh b/tool_ans2utf8.sh new file mode 100755 index 0000000..15eb0a6 --- /dev/null +++ b/tool_ans2utf8.sh @@ -0,0 +1,5 @@ +#infile.ans +ANSI=$1 +#outfile.txt +ASCII=$2 +piconv -f CP437 -t UTF-8 < $1 > $2 diff --git a/tool_dconvutf8.py b/tool_dconvutf8.py new file mode 100755 index 0000000..f529086 --- /dev/null +++ b/tool_dconvutf8.py @@ -0,0 +1,214 @@ +import ipdb +import subprocess +cp437 = { + 0:'\u0000',1:'\u263A',2:'\u263B',3:'\u2665',4:'\u2666',5:'\u2663',6:'\u2660',7:'\u2022', + 8:'\u25D8',9:'\u25CB',10:'\u25D9',11:'\u2642',12:'\u2640',13:'\u266A',14:'\u266B',15:'\u263C', + 16:'\u25BA',17:'\u25C4',18:'\u2195',19:'\u203C',20:'\u00B6',21:'\u00A7',22:'\u25AC',23:'\u21A8', + 24:'\u2191',25:'\u2193',26:'\u2192',27:'\u2190',28:'\u221F',29:'\u2194',30:'\u25B2',31:'\u25BC', + 32:'\u0020',33:'\u0021',34:'\u0022',35:'\u0023',36:'\u0024',37:'\u0025',38:'\u0026',39:'\u0027', + 40:'\u0028',41:'\u0029',42:'\u002A',43:'\u002B',44:'\u002C',45:'\u002D',46:'\u002E',47:'\u002F', + 48:'\u0030',49:'\u0031',50:'\u0032',51:'\u0033',52:'\u0034',53:'\u0035',54:'\u0036',55:'\u0037', + 56:'\u0038',57:'\u0039',58:'\u003A',59:'\u003B',60:'\u003C',61:'\u003D',62:'\u003E',63:'\u003F', + 64:'\u0040',65:'\u0041',66:'\u0042',67:'\u0043',68:'\u0044',69:'\u0045',70:'\u0046',71:'\u0047', + 72:'\u0048',73:'\u0049',74:'\u004A',75:'\u004B',76:'\u004C',77:'\u004D',78:'\u004E',79:'\u004F', + 80:'\u0050',81:'\u0051',82:'\u0052',83:'\u0053',84:'\u0054',85:'\u0055',86:'\u0056',87:'\u0057', + 88:'\u0058',89:'\u0059',90:'\u005A',91:'\u005B',92:'\u005C',93:'\u005D',94:'\u005E',95:'\u005F', + 96:'\u0060',97:'\u0061',98:'\u0062',99:'\u0063',100:'\u0064',101:'\u0065',102:'\u0066',103:'\u0067', + 104:'\u0068',105:'\u0069',106:'\u006A',107:'\u006B',108:'\u006C',109:'\u006D',110:'\u006E',111:'\u006F', + 112:'\u0070',113:'\u0071',114:'\u0072',115:'\u0073',116:'\u0074',117:'\u0075',118:'\u0076',119:'\u0077', + 120:'\u0078',121:'\u0079',122:'\u007A',123:'\u007B',124:'\u007C',125:'\u007D',126:'\u007E',127:'\u2302', + 128:'\u00C7',129:'\u00FC',130:'\u00E9',131:'\u00E2',132:'\u00E4',133:'\u00E0',134:'\u00E5',135:'\u00E7', + 136:'\u00EA',137:'\u00EB',138:'\u00E8',139:'\u00EF',140:'\u00EE',141:'\u00EC',142:'\u00C4',143:'\u00C5', + 144:'\u00C9',145:'\u00E6',146:'\u00C6',147:'\u00F4',148:'\u00F6',149:'\u00F2',150:'\u00FB',151:'\u00F9', + 152:'\u00FF',153:'\u00D6',154:'\u00DC',155:'\u00A2',156:'\u00A3',157:'\u00A5',158:'\u20A7',159:'\u0192', + 160:'\u00E1',161:'\u00ED',162:'\u00F3',163:'\u00FA',164:'\u00F1',165:'\u00D1',166:'\u00AA',167:'\u00BA', + 168:'\u00BF',169:'\u2310',170:'\u00AC',171:'\u00BD',172:'\u00BC',173:'\u00A1',174:'\u00AB',175:'\u00BB', + 176:'\u2591',177:'\u2592',178:'\u2593',179:'\u2502',180:'\u2524',181:'\u2561',182:'\u2562',183:'\u2556', + 184:'\u2555',185:'\u2563',186:'\u2551',187:'\u2557',188:'\u255D',189:'\u255C',190:'\u255B',191:'\u2510', + 192:'\u2514',193:'\u2534',194:'\u252C',195:'\u251C',196:'\u2500',197:'\u253C',198:'\u255E',199:'\u255F', + 200:'\u255A',201:'\u2554',202:'\u2569',203:'\u2566',204:'\u2560',205:'\u2550',206:'\u256C',207:'\u2567', + 208:'\u2568',209:'\u2564',210:'\u2565',211:'\u2559',212:'\u2558',213:'\u2552',214:'\u2553',215:'\u256B', + 216:'\u256A',217:'\u2518',218:'\u250C',219:'\u2588',220:'\u2584',221:'\u258C',222:'\u2590',223:'\u2580', + 224:'\u03B1',225:'\u00DF',226:'\u0393',227:'\u03C0',228:'\u03A3',229:'\u03C3',230:'\u00B5',231:'\u03C4', + 232:'\u03A6',233:'\u0398',234:'\u03A9',235:'\u03B4',236:'\u221E',237:'\u03C6',238:'\u03B5',239:'\u2229', + 240:'\u2261',241:'\u00B1',242:'\u2265',243:'\u2264',244:'\u2320',245:'\u2321',246:'\u00F7',247:'\u2248', + 248:'\u00B0',249:'\u2219',250:'\u00B7',251:'\u221A',252:'\u207F',253:'\u00B2',254:'\u25A0',255:'\u00A0', +} + +def q(s): + f = open('/home/dr1p/.weechat/weechat_fifo','w') + f.write('*{}\x0a'.format(s)) + f.close() + +class D(): + def __init__(self): + self.MODE_BOLD=0 + return + def c(self,n): + n = int(n) + cc = { + 99:'\x03', + 1:'\x02', #bold + 3:'\x1d', #italics + 4:'\x1f', #underline + 9:'\x1e', #strikethrough + 0:'\x01', + 40:'1', + + 30:'14', + 31:'04', + 32:'09', + 33:'08', + 34:'12', + 35:'13', + 36:'11', + 37:'15', + 41:'04', + 42:'09', + 43:'08', + 44:'12', + 45:'13', + 46:'11', + 47:'15' + } + + cb = { + 99:'\x03', + 1:'\x02', #bold + 3:'\x1d', #italics + 4:'\x1f', #underline + 9:'\x1e', #strikethrough + 0:'\x01', + 40:'1', + + 30:'14', + 31:'28', + 32:'09', + 33:'54', + 34:'72', + 35:'13', + 36:'11', + 37:'15', + 41:'04', + 42:'09', + 43:'08', + 44:'12', + 45:'13', + 46:'11', + 47:'15' + } + + + + #ipdb.set_trace() + if self.MODE_BOLD==1: + if n >= 30 and n <= 47: + return int(cc[n]) + else: + return cb[n] + else: + return cb[n] + +def w(s,index): + d=D() + s = s.replace('\x1b','') + ss = s + codes=[] + ogcodes=[] + newcodes=[] + while True: + sa = ss.find('[') + sb = ss.find('m') + if sa == -1 and sb == -1: + break + x = ss[sa:sb+1] + ogcodes.append(x) + codes.append(x.replace('m','').replace('[','').split(';')) + ss=ss[sb+1:] + count = len(codes[-1]) + if count == 1: + ca = codes[-1][0] + if ca == '1' or ca == '3' or ca == '4' or ca == '9': + if ca == '1': + code = "{}".format(d.c(99)) + else: + code = "{}".format(d.c(ca)) + elif ca == '0': + code = "{}".format(d.c(1)) + elif ca == '31': + # d.MODE_BOLD=0 + code = "{}{}".format(d.c(99),d.c(31)) + else: + try: + code = "{}{}".format(d.c(99),d.c(ca)) + #code = "{},{}".format(c[99],c[int(ca)]) + except: + if ca == '7C1': + codes[-1]=1 + + newcodes.append(code) + elif count == 2: + ca = codes[-1][0] + cb = codes[-1][1] + # ipdb.set_trace() + if ca == '0': + d.MODE_BOLD=0 + code = "{}{}".format(d.c(99),d.c(cb)) + elif ca == '1': + d.MODE_BOLD=1 + code = "{}{}".format(d.c(99),d.c(cb)) + else: + code = "{}{}{}{}".format(d.c(99),d.c(ca),d.c(99),d.c(cb)) + + newcodes.append(code) + elif count == 3: + ca = codes[-1][0] + cb = codes[-1][1] + cc = codes[-1][1] + if ca == '0': + code = "{}{},{}".format(d.c(99),d.c(cb),d.c(cc)) + elif ca == '1': + d.MODE_BOLD=1 + code = "{}{}{}{}".format(d.c(99),d.c(cb),d.c(99),d.c(cc)) + newcodes.append(code) + + elif count == 4: + ca = codes[-1][0] + cb = codes[-1][1] + cc = codes[-1][2] + cd = codes[-1][3] + code = "{}{}{},{}".format(d.c(1),d.c(99),d.c(cd),d.c(cc)) + newcodes.append(code) + + buffer = s + for i,_ in enumerate(ogcodes): + z = buffer.find(_) + if z == 0: + b=buffer[len(_):] + a=newcodes[i] + buffer = "{}{}".format(a,b) + else: + try: + a=buffer[:buffer.find(_)] + b=newcodes[i] + c=buffer[buffer.find(_)+len(ogcodes[i]):] + buffer = "{}{}{}".format(a,b,c) + except: + print('hi') + ipdb.set_trace() + print('hi') + print('hi') + q(buffer) + +if __name__=="__main__": + + + f = open('/home/dr1p/Documents/python/acid.txt','r') + l = f.read().splitlines() + f.close() + + for i,_ in enumerate(l): + if _.find('\x1aSAUCE') == -1: + w(_,i) + else: + pass \ No newline at end of file