diff --git a/README.md b/README.md index 586d746..6365cc6 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ CC24-Hub ist eine statische Website, die eine strukturierte Übersicht über bew - **Tool-Katalog**: Umfassende Sammlung von Open-Source und kommerziellen Forensik-Tools - **Matrix-Ansicht**: Visualisierung der Tools nach Domänen und Prozess-Phasen - **Erweiterte Filterung**: Suche nach Name, Beschreibung, Tags, Domäne und Phase -- **Self-Hosted Integration**: Direkte Links zu gehosteten Tool-Instanzen +- **CC24-Server Integration**: Direkte Links zu gehosteten Tool-Instanzen - **Status-Monitoring**: Live-Überwachung der verfügbaren Services - **Responsive Design**: Optimiert für Desktop und Mobile - **Dark/Light Mode**: Automatische Theme-Erkennung mit manueller Überschreibung diff --git a/dfir_yaml_editor.html b/dfir_yaml_editor.html index 2244239..7766f38 100644 --- a/dfir_yaml_editor.html +++ b/dfir_yaml_editor.html @@ -472,7 +472,7 @@
0
-
Self-Hosted
+
CC24-Server
0
@@ -550,7 +550,7 @@ @@ -812,7 +812,7 @@ document.getElementById('totalPhases').textContent = yamlData.phases ? yamlData.phases.length : 0; document.getElementById('totalDomainAgnostic').textContent = yamlData['domain-agnostic-software'] ? yamlData['domain-agnostic-software'].length : 0; - const selfHosted = tools.filter(tool => tool.accessType === 'self-hosted').length; + const selfHosted = tools.filter(tool => tool.accessType === 'server-based').length; document.getElementById('selfHostedCount').textContent = selfHosted; const knowledgebaseTools = tools.filter(tool => tool.knowledgebase === true).length; diff --git a/src/components/AIQueryInterface.astro b/src/components/AIQueryInterface.astro index e3bae69..a82da2e 100644 --- a/src/components/AIQueryInterface.astro +++ b/src/components/AIQueryInterface.astro @@ -18,10 +18,10 @@ const domainAgnosticSoftware = data['domain-agnostic-software'] || []; - KI-gestützte Tool-Empfehlungen + KI-gestützte Workflow-Empfehlungen

- Beschreiben Sie Ihr forensisches Szenario und erhalten Sie maßgeschneiderte Tool-Empfehlungen + Beschreiben Sie Ihr forensisches Szenario und erhalten Sie maßgeschneiderte Workflow-Empfehlungen basierend auf bewährten DFIR-Workflows und der verfügbaren Software-Datenbank.

@@ -45,7 +45,7 @@ const domainAgnosticSoftware = data['domain-agnostic-software'] || []; - Spezifisches Tool + Spezifische Software oder Methode @@ -145,15 +145,15 @@ document.addEventListener('DOMContentLoaded', () => { const modeConfig = { workflow: { placeholder: "Beschreiben Sie Ihr forensisches Szenario... z.B. 'Verdacht auf Ransomware-Angriff auf Windows-Domänencontroller mit verschlüsselten Dateien und verdächtigen Netzwerkverbindungen'", - description: "Beschreiben Sie Ihr forensisches Szenario und erhalten Sie maßgeschneiderte Tool-Empfehlungen basierend auf bewährten DFIR-Workflows und der verfügbaren Software-Datenbank.", + description: "Beschreiben Sie Ihr forensisches Szenario und erhalten Sie maßgeschneiderte Empfehlungen basierend auf bewährten DFIR-Workflows und der verfügbaren Software-Datenbank.", submitText: "Empfehlungen generieren", loadingText: "Analysiere Szenario und generiere Empfehlungen..." }, tool: { - placeholder: "Beschreiben Sie Ihr spezifisches Problem oder Ihre Anforderung... z.B. 'Ich benötige ein Tool zur Analyse von Android-Backups mit WhatsApp-Nachrichten und GPS-Daten'", - description: "Beschreiben Sie Ihr spezifisches Problem oder Ihre Anforderung und erhalten Sie 1-3 gezielt passende Tool-Empfehlungen mit detaillierten Erklärungen zur optimalen Anwendung.", - submitText: "Tool-Empfehlungen finden", - loadingText: "Analysiere Anforderungen und suche passende Tools..." + placeholder: "Beschreiben Sie Ihr spezifisches Problem oder Ihre Anforderung... z.B. 'Ich benötige eine Anwendung zur Analyse von Android-Backups mit WhatsApp-Nachrichten und GPS-Daten'", + description: "Beschreiben Sie Ihr spezifisches Problem oder Ihre Anforderung und erhalten Sie 1-3 gezielt passende Empfehlungen mit detaillierten Erklärungen zur optimalen Anwendung.", + submitText: "Empfehlungen finden", + loadingText: "Analysiere Anforderungen und suche passende Methode..." } }; @@ -261,7 +261,7 @@ document.addEventListener('DOMContentLoaded', () => { // Disable submit button aiSubmitBtn.disabled = true; - submitBtnText.textContent = currentMode === 'workflow' ? 'Generiere Empfehlungen...' : 'Suche passende Tools...'; + submitBtnText.textContent = currentMode === 'workflow' ? 'Generiere Empfehlungen...' : 'Suche passende Methode...'; try { const response = await fetch('/api/ai/query', { @@ -474,7 +474,7 @@ document.addEventListener('DOMContentLoaded', () => {
- ${hasValidProjectUrl ? 'Self-Hosted' : ''} + ${hasValidProjectUrl ? 'CC24-Server' : ''} ${tool.license !== 'Proprietary' ? 'Open Source' : ''} ${tool.skillLevel}
@@ -631,7 +631,7 @@ document.addEventListener('DOMContentLoaded', () => { ${getSuitabilityText(toolRec.suitability_score)} - ${hasValidProjectUrl ? 'Self-Hosted' : ''} + ${hasValidProjectUrl ? 'CC24-Server' : ''} ${fullTool.license !== 'Proprietary' ? 'Open Source' : ''} ${fullTool.knowledgebase === true ? '📖' : ''}
@@ -658,7 +658,7 @@ document.addEventListener('DOMContentLoaded', () => { - Warum dieses Tool? + Warum diese Methode? ${formatWorkflowSuggestion(toolRec.detailed_explanation)} ${toolRec.implementation_approach ? ` diff --git a/src/components/ToolCard.astro b/src/components/ToolCard.astro index 49ebc8c..b7454a7 100644 --- a/src/components/ToolCard.astro +++ b/src/components/ToolCard.astro @@ -37,7 +37,7 @@ const cardClass = hasValidProjectUrl ? 'card card-hosted tool-card' : (tool.lice

{tool.name}

- {hasValidProjectUrl && Self-Hosted} + {hasValidProjectUrl && CC24-Server} {tool.license !== 'Proprietary' && OSS} {hasKnowledgebase && 📖}
diff --git a/src/components/ToolFilters.astro b/src/components/ToolFilters.astro index 99f6d6a..6d8d751 100644 --- a/src/components/ToolFilters.astro +++ b/src/components/ToolFilters.astro @@ -337,7 +337,7 @@ const sortedTags = Object.entries(tagFrequency) return true; }); - // Sort filtered results: self-hosted first, proprietary last + // Sort filtered results: server-based first, proprietary last filtered.sort((a, b) => { const aHosted = isToolHosted(a); const bHosted = isToolHosted(b); diff --git a/src/components/ToolMatrix.astro b/src/components/ToolMatrix.astro index 6b91add..8e91b4b 100644 --- a/src/components/ToolMatrix.astro +++ b/src/components/ToolMatrix.astro @@ -67,7 +67,7 @@ domains.forEach((domain: any) => {

{tool.name}

- {hasValidProjectUrl && Self-Hosted} + {hasValidProjectUrl && CC24-Server} {tool.license !== 'Proprietary' && OSS} {tool.knowledgebase === true && Infos 📖}
@@ -90,7 +90,7 @@ domains.forEach((domain: any) => {
-

DFIR Tools Matrix

+

MATRIX

@@ -255,7 +255,7 @@ domains.forEach((domain: any) => { badgesContainer.innerHTML = ''; if (hasValidProjectUrl) { - badgesContainer.innerHTML += 'Self-Hosted'; + badgesContainer.innerHTML += 'CC24-Server'; } if (tool.license !== 'Proprietary') { badgesContainer.innerHTML += 'Open Source'; diff --git a/src/data/tools.yaml b/src/data/tools.yaml index f691e62..ef10c6d 100644 --- a/src/data/tools.yaml +++ b/src/data/tools.yaml @@ -89,7 +89,7 @@ tools: domain-agnostic-software: - collaboration-general skillLevel: intermediate - accessType: self-hosted + accessType: server-based url: https://github.com/TheHive-Project/TheHive projectUrl: '' license: Community Edition (Free) / Commercial @@ -122,7 +122,7 @@ tools: platforms: - Web skillLevel: intermediate - accessType: self-hosted + accessType: server-based url: https://misp-project.org/ projectUrl: https://misp.cc24.dev license: AGPL-3.0 @@ -154,7 +154,7 @@ tools: - Web domain-agnostic-software: null skillLevel: intermediate - accessType: self-hosted + accessType: server-based url: https://timesketch.org/ projectUrl: '' license: Apache 2.0 @@ -286,7 +286,7 @@ tools: - Web domain-agnostic-software: null skillLevel: advanced - accessType: self-hosted + accessType: server-based url: https://github.com/cert-ee/cuckoo3 projectUrl: '' license: GPL-3.0 @@ -382,7 +382,7 @@ tools: - Web domain-agnostic-software: null skillLevel: beginner - accessType: self-hosted + accessType: server-based url: https://gchq.github.io/CyberChef/ projectUrl: '' license: Apache 2.0 @@ -420,7 +420,7 @@ tools: - Web domain-agnostic-software: null skillLevel: advanced - accessType: self-hosted + accessType: server-based url: https://www.velociraptor.app/ projectUrl: https://raptor.cc24.dev license: Apache 2.0 @@ -456,7 +456,7 @@ tools: - Web domain-agnostic-software: null skillLevel: advanced - accessType: self-hosted + accessType: server-based url: https://github.com/google/grr projectUrl: '' license: Apache 2.0 @@ -489,7 +489,7 @@ tools: - Linux domain-agnostic-software: null skillLevel: expert - accessType: self-hosted + accessType: server-based url: https://arkime.com/ projectUrl: '' license: Apache 2.0 @@ -621,7 +621,7 @@ tools: - Web domain-agnostic-software: null skillLevel: intermediate - accessType: self-hosted + accessType: server-based url: https://neo4j.com/ projectUrl: https://graph.cc24.dev license: GPL-3.0 / Commercial @@ -689,7 +689,7 @@ tools: domain-agnostic-software: - collaboration-general skillLevel: novice - accessType: self-hosted + accessType: server-based url: https://nextcloud.com/ projectUrl: https://cloud.cc24.dev license: AGPL-3.0 @@ -719,7 +719,7 @@ tools: domain-agnostic-software: - collaboration-general skillLevel: beginner - accessType: self-hosted + accessType: server-based url: https://gitea.io/ projectUrl: https://git.cc24.dev license: MIT @@ -859,7 +859,7 @@ tools: - Web domain-agnostic-software: null skillLevel: intermediate - accessType: self-hosted + accessType: server-based url: https://graphsense.org/ projectUrl: '' license: MIT diff --git a/src/pages/about.astro b/src/pages/about.astro index 5390d8e..73a016d 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -177,9 +177,9 @@ import BaseLayout from '../layouts/BaseLayout.astro';
-

🔍 Tool-Vorschläge

+

🔍 Vorschläge

- Ich suche stets nach Ergänzungen für die Liste. Falls euch interessante Tools einfallen – + Ich suche stets nach Ergänzungen für die Liste. Falls euch interessante Tools oder Methoden einfallen – schreibt mir gerne auf Signal!

@@ -219,8 +219,8 @@ import BaseLayout from '../layouts/BaseLayout.astro';

- Akademisches Projekt | Seminargruppe CC24-w1 | - Alle Tools und Dienste dienen ausschließlich Bildungs- und Forschungszwecken + Inoffizielles Studienprojekt | Seminargruppe CC24-w1 | + Alle dargestellte Software, Dienste und Methoden dienen Bildungs- und Forschungszwecken sowie der Weiterentwicklung der IT-forensischen Methodik.

diff --git a/src/pages/api/ai/query.ts b/src/pages/api/ai/query.ts index 4696c9e..ec811fc 100644 --- a/src/pages/api/ai/query.ts +++ b/src/pages/api/ai/query.ts @@ -119,12 +119,12 @@ function createWorkflowSystemPrompt(toolsData: any): string { // Build dynamic phase descriptions for tool selection const phaseDescriptions = regularPhases.map((phase: any) => - `- ${phase.name}: ${phase.description || 'Tools for this phase'}` + `- ${phase.name}: ${phase.description || 'Tools/Methods for this phase'}` ).join('\n'); // Add domain-agnostic software descriptions const domainAgnosticDescriptions = domainAgnosticSoftware.map((section: any) => - `- ${section.name}: ${section.description || 'Cross-cutting tools and platforms'}` + `- ${section.name}: ${section.description || 'Cross-cutting software and platforms'}` ).join('\n'); // Create valid phase values for JSON schema @@ -133,9 +133,9 @@ function createWorkflowSystemPrompt(toolsData: any): string { ...domainAgnosticSoftware.map((s: any) => s.id) ].join('|'); - return `Du bist ein DFIR (Digital Forensics and Incident Response) Experte, der Ermittlern bei der Toolauswahl hilft. + return `Du bist ein DFIR (Digital Forensics and Incident Response) Experte, der Ermittlern bei der Auswahl von Software und Methoden hilft. -VERFÜGBARE TOOLS DATABASE: +VERFÜGBARE DATENBASIS: ${JSON.stringify(toolsList, null, 2)} UNTERSUCHUNGSPHASEN (NIST Framework): @@ -145,18 +145,18 @@ FORENSISCHE DOMÄNEN: ${domainsDescription} WICHTIGE REGELN: -1. Pro Phase 1-3 Tools empfehlen (immer mindestens 1 wenn verfügbar) -2. Tools können in MEHREREN Phasen empfohlen werden wenn sinnvoll - versuche ein Tool für jede Phase zu empfehlen, selbst wenn die Priorität "low" ist. -3. Für Reporting-Phase: Visualisierungs- und Dokumentationstools einschließen +1. Pro Phase 1-3 Tools/Methoden empfehlen (immer mindestens 1 wenn verfügbar) +2. Tools/Methoden können in MEHREREN Phasen empfohlen werden wenn sinnvoll - versuche ein Tool/Methode für jede Phase zu empfehlen, selbst wenn die Priorität "low" ist. +3. Für Reporting-Phase: Visualisierungs- und Dokumentationssoftware einschließen 4. Gib stets dem spezieller für den Fall geeigneten Werkzeug den Vorzug. 5. Deutsche Antworten für deutsche Anfragen, English for English queries -6. Bewerbe NIEMALS Proprietäre Software fälschlicherweise als Open-Source-Tools, erkenne aber an, falls diese besser geeignet sein könnte. -7. Bevorzuge alles, was nicht proprietär ist (license != "Proprietary"), aber erkenne an wenn ein proprietäres Tool besser geeignet ist. +6. Bewerbe NIEMALS Proprietäre Software fälschlicherweise als Open-Source-Software, erkenne aber an, falls diese besser geeignet sein könnte. +7. Bevorzuge alles, was nicht proprietär ist (license != "Proprietary"), aber erkenne an, wenn proprietäre Software besser geeignet ist. -TOOL-AUSWAHL NACH PHASE: +SOFTWARE/METHODEN-AUSWAHL NACH PHASE: ${phaseDescriptions} -DOMAIN-AGNOSTIC SOFTWARE: +DOMÄNENAGNOSTISCHE SOFTWARE/METHODEN: ${domainAgnosticDescriptions} ANTWORT-FORMAT (strict JSON): @@ -167,7 +167,7 @@ ANTWORT-FORMAT (strict JSON): "name": "EXAKTER Name aus der Database", "priority": "high|medium|low", "phase": "${validPhases}", - "justification": "Warum dieses Tool für diese Phase und Szenario geeignet ist" + "justification": "Warum diese Methode für diese Phase und Szenario geeignet ist" } ], "workflow_suggestion": "Vorgeschlagener Untersuchungsablauf", @@ -192,9 +192,9 @@ function createToolSystemPrompt(toolsData: any): string { projectUrl: tool.projectUrl })); - return `Du bist ein DFIR (Digital Forensics and Incident Response) Experte, der bei der Auswahl spezifischer Tools für konkrete Probleme hilft. + return `Du bist ein DFIR (Digital Forensics and Incident Response) Experte, der bei der Auswahl spezifischer Software/Methoden für konkrete Probleme hilft. -VERFÜGBARE TOOLS DATABASE: +VERFÜGBARE DATENBASIS: ${JSON.stringify(toolsList, null, 2)} WICHTIGE REGELN: @@ -216,11 +216,11 @@ ANTWORT-FORMAT (strict JSON): "name": "EXAKTER Name aus der Database", "rank": 1, "suitability_score": "high|medium|low", - "detailed_explanation": "Detaillierte Erklärung, warum dieses Tool das Problem löst", + "detailed_explanation": "Detaillierte Erklärung, warum dieses Tool/diese Methode das Problem löst", "implementation_approach": "Konkrete Schritte/Ansatz zur Anwendung für dieses spezifische Problem", "pros": ["Spezifische Vorteile für diesen Anwendungsfall", "Weitere Vorteile"], "cons": ["Potentielle Nachteile oder Limitationen", "Weitere Einschränkungen"], - "alternatives": "Alternative Ansätze oder ergänzende Tools, falls relevant" + "alternatives": "Alternative Ansätze oder ergänzende Tools/Methoden, falls relevant" } ], "additional_considerations": "Wichtige Überlegungen, Voraussetzungen oder Warnungen" diff --git a/src/pages/index.astro b/src/pages/index.astro index 8cc87b4..3587d74 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -23,7 +23,7 @@ const tools = data.tools;

- Unser kuratiertes Verzeichnis bietet euch eine strukturierte Übersicht über bewährte DFIR-Tools, + Unser kuratiertes Verzeichnis bietet euch eine strukturierte Übersicht über bewährte Methoden und Tools, kategorisiert nach forensischen Domänen und Untersuchungsphasen nach Kent, Chevalier, Grance & Dang.

@@ -41,7 +41,7 @@ const tools = data.tools; - SSO & Zugang erfahren + Infos zu SSO & Zugang @@ -59,7 +59,7 @@ const tools = data.tools; - Tools entdecken + Entdecken
@@ -354,7 +354,7 @@ function createToolCard(tool) {

${tool.name}

- ${hasValidProjectUrl ? 'Self-Hosted' : ''} + ${hasValidProjectUrl ? 'CC24-Server' : ''} ${tool.license !== 'Proprietary' ? 'OSS' : ''} ${hasKnowledgebase ? '📖' : ''}
diff --git a/src/pages/knowledgebase.astro b/src/pages/knowledgebase.astro index e08cc4b..58cb2b1 100644 --- a/src/pages/knowledgebase.astro +++ b/src/pages/knowledgebase.astro @@ -56,7 +56,7 @@ knowledgebaseTools.sort((a: any, b: any) => a.name.localeCompare(b.name));

Noch keine Knowledgebase-Einträge

- Knowledgebase-Einträge werden automatisch angezeigt, sobald Tools das Attribut "knowledgebase: true" haben. + Knowledgebase-Einträge werden automatisch angezeigt, sobald Datenbankeinträge das Attribut "knowledgebase: true" haben. Wenn hier noch nichts drinsteht, habe ich noch nichts dazu geschrieben.

) : ( @@ -76,7 +76,7 @@ knowledgebaseTools.sort((a: any, b: any) => a.name.localeCompare(b.name)); tool.projectUrl.trim() !== ""; return ( <> - {hasValidProjectUrl && Self-Hosted} + {hasValidProjectUrl && CC24-Server} {tool.license !== 'Proprietary' && Open Source} Infos 📖 diff --git a/src/pages/status.astro b/src/pages/status.astro index 035c23b..dc44dc0 100644 --- a/src/pages/status.astro +++ b/src/pages/status.astro @@ -3,7 +3,7 @@ import BaseLayout from '../layouts/BaseLayout.astro'; import { getToolsData } from '../utils/dataService.js'; -// Load tools data to get self-hosted services +// Load tools data to get server-based services const data = await getToolsData(); // Filter for hosted services based on projectUrl presence