caldera 4 variants of list functions should return the same values as the caldera 2 version now

caldera_4
Thorsten Sick 2 years ago
parent c5abcad563
commit c61aa81b16

@ -94,6 +94,9 @@ class AbilityList:
""" A list of exploits """
abilities: conlist(Ability, min_items=1)
def get_data(self):
return self.abilities
@dataclass
class Obfuscator:
@ -108,6 +111,9 @@ class ObfuscatorList:
""" A list of obfuscators """
obfuscators: conlist(Obfuscator, min_items=1)
def get_data(self):
return self.obfuscators
@dataclass
class Adversary:
@ -127,6 +133,9 @@ class AdversaryList:
""" A list of adversary """
adversaries: conlist(Adversary, min_items=1)
def get_data(self):
return self.adversaries
@dataclass
class Fact:
@ -228,6 +237,9 @@ class AgentList:
""" A list of agents """
agents: conlist(Agent)
def get_data(self):
return self.agents
@dataclass
class Rule:
@ -259,6 +271,9 @@ class Source:
class SourceList:
sources: list[Source]
def get_data(self):
return self.sources
@dataclass
class Planner:
@ -279,6 +294,9 @@ class Planner:
class PlannerList:
planners: list[Planner]
def get_data(self):
return self.planners
@dataclass
class Goal:
@ -324,11 +342,17 @@ class Operation:
class OperationList:
operations: conlist(Operation)
def get_data(self):
return self.operations
@dataclass
class ObjectiveList:
objectives: conlist(Objective)
def get_data(self):
return self.objectives
class CalderaControl():
""" Remote control Caldera through REST api """
@ -405,7 +429,7 @@ class CalderaControl():
payload = None
data = {"abilities": self.__contact_server__(payload, method="get", rest_path="api/v2/abilities")}
abilities = AbilityList(**data)
return abilities
return abilities.get_data()
def list_obfuscators(self):
""" Return all obfuscators """
@ -413,7 +437,7 @@ class CalderaControl():
payload = None
data = {"obfuscators": self.__contact_server__(payload, method="get", rest_path="api/v2/obfuscators")}
obfuscators = ObfuscatorList(**data)
return obfuscators
return obfuscators.get_data()
def list_adversaries(self):
""" Return all adversaries """
@ -421,7 +445,7 @@ class CalderaControl():
payload = None
data = {"adversaries": self.__contact_server__(payload, method="get", rest_path="api/v2/adversaries")}
adversaries = AdversaryList(**data)
return adversaries
return adversaries.get_data()
def list_sources(self):
""" Return all sources """
@ -429,7 +453,7 @@ class CalderaControl():
payload = None
data = {"sources": self.__contact_server__(payload, method="get", rest_path="api/v2/sources")}
sources = SourceList(**data)
return sources
return sources.get_data()
def list_planners(self):
""" Return all planners """
@ -437,7 +461,7 @@ class CalderaControl():
payload = None
data = {"planners": self.__contact_server__(payload, method="get", rest_path="api/v2/planners")}
planners = PlannerList(**data)
return planners
return planners.get_data()
def list_operations(self):
""" Return all operations """
@ -446,7 +470,7 @@ class CalderaControl():
data = {"operations": self.__contact_server__(payload, method="get", rest_path="api/v2/operations")}
print(data)
operations = OperationList(**data)
return operations
return operations.get_data()
def list_agents(self):
""" Return all agents """
@ -455,7 +479,7 @@ class CalderaControl():
data = {"agents": self.__contact_server__(payload, method="get", rest_path="api/v2/agents")}
# print(data)
agents = AgentList(**data)
return agents
return agents.get_data()
def list_objectives(self):
""" Return all objectivs """
@ -464,7 +488,7 @@ class CalderaControl():
data = {"objectives": self.__contact_server__(payload, method="get", rest_path="api/v2/objectives")}
print(data)
objectives = ObjectiveList(**data)
return objectives
return objectives.get_data()
# TODO: list_sources_for_name
# TODO: list_facts_for_name

@ -31,7 +31,7 @@ def agents(calcontrol, arguments): # pylint: disable=unused-argument
"""
if arguments.list:
print(calcontrol.list_agents().__dict__["agents"])
print(calcontrol.list_agents())
if arguments.delete:
print(calcontrol.delete_agent(arguments.paw))
if arguments.kill:
@ -74,16 +74,15 @@ def list_abilities(calcontrol, arguments):
@param arguments: Parser command line arguments
"""
abilities = calcontrol.list_abilities().__dict__["abilities"]
if arguments.list:
abilities = calcontrol.list_abilities()
abi_ids = [aid.ability_id for aid in abilities]
print(abi_ids)
for abi in abilities:
for executor in abi.executors:
for a_parser in executor.parsers:
pprint(a_parser.relationships)
for abi in abilities:
for executor in abi.executors:
for a_parser in executor.parsers:
pprint(a_parser.relationships)
def obfuscators(calcontrol, arguments):
@ -94,7 +93,7 @@ def obfuscators(calcontrol, arguments):
"""
if arguments.list:
obfs = calcontrol.list_obfuscators().__dict__["obfuscators"]
obfs = calcontrol.list_obfuscators()
# ob_ids = [aid.ability_id for aid in obfuscators]
# print(ob_ids)
@ -110,7 +109,7 @@ def objectives(calcontrol, arguments):
"""
if arguments.list:
for objective in calcontrol.list_objectives().__dict__["objectives"]:
for objective in calcontrol.list_objectives():
print(objective)
@ -122,7 +121,7 @@ def adversaries(calcontrol, arguments):
"""
if arguments.list:
for adversary in calcontrol.list_adversaries().__dict__["adversaries"]:
for adversary in calcontrol.list_adversaries():
print(adversary)
if arguments.add:
if arguments.ability_id is None:
@ -144,7 +143,7 @@ def sources(calcontrol, arguments):
"""
if arguments.list:
for a_source in calcontrol.list_sources().__dict__["sources"]:
for a_source in calcontrol.list_sources():
print(a_source)
@ -156,7 +155,7 @@ def planners(calcontrol, arguments):
"""
if arguments.list:
for a_planner in calcontrol.list_planners().__dict__["planners"]:
for a_planner in calcontrol.list_planners():
print(a_planner)
@ -168,7 +167,7 @@ def operations(calcontrol, arguments):
"""
if arguments.list:
for an_operation in calcontrol.list_operations().__dict__["operations"]:
for an_operation in calcontrol.list_operations():
print(an_operation)
if arguments.add:

Loading…
Cancel
Save