mirror of https://github.com/aliasrobotics/cai.git
snake case format - @lidia9
This commit is contained in:
parent
131fcc491e
commit
a22c03e811
|
|
@ -1,4 +1,4 @@
|
|||
# ReverseShellTool
|
||||
# ReverseShellTool
|
||||
# ReverseShellSession
|
||||
# ReverseShellManager
|
||||
# ShellCommandExecutor
|
||||
|
|
@ -1 +0,0 @@
|
|||
#DirbScanTool
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
# """
|
||||
# Here are crypto tools
|
||||
# """
|
||||
# # import base64
|
||||
# from cai.tools.common import run_command
|
||||
"""
|
||||
Here are crypto tools
|
||||
"""
|
||||
import base64
|
||||
# # URLDecodeTool
|
||||
# # HexDumpTool
|
||||
# # Base64DecodeTool
|
||||
|
|
@ -25,22 +24,22 @@
|
|||
# return run_command(ctf, command)
|
||||
|
||||
|
||||
# def decode64(input_data: str) -> str:
|
||||
# """
|
||||
# Decode a base64-encoded string.
|
||||
def decode64(input_data: str) -> str:
|
||||
"""
|
||||
Decode a base64-encoded string.
|
||||
|
||||
# Args:
|
||||
# input_data: The base64-encoded string to decode
|
||||
# args: Additional arguments (not used in this function)
|
||||
Args:
|
||||
input_data: The base64-encoded string to decode
|
||||
args: Additional arguments (not used in this function)
|
||||
|
||||
# Returns:
|
||||
# str: The decoded string
|
||||
# """
|
||||
Returns:
|
||||
str: The decoded string
|
||||
"""
|
||||
|
||||
# try:
|
||||
# decoded_bytes = base64.b64decode(input_data)
|
||||
# decoded_str = decoded_bytes.decode('utf-8')
|
||||
# return decoded_str
|
||||
# except UnicodeDecodeError as e:
|
||||
# print(f"Error decoding bytes to string: {e}")
|
||||
# return f"Error decoding bytes to string: {str(e)}"
|
||||
try:
|
||||
decoded_bytes = base64.b64decode(input_data)
|
||||
decoded_str = decoded_bytes.decode('utf-8')
|
||||
return decoded_str
|
||||
except UnicodeDecodeError as e:
|
||||
print(f"Error decoding bytes to string: {e}")
|
||||
return f"Error decoding bytes to string: {str(e)}"
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
# DirbScanTool
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
"""
|
||||
This is a short example of how we can solve ctf scenarios programmatically. With CAI framework
|
||||
"""
|
||||
# 1. Instance CAI, pentestperf and tools
|
||||
from cai import CAI, Agent
|
||||
from cai.tools.reconnaissance.crypto_tools import *
|
||||
from cai.tools.reconnaissance.nmap import *
|
||||
from cai.tools.reconnaissance.netcat import *
|
||||
import pentestperf as ptt
|
||||
from wasabi import color
|
||||
import os
|
||||
|
||||
# 2. Init the CTF environment
|
||||
ctf = ptt.ctf(
|
||||
"picoctf_reversing_python",
|
||||
subnet="192.168.9.0/24",
|
||||
container_name="ancient",
|
||||
ip_address="192.168.9.52"
|
||||
)
|
||||
ctf.start_ctf()
|
||||
challenges = list(ctf.get_challenges().keys())
|
||||
challenge = challenges[0]
|
||||
|
||||
# 3. Instance the cybersecurity AI Framework client
|
||||
client = CAI(ctf=ctf)
|
||||
|
||||
# 4. Instance the agent/agents to solve the CTF
|
||||
ctf_agent = Agent(
|
||||
model="qwen2.5:14b",
|
||||
name="CTF agent",
|
||||
instructions="You are an CTF solver agent",
|
||||
functions=[netcat, nmap, decode64], # This code can execute by LLM
|
||||
# parallel_tool_calls=True, Enable multi function calling
|
||||
)
|
||||
|
||||
|
||||
messages = [{
|
||||
"role": "user",
|
||||
"content": "Instructions: " + ctf.get_instructions() +
|
||||
"\nChallenge: " + ctf.get_challenges()[challenge] +
|
||||
"\nTechniques: " + ctf.get_techniques() +
|
||||
"\nExtract and return only the flag"
|
||||
"\nYOU MUST RETURN THE FLAG IN PLAIN TEXT"
|
||||
}]
|
||||
|
||||
# 5. Run the CAI
|
||||
response = client.run(
|
||||
agent=ctf_agent,
|
||||
messages=messages,
|
||||
debug=True,
|
||||
brief=True)
|
||||
print(response.messages[-1]["content"])
|
||||
|
||||
ctf.stop_ctf()
|
||||
Loading…
Reference in New Issue