def testHang(self): path = os.path.join(modulePath(),'testtasks','Hang.py') runner = TaskRunner() runner.start() out_q = runner.taskStart([path,"Foo"]) time.sleep(0.1) self.assertTrue(runner.taskAlive()) runner.taskStop() self.assertFalse(runner.taskAlive()) runner.quit()
def testStress(self): path = os.path.join(modulePath(),'testtasks','Hang.py') runners = [] for i in range(100): runner = TaskRunner() runner.start() runner.taskStart([path,"Foo"]) runners.append(runner) for i in range(100): runners[i].quit() for i in range(100): self.assertFalse(runners[i].taskAlive())
def testBroken(self): path = os.path.join(modulePath(),'testtasks','Broken.py') runner = TaskRunner() runner.start() out_q = runner.taskStart([path,"Foo"]) time.sleep(0.2) self.assertEquals(len(out_q.get()),34) self.assertFalse(runner.taskAlive()) runner.quit()
def testBasic(self): path = os.path.join(modulePath(),'testtasks','Succesful.py') runner = TaskRunner() runner.start() out_q = runner.taskStart([path,"Foo"]) txt = out_q.get(True,1) self.assertEquals(txt,"FLAG: foobarbaz") self.assertEquals(len(out_q.get(True,1)),0) self.assertFalse(runner.taskAlive()) self.assertEquals(0,runner.taskRetcode()) runner.quit()
def testOverloadQue(self): path = os.path.join(modulePath(),'testtasks','FlagZ.py') runner = TaskRunner() runner.start() out_q = runner.taskStart([path,"Foo"]) time.sleep(1) runner.quit() self.assertFalse(runner.taskAlive()) self.assert_(out_q.qsize() > 1000)
def __init__(self,script,team,logger=None): self.logger = logger if(self.logger != None): self.logger.debug("Creating Service Task: %r %r" % (team.host,script)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.team = team self.cookie_txt = None self.error_txt = None self.prev_flag = None self.current_flag = None self.expected_flag = None self.line_q = None threading.stack_size(thread_size)
def __init__(self, script, ip, timeout, logger): self.logger = logger if (self.logger != None): self.logger.debug("Creating Attack Task: %r %r %d" % (script, ip, timeout)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.line_q = None self.ip = ip self.cookie = None self.captured_flags = [] self.timeout = timeout self.timeout_set = False self.timer = AttackTimer(self.runner, timeout) self.timer.start() threading.stack_size(thread_size)
def testLinesThenHang(self): path = os.path.join(modulePath(),'testtasks','Hang2.py') runner = TaskRunner() runner.start() out_q = runner.taskStart([path,"Foo"]) line1 = out_q.get() line2 = out_q.get() self.assertEquals("A"*1024,line1) self.assertEquals("B"*1024,line2) self.assertTrue(runner.taskAlive()) runner.quit() self.assertFalse(runner.taskAlive())
def __init__(self,script,team,logger): self.logger = logger if(self.logger != None): self.logger.debug("Creating UsenixExploitTask: %r %r" % (script,team.host)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.line_q = None self.team = team self.cookie = None self.exploit_success = False self.captured_flags = [] threading.stack_size(thread_size)
def testStress(self): path = os.path.join(modulePath(), 'testtasks', 'Hang.py') runners = [] for i in range(100): runner = TaskRunner() runner.start() runner.taskStart([path, "Foo"]) runners.append(runner) for i in range(100): runners[i].quit() for i in range(100): self.assertFalse(runners[i].taskAlive())
def __init__(self,script,ip,timeout,logger): self.logger = logger if(self.logger != None): self.logger.debug("Creating Attack Task: %r %r %d" % (script,ip,timeout)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.line_q = None self.ip = ip self.cookie = None self.captured_flags = [] self.timeout = timeout self.timeout_set = False self.timer = AttackTimer(self.runner,timeout) self.timer.start() threading.stack_size(thread_size)
class AttackTask(): def __init__(self,script,ip,timeout,logger): self.logger = logger if(self.logger != None): self.logger.debug("Creating Attack Task: %r %r %d" % (script,ip,timeout)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.line_q = None self.ip = ip self.cookie = None self.captured_flags = [] self.timeout = timeout self.timeout_set = False self.timer = AttackTimer(self.runner,timeout) self.timer.start() threading.stack_size(thread_size) def launch(self,overwrite_key=None): cmd = [self.script,self.ip] if(overwrite_key != None): cmd.append(overwrite_key) if(self.cookie != None): cmd.append(self.cookie) self.line_q = self.runner.taskStart(cmd) self.timeout_set = False self.timer.setTimeout(self.timeout) def isAlive(self): return self.runner.taskAlive() def stop(self): self.runner.taskStop() def quit(self): self.timer.running = False self.runner.quit() def processOutput(self): assert(self.line_q != None) count = self.line_q.qsize() for i in xrange(count): line = self.line_q.get(False) assert(line != None) if(line == ""): continue if(self.logger != None): self.logger.debug("(%s) %r" % (self.ip,line)) if(line.startswith("FLAG:")): self.captured_flags.append(line[5:].strip()) if(self.timeout_set == False): self.timer.setTimeout(self.timeout) if(line.startswith("COOKIE:")): self.cookie = line[7:].strip() if(self.timeout_set == False): self.timer.setTimeout(self.timeout) if(line.startswith("TIMEOUT:")): value = line[8:].strip() if(value.upper() == "INFINITE"): self.timer.setInfinite() else: value = int(value) if(value == 0): self.timeout_set = False self.timer.setTimeout(self.timeout) else: self.timer.setTimeout(value) self.timeout_set = True line = None def collectFlags(self): flags = self.captured_flags self.captured_flags = [] return flags
class ServiceTask(): def __init__(self,script,team,logger=None): self.logger = logger if(self.logger != None): self.logger.debug("Creating Service Task: %r %r" % (team.host,script)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.team = team self.cookie_txt = None self.error_txt = None self.prev_flag = None self.current_flag = None self.expected_flag = None self.line_q = None threading.stack_size(thread_size) def launch(self,flag): cmd = [self.script,self.team.host,flag] if(self.cookie_txt != None): cmd.append(self.cookie_txt) self.expected_flag = self.current_flag self.current_flag = flag self.prev_flag = None self.error_txt = None if(self.logger != None): self.logger.debug("Service Task starting for %r (%r)" % (self.team.host,flag)) self.line_q = self.runner.taskStart(cmd) def isAlive(self): return self.runner.taskAlive() def finish(self): self.runner.taskStop() if(self.logger != None): self.logger.debug("Service Task finished for %r" % (self.team.host)) def prevFlag(self): return self.prev_flag def retcode(self): return self.runner.taskRetcode() def gotExpectedFlag(self): if(self.prev_flag == None or self.expected_flag == None): return False return self.prev_flag == self.expected_flag def cookie(self): return self.cookie_txt def error(self): return self.error_txt def quit(self): self.runner.quit() def processOutput(self): assert(self.line_q != None) for i in xrange(self.line_q.qsize()): line = self.line_q.get(False) assert(line != None) if(line == ""): continue if(self.logger != None): self.logger.debug("(%s) %r" % (self.team.host,line.strip())) if(line.startswith("FLAG:")): self.prev_flag = line[5:].strip() elif(line.startswith("ERROR:")): self.error_txt = line[6:].strip() elif(line.startswith("COOKIE:")): self.cookie_txt = line[7:].strip()
class UsenixExploitTask(): def __init__(self, script, team, logger): self.logger = logger if (self.logger != None): self.logger.debug("Creating UsenixExploitTask: %r %r" % (script, team.host)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.line_q = None self.team = team self.cookie = None self.exploit_success = False self.captured_flags = [] threading.stack_size(thread_size) def launch(self): cmd = [self.script, self.team.host] if (self.cookie != None): cmd.append(self.cookie) if (self.logger != None): script_name = os.path.basename(self.script) ip = self.team.host cookie = self.cookie self.logger.debug( "Starting UsenixExploitTask: script=%r ip=%r cookie=%r" % (script_name, ip, cookie)) self.line_q = self.runner.taskStart(cmd) def isAlive(self): return self.runner.taskAlive() def stop(self): if (self.logger != None): self.logger.debug("Stopping UsenixExploitTask: %r %r" % (self.script, self.team.host)) self.runner.taskStop() def quit(self): self.runner.quit() def processOutput(self): assert (self.line_q != None) count = self.line_q.qsize() for i in xrange(count): line = self.line_q.get(False) assert (line != None) if (line == ""): continue if (self.logger != None): self.logger.info("(%s) %r" % (self.team.host, line)) if (line.startswith("FLAG:")): self.captured_flags.append(line[5:].strip()) if (line.startswith("COOKIE:")): self.cookie = line[7:].strip() if (line.startswith("EXPLOIT:")): success_txt = line[8:].strip().upper() if (success_txt == "SUCCESS"): self.exploit_success = True line = None def collectFlags(self): flags = self.captured_flags self.captured_flags = [] return flags def clearExploitSuccess(self): self.exploit_success = False def exploitSuccess(self): return self.exploit_success def getTeam(self): return self.team
class AttackTask(): def __init__(self, script, ip, timeout, logger): self.logger = logger if (self.logger != None): self.logger.debug("Creating Attack Task: %r %r %d" % (script, ip, timeout)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.line_q = None self.ip = ip self.cookie = None self.captured_flags = [] self.timeout = timeout self.timeout_set = False self.timer = AttackTimer(self.runner, timeout) self.timer.start() threading.stack_size(thread_size) def launch(self, overwrite_key=None): cmd = [self.script, self.ip] if (overwrite_key != None): cmd.append(overwrite_key) if (self.cookie != None): cmd.append(self.cookie) self.line_q = self.runner.taskStart(cmd) self.timeout_set = False self.timer.setTimeout(self.timeout) def isAlive(self): return self.runner.taskAlive() def stop(self): self.runner.taskStop() def quit(self): self.timer.running = False self.runner.quit() def processOutput(self): assert (self.line_q != None) count = self.line_q.qsize() for i in xrange(count): line = self.line_q.get(False) assert (line != None) if (line == ""): continue if (self.logger != None): self.logger.debug("(%s) %r" % (self.ip, line)) if (line.startswith("FLAG:")): self.captured_flags.append(line[5:].strip()) if (self.timeout_set == False): self.timer.setTimeout(self.timeout) if (line.startswith("COOKIE:")): self.cookie = line[7:].strip() if (self.timeout_set == False): self.timer.setTimeout(self.timeout) if (line.startswith("TIMEOUT:")): value = line[8:].strip() if (value.upper() == "INFINITE"): self.timer.setInfinite() else: value = int(value) if (value == 0): self.timeout_set = False self.timer.setTimeout(self.timeout) else: self.timer.setTimeout(value) self.timeout_set = True line = None def collectFlags(self): flags = self.captured_flags self.captured_flags = [] return flags
def testHang(self): path = os.path.join(modulePath(), 'testtasks', 'Hang.py') runner = TaskRunner() runner.start() out_q = runner.taskStart([path, "Foo"]) time.sleep(0.1) self.assertTrue(runner.taskAlive()) runner.taskStop() self.assertFalse(runner.taskAlive()) runner.quit()
class UsenixExploitTask(): def __init__(self,script,team,logger): self.logger = logger if(self.logger != None): self.logger.debug("Creating UsenixExploitTask: %r %r" % (script,team.host)) thread_size = threading.stack_size(524288) self.runner = TaskRunner() self.runner.start() self.script = script self.line_q = None self.team = team self.cookie = None self.exploit_success = False self.captured_flags = [] threading.stack_size(thread_size) def launch(self): cmd = [self.script,self.team.host] if(self.cookie != None): cmd.append(self.cookie) if(self.logger != None): script_name = os.path.basename(self.script) ip = self.team.host cookie = self.cookie self.logger.debug("Starting UsenixExploitTask: script=%r ip=%r cookie=%r" % (script_name,ip,cookie)) self.line_q = self.runner.taskStart(cmd) def isAlive(self): return self.runner.taskAlive() def stop(self): if(self.logger != None): self.logger.debug("Stopping UsenixExploitTask: %r %r" % (self.script,self.team.host)) self.runner.taskStop() def quit(self): self.runner.quit() def processOutput(self): assert(self.line_q != None) count = self.line_q.qsize() for i in xrange(count): line = self.line_q.get(False) assert(line != None) if(line == ""): continue if(self.logger != None): self.logger.info("(%s) %r" % (self.team.host,line)) if(line.startswith("FLAG:")): self.captured_flags.append(line[5:].strip()) if(line.startswith("COOKIE:")): self.cookie = line[7:].strip() if(line.startswith("EXPLOIT:")): success_txt = line[8:].strip().upper() if(success_txt == "SUCCESS"): self.exploit_success = True line = None def collectFlags(self): flags = self.captured_flags self.captured_flags = [] return flags def clearExploitSuccess(self): self.exploit_success = False def exploitSuccess(self): return self.exploit_success def getTeam(self): return self.team