Spaces:
Sleeping
Sleeping
Sofia Santos
commited on
Commit
·
96b2235
1
Parent(s):
dfea95d
feat: git merge
Browse files- README.md +50 -2
- requirements-dev.txt +10 -1
- requirements.txt +10 -1
- uv.lock +0 -0
README.md
CHANGED
|
@@ -8,9 +8,57 @@ sdk_version: 5.31.0
|
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
license: apache-2.0
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
| 12 |
---
|
| 13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
# TDA Agent
|
| 15 |
|
| 16 |
# Development setup
|
|
@@ -27,4 +75,4 @@ code _readable_.
|
|
| 27 |
|
| 28 |
## Old content
|
| 29 |
|
| 30 |
-
An example chatbot using [Gradio](https://gradio.app), [`huggingface_hub`](https://huggingface.co/docs/huggingface_hub/v0.22.2/en/index), and the [Hugging Face Inference API](https://huggingface.co/docs/api-inference/index).
|
|
|
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
license: apache-2.0
|
| 11 |
+
tags:
|
| 12 |
+
- agent-demo-track
|
| 13 |
+
short_description: AI-driven TDAgent to automate threat analysis with MCP tools
|
| 14 |
+
|
| 15 |
---
|
| 16 |
|
| 17 |
+
# Hackathon Participation: Cybersecurity AI Agents
|
| 18 |
+
|
| 19 |
+
This project is our contribution to Tracks 1 and 3 of the [Agents-MCP-Hackathon](https://huggingface.co/Agents-MCP-Hackathon), focused on applying AI technologies in the cybersecurity domain. Our aim is to develop solutions that improve the operational efficiency in cybersecurity through automation and data-driven insights.
|
| 20 |
+
|
| 21 |
+
## Team Overview
|
| 22 |
+
|
| 23 |
+
Our team is part of the AI division in our company's cybersecurity department. We focus on implementing AI-based solutions to assist cybersecurity operations. Our team members include:
|
| 24 |
+
|
| 25 |
+
- **Pedro Completo Bento**
|
| 26 |
+
- **Josep Pon Farreny**
|
| 27 |
+
- **Sofia Jeronimo dos Santos**
|
| 28 |
+
- **Rodrigo Dominguez Sanz**
|
| 29 |
+
- **Miguel Rodin**
|
| 30 |
+
|
| 31 |
+
## Project Goals
|
| 32 |
+
|
| 33 |
+
We are exploring the application of AI agents to aid cybersecurity analysts in threat data enrichment and threat analysis. Our main goals are:
|
| 34 |
+
|
| 35 |
+
1. To experiment with agentic technologies like Gradio and MCP.
|
| 36 |
+
2. To explore how AI can improve data enrichment capabilities in threat analysis.
|
| 37 |
+
3. To develop autonomous agents capable of API interaction, data enrichment, and threat evaluation.
|
| 38 |
+
|
| 39 |
+
## Track 1: MCP Tool / Server
|
| 40 |
+
|
| 41 |
+
In Track 1, we developed **TDAgentTools**, a Gradio-powered MCP server offering a set of public cybersecurity intelligence tools. This tool is designed to assist cybersecurity professionals in their threat analysis and response tasks.
|
| 42 |
+
|
| 43 |
+
Access TDAgentTools here: [TDAgentTools Space](https://huggingface.co/spaces/Agents-MCP-Hackathon/TDAgentTools)
|
| 44 |
+
|
| 45 |
+
## Track 3: Agentic Demo Showcase
|
| 46 |
+
|
| 47 |
+
For Track 3, we created **TDAgent**, an AI agent with a chat interface that connects to MCPs, defaulting to TDAgent MCP. The agent utilizes **TDAgentTools** or other MCP servers to gather additional threat intelligence, providing enriched data for more comprehensive threat evaluations.
|
| 48 |
+
|
| 49 |
+
## Usage and Purpose
|
| 50 |
+
|
| 51 |
+
- **TDAgentTools**: Provides cybersecurity professionals with essential analysis tools via a user-friendly interface.
|
| 52 |
+
- **TDAgent**: Facilitates interactive AI-supported threat analysis, enhancing efficiency, by leveraging data from MCP servers for improved insights.
|
| 53 |
+
|
| 54 |
+
Our work aims to reduce the manual effort involved in threat analysis, allowing cybersecurity teams to focus on strategic activities by utilizing AI for operational tasks.
|
| 55 |
+
|
| 56 |
+
## Conclusion
|
| 57 |
+
|
| 58 |
+
This project seeks to demonstrate the practical applications of AI agents in cybersecurity, providing tools and frameworks to improve security operations.
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
|
| 62 |
# TDA Agent
|
| 63 |
|
| 64 |
# Development setup
|
|
|
|
| 75 |
|
| 76 |
## Old content
|
| 77 |
|
| 78 |
+
An example chatbot using [Gradio](https://gradio.app), [`huggingface_hub`](https://huggingface.co/docs/huggingface_hub/v0.22.2/en/index), and the [Hugging Face Inference API](https://huggingface.co/docs/api-inference/index).
|
requirements-dev.txt
CHANGED
|
@@ -1,8 +1,13 @@
|
|
| 1 |
# This file was autogenerated by uv via the following command:
|
| 2 |
# uv export --format requirements-txt --no-hashes --no-annotate --group dev --group test -o requirements-dev.txt
|
| 3 |
aiofiles==24.1.0
|
|
|
|
|
|
|
|
|
|
| 4 |
annotated-types==0.7.0
|
| 5 |
anyio==4.9.0
|
|
|
|
|
|
|
| 6 |
audioop-lts==0.2.1 ; python_full_version >= '3.13'
|
| 7 |
boolean-py==5.0
|
| 8 |
boto3==1.38.27
|
|
@@ -23,7 +28,8 @@ exceptiongroup==1.3.0 ; python_full_version < '3.11'
|
|
| 23 |
fastapi==0.115.12
|
| 24 |
ffmpy==0.6.0
|
| 25 |
filelock==3.18.0
|
| 26 |
-
|
|
|
|
| 27 |
gradio==5.32.1
|
| 28 |
gradio-client==1.10.2
|
| 29 |
groovy==0.1.2
|
|
@@ -58,6 +64,7 @@ mcp==1.9.0
|
|
| 58 |
mdurl==0.1.2
|
| 59 |
mpmath==1.3.0
|
| 60 |
msgpack==1.1.0
|
|
|
|
| 61 |
mypy==1.16.0
|
| 62 |
mypy-extensions==1.1.0
|
| 63 |
networkx==3.4.2 ; python_full_version < '3.11'
|
|
@@ -94,6 +101,7 @@ pip-requirements-parser==32.0.1
|
|
| 94 |
platformdirs==4.3.8
|
| 95 |
pluggy==1.6.0
|
| 96 |
pre-commit==3.8.0
|
|
|
|
| 97 |
py-serializable==2.0.0
|
| 98 |
pycparser==2.22 ; platform_python_implementation == 'PyPy'
|
| 99 |
pydantic==2.11.5
|
|
@@ -150,4 +158,5 @@ virtualenv==20.31.2
|
|
| 150 |
websockets==15.0.1
|
| 151 |
xdoctest==1.2.0
|
| 152 |
xxhash==3.5.0
|
|
|
|
| 153 |
zstandard==0.23.0
|
|
|
|
| 1 |
# This file was autogenerated by uv via the following command:
|
| 2 |
# uv export --format requirements-txt --no-hashes --no-annotate --group dev --group test -o requirements-dev.txt
|
| 3 |
aiofiles==24.1.0
|
| 4 |
+
aiohappyeyeballs==2.6.1
|
| 5 |
+
aiohttp==3.12.9
|
| 6 |
+
aiosignal==1.3.2
|
| 7 |
annotated-types==0.7.0
|
| 8 |
anyio==4.9.0
|
| 9 |
+
async-timeout==5.0.1 ; python_full_version < '3.11'
|
| 10 |
+
attrs==25.3.0
|
| 11 |
audioop-lts==0.2.1 ; python_full_version >= '3.13'
|
| 12 |
boolean-py==5.0
|
| 13 |
boto3==1.38.27
|
|
|
|
| 28 |
fastapi==0.115.12
|
| 29 |
ffmpy==0.6.0
|
| 30 |
filelock==3.18.0
|
| 31 |
+
frozenlist==1.6.2
|
| 32 |
+
fsspec==2025.3.0
|
| 33 |
gradio==5.32.1
|
| 34 |
gradio-client==1.10.2
|
| 35 |
groovy==0.1.2
|
|
|
|
| 64 |
mdurl==0.1.2
|
| 65 |
mpmath==1.3.0
|
| 66 |
msgpack==1.1.0
|
| 67 |
+
multidict==6.4.4
|
| 68 |
mypy==1.16.0
|
| 69 |
mypy-extensions==1.1.0
|
| 70 |
networkx==3.4.2 ; python_full_version < '3.11'
|
|
|
|
| 101 |
platformdirs==4.3.8
|
| 102 |
pluggy==1.6.0
|
| 103 |
pre-commit==3.8.0
|
| 104 |
+
propcache==0.3.1
|
| 105 |
py-serializable==2.0.0
|
| 106 |
pycparser==2.22 ; platform_python_implementation == 'PyPy'
|
| 107 |
pydantic==2.11.5
|
|
|
|
| 158 |
websockets==15.0.1
|
| 159 |
xdoctest==1.2.0
|
| 160 |
xxhash==3.5.0
|
| 161 |
+
yarl==1.20.0
|
| 162 |
zstandard==0.23.0
|
requirements.txt
CHANGED
|
@@ -1,8 +1,13 @@
|
|
| 1 |
# This file was autogenerated by uv via the following command:
|
| 2 |
# uv export --format requirements-txt --no-hashes --no-annotate --no-dev -o requirements.txt
|
| 3 |
aiofiles==24.1.0
|
|
|
|
|
|
|
|
|
|
| 4 |
annotated-types==0.7.0
|
| 5 |
anyio==4.9.0
|
|
|
|
|
|
|
| 6 |
audioop-lts==0.2.1 ; python_full_version >= '3.13'
|
| 7 |
boto3==1.38.27
|
| 8 |
botocore==1.38.27
|
|
@@ -17,7 +22,8 @@ exceptiongroup==1.3.0 ; python_full_version < '3.11'
|
|
| 17 |
fastapi==0.115.12
|
| 18 |
ffmpy==0.6.0
|
| 19 |
filelock==3.18.0
|
| 20 |
-
|
|
|
|
| 21 |
gradio==5.32.1
|
| 22 |
gradio-client==1.10.2
|
| 23 |
groovy==0.1.2
|
|
@@ -49,6 +55,7 @@ markupsafe==3.0.2
|
|
| 49 |
mcp==1.9.0
|
| 50 |
mdurl==0.1.2 ; sys_platform != 'emscripten'
|
| 51 |
mpmath==1.3.0
|
|
|
|
| 52 |
networkx==3.4.2 ; python_full_version < '3.11'
|
| 53 |
networkx==3.5 ; python_full_version >= '3.11'
|
| 54 |
numpy==1.26.4 ; python_full_version < '3.12'
|
|
@@ -74,6 +81,7 @@ packaging==24.2
|
|
| 74 |
pandas==2.2.3
|
| 75 |
pillow==11.2.1
|
| 76 |
pluggy==1.6.0
|
|
|
|
| 77 |
pycparser==2.22 ; platform_python_implementation == 'PyPy'
|
| 78 |
pydantic==2.11.5
|
| 79 |
pydantic-core==2.33.2
|
|
@@ -125,4 +133,5 @@ uvicorn==0.34.3 ; sys_platform != 'emscripten'
|
|
| 125 |
websockets==15.0.1
|
| 126 |
xdoctest==1.2.0
|
| 127 |
xxhash==3.5.0
|
|
|
|
| 128 |
zstandard==0.23.0
|
|
|
|
| 1 |
# This file was autogenerated by uv via the following command:
|
| 2 |
# uv export --format requirements-txt --no-hashes --no-annotate --no-dev -o requirements.txt
|
| 3 |
aiofiles==24.1.0
|
| 4 |
+
aiohappyeyeballs==2.6.1
|
| 5 |
+
aiohttp==3.12.9
|
| 6 |
+
aiosignal==1.3.2
|
| 7 |
annotated-types==0.7.0
|
| 8 |
anyio==4.9.0
|
| 9 |
+
async-timeout==5.0.1 ; python_full_version < '3.11'
|
| 10 |
+
attrs==25.3.0
|
| 11 |
audioop-lts==0.2.1 ; python_full_version >= '3.13'
|
| 12 |
boto3==1.38.27
|
| 13 |
botocore==1.38.27
|
|
|
|
| 22 |
fastapi==0.115.12
|
| 23 |
ffmpy==0.6.0
|
| 24 |
filelock==3.18.0
|
| 25 |
+
frozenlist==1.6.2
|
| 26 |
+
fsspec==2025.3.0
|
| 27 |
gradio==5.32.1
|
| 28 |
gradio-client==1.10.2
|
| 29 |
groovy==0.1.2
|
|
|
|
| 55 |
mcp==1.9.0
|
| 56 |
mdurl==0.1.2 ; sys_platform != 'emscripten'
|
| 57 |
mpmath==1.3.0
|
| 58 |
+
multidict==6.4.4
|
| 59 |
networkx==3.4.2 ; python_full_version < '3.11'
|
| 60 |
networkx==3.5 ; python_full_version >= '3.11'
|
| 61 |
numpy==1.26.4 ; python_full_version < '3.12'
|
|
|
|
| 81 |
pandas==2.2.3
|
| 82 |
pillow==11.2.1
|
| 83 |
pluggy==1.6.0
|
| 84 |
+
propcache==0.3.1
|
| 85 |
pycparser==2.22 ; platform_python_implementation == 'PyPy'
|
| 86 |
pydantic==2.11.5
|
| 87 |
pydantic-core==2.33.2
|
|
|
|
| 133 |
websockets==15.0.1
|
| 134 |
xdoctest==1.2.0
|
| 135 |
xxhash==3.5.0
|
| 136 |
+
yarl==1.20.0
|
| 137 |
zstandard==0.23.0
|
uv.lock
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|