@@ -604,7 +752,7 @@
let selectedTools = new Set();
let filteredToolsCache = [];
- // Initialize with correct YAML structure
+ // Initialize with correct YAML structure including scenarios
function init() {
yamlData = {
tools: [],
@@ -627,6 +775,13 @@
'domain-agnostic-software': [
{ id: 'collaboration-general', name: 'Übergreifend & Kollaboration', description: 'Cross-cutting tools and collaboration platforms' },
{ id: 'specific-os', name: 'Betriebssysteme', description: 'Operating Systems which focus on forensics' }
+ ],
+ scenarios: [
+ { id: 'registry', icon: '🗃️', friendly_name: 'Registry-Analyse' },
+ { id: 'memory-forensics', icon: '🧠', friendly_name: 'Memory-Forensik' },
+ { id: 'network-analysis', icon: '🌐', friendly_name: 'Netzwerk-Analyse' },
+ { id: 'malware-analysis', icon: '🦠', friendly_name: 'Malware-Analyse' },
+ { id: 'mobile-forensics', icon: '📱', friendly_name: 'Mobile-Forensik' }
]
};
@@ -648,7 +803,7 @@
else if (tabName === 'knowledge') updateKnowledgeToolSelect();
}
- // Enhanced Search Functionality
+ // Enhanced Search Functionality including scenarios and related_software
function applySearch() {
applyFilters();
}
@@ -670,6 +825,15 @@
// Search in related concepts
if (tool.related_concepts && tool.related_concepts.some(concept => concept.toLowerCase().includes(term))) return true;
+ // Search in related software
+ if (tool.related_software && tool.related_software.some(software => software.toLowerCase().includes(term))) return true;
+
+ // Search in scenarios
+ if (tool.scenarios && tool.scenarios.some(scenario => {
+ const scenarioData = yamlData.scenarios.find(s => s.id === scenario);
+ return scenarioData && scenarioData.friendly_name.toLowerCase().includes(term);
+ })) return true;
+
// Search in type
if (tool.type && tool.type.toLowerCase().includes(term)) return true;
@@ -701,6 +865,16 @@
phasesContainer.appendChild(div);
});
+ // Populate scenarios
+ const scenariosContainer = document.getElementById('scenariosCheckbox');
+ scenariosContainer.innerHTML = '';
+ yamlData.scenarios.forEach(scenario => {
+ const div = document.createElement('div');
+ div.className = 'checkbox-item';
+ div.innerHTML = `
`;
+ scenariosContainer.appendChild(div);
+ });
+
// Populate domain-agnostic software
const domainAgnosticContainer = document.getElementById('domainAgnosticCheckbox');
domainAgnosticContainer.innerHTML = '';
@@ -750,12 +924,19 @@
}
function showMessage(message, type = 'success') {
+ // Remove existing messages
+ document.querySelectorAll('.message').forEach(msg => msg.remove());
+
const messageDiv = document.createElement('div');
messageDiv.className = `message ${type}`;
messageDiv.textContent = message;
document.body.appendChild(messageDiv);
- setTimeout(() => document.body.removeChild(messageDiv), 3000);
+ setTimeout(() => {
+ if (messageDiv.parentNode) {
+ messageDiv.remove();
+ }
+ }, 4000);
}
function updateStats() {
@@ -766,7 +947,8 @@
software: yamlData.tools.filter(t => t.type === 'software' || !t.type).length,
methods: yamlData.tools.filter(t => t.type === 'method').length,
concepts: yamlData.tools.filter(t => t.type === 'concept').length,
- withKnowledgebase: yamlData.tools.filter(t => t.knowledgebase).length
+ withKnowledgebase: yamlData.tools.filter(t => t.knowledgebase).length,
+ withRelatedSoftware: yamlData.tools.filter(t => t.related_software && t.related_software.length > 0).length
};
document.getElementById('stats').innerHTML = `
@@ -775,12 +957,14 @@
`;
}
- // Tag input handlers
+ // Enhanced tag input handlers for related software
function focusTagInput() { document.getElementById('tagInputField').focus(); }
function focusRelatedConceptInput() { document.getElementById('relatedConceptInputField').focus(); }
+ function focusRelatedSoftwareInput() { document.getElementById('relatedSoftwareInputField').focus(); }
function handleTagInput(event) {
if (event.key === 'Enter' || event.key === ',') {
@@ -806,6 +990,18 @@
}
}
+ function handleRelatedSoftwareInput(event) {
+ if (event.key === 'Enter' || event.key === ',') {
+ event.preventDefault();
+ const input = event.target;
+ const value = input.value.trim();
+ if (value) {
+ addTag('relatedSoftwareInput', value);
+ input.value = '';
+ }
+ }
+ }
+
function addTag(containerId, value) {
const container = document.getElementById(containerId);
const input = container.querySelector('input');
@@ -832,6 +1028,12 @@
).filter(concept => concept);
}
+ function getRelatedSoftware() {
+ return Array.from(document.querySelectorAll('#relatedSoftwareInput .tag')).map(tag =>
+ tag.textContent.replace('×', '').trim()
+ ).filter(software => software);
+ }
+
function saveTool() {
try {
if (!yamlData) yamlData = { tools: [] };
@@ -850,17 +1052,23 @@
const icon = document.getElementById('toolIcon').value.trim();
if (icon) tool.icon = icon;
- // Add domains and phases
+ // Add domains, phases, and scenarios
tool.domains = getCheckedValues('#domainsCheckbox input:checked');
tool.phases = getCheckedValues('#phasesCheckbox input:checked');
+
+ const scenarios = getCheckedValues('#scenariosCheckbox input:checked');
+ if (scenarios.length > 0) tool.scenarios = scenarios;
- // Add tags and related concepts
+ // Add tags, related concepts, and related software
const tags = getTags();
if (tags.length > 0) tool.tags = tags;
const relatedConcepts = getRelatedConcepts();
if (relatedConcepts.length > 0) tool.related_concepts = relatedConcepts;
+ const relatedSoftware = getRelatedSoftware();
+ if (relatedSoftware.length > 0) tool.related_software = relatedSoftware;
+
// Type-specific fields
if (toolType === 'software') {
tool.platforms = getCheckedValues('#platformsCheckbox input:checked');
@@ -912,6 +1120,7 @@
document.getElementById('toolForm').reset();
document.getElementById('tagsInput').innerHTML = '
';
currentEditingIndex = -1;
toggleConditionalFields();
}
@@ -946,6 +1155,7 @@
// Set checkboxes
setCheckboxValues('#domainsCheckbox input', tool.domains || []);
setCheckboxValues('#phasesCheckbox input', tool.phases || []);
+ setCheckboxValues('#scenariosCheckbox input', tool.scenarios || []);
setCheckboxValues('#platformsCheckbox input', tool.platforms || []);
setCheckboxValues('#domainAgnosticCheckbox input', tool['domain-agnostic-software'] || []);
@@ -959,6 +1169,11 @@
conceptsContainer.innerHTML = '
';
(tool.related_concepts || []).forEach(concept => addTag('relatedConceptsInput', concept));
+ // Set related software
+ const softwareContainer = document.getElementById('relatedSoftwareInput');
+ softwareContainer.innerHTML = '
';
+ (tool.related_software || []).forEach(software => addTag('relatedSoftwareInput', software));
+
toggleConditionalFields();
showTab('editor');
}
@@ -1028,12 +1243,14 @@
const tags = (tool.tags || []).map(tag => `
' : '';
+ const relatedSoftwareIndicator = (tool.related_software && tool.related_software.length > 0) ? '
' : '';
+ const scenariosIndicator = (tool.scenarios && tool.scenarios.length > 0) ? '
+
${tool.description}
+
${tags} ${knowledgebaseIndicator} ${relatedSoftwareIndicator} ${scenariosIndicator}
+
@@ -1051,7 +1268,7 @@
renderToolsGrid();
}
- // Enhanced Bulk Operations
+ // Enhanced Bulk Operations including scenarios and related software
function renderBulkGrid() {
const container = document.getElementById('bulkToolsGrid');
container.innerHTML = '';
@@ -1074,13 +1291,22 @@
card.style.opacity = isSelected ? '1' : '0.7';
card.style.border = isSelected ? '2px solid var(--primary)' : '1px solid var(--border)';
+ const indicators = [];
+ if (tool.knowledgebase) indicators.push('📚');
+ if (tool.related_software?.length > 0) indicators.push('🔗');
+ if (tool.scenarios?.length > 0) indicators.push('🎮');
+
card.innerHTML = `
${tool.icon ? tool.icon + ' ' : ''}${tool.name}
+
${indicators.join(' ')}
+
+
${tool.description}
+
+ ${tool.type || 'software'}
+ ${tool.skillLevel}
-
${tool.description}
-
${tool.type || 'software'}
`;
return card;
@@ -1111,11 +1337,19 @@
function updateSelectionCount() {
const count = selectedTools.size;
- document.getElementById('selectionInfo').textContent =
- count === 0 ? 'No tools selected' : `${count} tool(s) selected`;
+ const info = document.getElementById('selectionInfo');
+ if (count === 0) {
+ info.textContent = 'No tools selected';
+ info.style.background = 'white';
+ info.style.borderColor = 'var(--border)';
+ } else {
+ info.textContent = `${count} tool(s) selected`;
+ info.style.background = '#e3f2fd';
+ info.style.borderColor = 'var(--primary)';
+ }
}
- // Enhanced bulk operations with new clear functions
+ // Enhanced bulk operations with scenarios and related software
function bulkSetType() {
if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
const newType = prompt('Enter new type (software/method/concept):');
@@ -1186,7 +1420,6 @@
}
}
- // NEW: Clear field functions
function bulkClearTags() {
if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
if (confirm(`Are you sure you want to clear ALL tags from ${selectedTools.size} selected tools?`)) {
@@ -1198,6 +1431,7 @@
}
}
+ // Domain operations
function bulkAddDomains() {
if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
const domains = prompt('Enter domain IDs to add (comma-separated):');
@@ -1240,6 +1474,7 @@
}
}
+ // Phase operations
function bulkAddPhases() {
if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
const phases = prompt('Enter phase IDs to add (comma-separated):');
@@ -1282,7 +1517,50 @@
}
}
- // NEW: Platform operations
+ // NEW: Scenario operations
+ function bulkAddScenarios() {
+ if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
+ const scenarios = prompt('Enter scenario IDs to add (comma-separated):');
+ if (scenarios) {
+ const scenarioList = scenarios.split(',').map(s => s.trim()).filter(s => s);
+ selectedTools.forEach(index => {
+ const tool = yamlData.tools[index];
+ tool.scenarios = [...new Set([...(tool.scenarios || []), ...scenarioList])];
+ });
+ showMessage(`Added scenarios to ${selectedTools.size} tools`);
+ renderBulkGrid();
+ }
+ }
+
+ function bulkRemoveScenarios() {
+ if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
+ const scenarios = prompt('Enter scenario IDs to remove (comma-separated):');
+ if (scenarios) {
+ const scenarioList = scenarios.split(',').map(s => s.trim()).filter(s => s);
+ selectedTools.forEach(index => {
+ const tool = yamlData.tools[index];
+ if (tool.scenarios) {
+ tool.scenarios = tool.scenarios.filter(scenario => !scenarioList.includes(scenario));
+ if (tool.scenarios.length === 0) delete tool.scenarios;
+ }
+ });
+ showMessage(`Removed scenarios from ${selectedTools.size} tools`);
+ renderBulkGrid();
+ }
+ }
+
+ function bulkClearScenarios() {
+ if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
+ if (confirm(`Are you sure you want to clear ALL scenarios from ${selectedTools.size} selected tools?`)) {
+ selectedTools.forEach(index => {
+ delete yamlData.tools[index].scenarios;
+ });
+ showMessage(`Cleared scenarios from ${selectedTools.size} tools`);
+ renderBulkGrid();
+ }
+ }
+
+ // Platform operations
function bulkAddPlatforms() {
if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
const platforms = prompt('Enter platforms to add (comma-separated, e.g., Windows,Linux,macOS):');
@@ -1325,6 +1603,7 @@
}
}
+ // Related concepts operations
function bulkAddRelatedConcepts() {
if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
const concepts = prompt('Enter related concept names to add (comma-separated):');
@@ -1367,9 +1646,52 @@
}
}
+ // NEW: Related software operations
+ function bulkAddRelatedSoftware() {
+ if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
+ const software = prompt('Enter related software names to add (comma-separated):');
+ if (software) {
+ const softwareList = software.split(',').map(s => s.trim()).filter(s => s);
+ selectedTools.forEach(index => {
+ const tool = yamlData.tools[index];
+ tool.related_software = [...new Set([...(tool.related_software || []), ...softwareList])];
+ });
+ showMessage(`Added related software to ${selectedTools.size} tools`);
+ renderBulkGrid();
+ }
+ }
+
+ function bulkRemoveRelatedSoftware() {
+ if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
+ const software = prompt('Enter related software names to remove (comma-separated):');
+ if (software) {
+ const softwareList = software.split(',').map(s => s.trim()).filter(s => s);
+ selectedTools.forEach(index => {
+ const tool = yamlData.tools[index];
+ if (tool.related_software) {
+ tool.related_software = tool.related_software.filter(sw => !softwareList.includes(sw));
+ if (tool.related_software.length === 0) delete tool.related_software;
+ }
+ });
+ showMessage(`Removed related software from ${selectedTools.size} tools`);
+ renderBulkGrid();
+ }
+ }
+
+ function bulkClearRelatedSoftware() {
+ if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
+ if (confirm(`Are you sure you want to clear ALL related software from ${selectedTools.size} selected tools?`)) {
+ selectedTools.forEach(index => {
+ delete yamlData.tools[index].related_software;
+ });
+ showMessage(`Cleared related software from ${selectedTools.size} tools`);
+ renderBulkGrid();
+ }
+ }
+
function bulkDelete() {
if (selectedTools.size === 0) return showMessage('No tools selected', 'error');
- if (confirm(`Are you sure you want to delete ${selectedTools.size} selected tools?`)) {
+ if (confirm(`Are you sure you want to delete ${selectedTools.size} selected tools? This action cannot be undone!`)) {
const indicesToDelete = Array.from(selectedTools).sort((a, b) => b - a);
indicesToDelete.forEach(index => yamlData.tools.splice(index, 1));
selectedTools.clear();
@@ -1380,7 +1702,7 @@
}
}
- // Knowledge Generator - Enhanced for ForensicPathways format
+ // Knowledge Generator - Enhanced for ForensicPathways format with scenarios and related_software
function updateKnowledgeToolSelect() {
const select = document.getElementById('knowledgeToolSelect');
select.innerHTML = '
';
@@ -1419,86 +1741,91 @@
.replace(/^-|-$/g, '');
return `---
- title: "${tool.name}"
- description: "${tool.description.split('\n')[0].trim()}"
- last_updated: ${new Date().toISOString().split('T')[0]}
- tool_name: "${tool.name}"
- related_tools: ${tool.related_concepts ? JSON.stringify(tool.related_concepts) : '[]'}
- author: "CC24-Team"
- difficulty: "${tool.skillLevel || 'intermediate'}"
- categories: ${tool.type === 'concept' ? '["concepts"]' : tool.type === 'method' ? '["methods"]' : '["tools"]'}
- tags: ${tool.tags ? JSON.stringify(tool.tags) : '[]'}
- published: true
- ---
+title: "${tool.name}"
+description: "${tool.description.split('\n')[0].trim()}"
+last_updated: ${new Date().toISOString().split('T')[0]}
+tool_name: "${tool.name}"
+related_tools: ${JSON.stringify([...(tool.related_concepts || []), ...(tool.related_software || [])])}
+author: "CC24-Team"
+difficulty: "${tool.skillLevel || 'intermediate'}"
+categories: ${tool.type === 'concept' ? '["concepts"]' : tool.type === 'method' ? '["methods"]' : '["tools"]'}
+tags: ${tool.tags ? JSON.stringify(tool.tags) : '[]'}
+published: true
+---
- # ${tool.icon ? tool.icon + ' ' : ''}${tool.name}
+# ${tool.icon ? tool.icon + ' ' : ''}${tool.name}
- ## Übersicht
+## Übersicht
- ${tool.description}
+${tool.description}
- **Typ**: ${tool.type || 'software'}
- **Skill Level**: ${tool.skillLevel || 'intermediate'}
- **Offizielle URL**: [${tool.name}](${tool.url})
+**Typ**: ${tool.type || 'software'}
+**Skill Level**: ${tool.skillLevel || 'intermediate'}
+**Offizielle URL**: [${tool.name}](${tool.url})
- ${tool.license ? `**Lizenz**: ${tool.license}\n` : ''}${tool.platforms && tool.platforms.length > 0 ? `**Plattformen**: ${tool.platforms.join(', ')}\n` : ''}${tool.accessType ? `**Zugriff**: ${tool.accessType}\n` : ''}
+${tool.license ? `**Lizenz**: ${tool.license}\n` : ''}${tool.platforms && tool.platforms.length > 0 ? `**Plattformen**: ${tool.platforms.join(', ')}\n` : ''}${tool.accessType ? `**Zugriff**: ${tool.accessType}\n` : ''}
- ${tool.domains && tool.domains.length > 0 ? `## Anwendungsbereiche
+${tool.domains && tool.domains.length > 0 ? `## Anwendungsbereiche
- ${tool.domains.map(domain => `- ${domain}`).join('\n')}\n\n` : ''}${tool.phases && tool.phases.length > 0 ? `## Ermittlungsphasen
+${tool.domains.map(domain => `- ${domain}`).join('\n')}\n\n` : ''}${tool.phases && tool.phases.length > 0 ? `## Ermittlungsphasen
- ${tool.phases.map(phase => `- ${phase}`).join('\n')}\n\n` : ''}## ${tool.type === 'concept' ? 'Grundlagen' : tool.type === 'method' ? 'Vorgehensweise' : 'Installation & Nutzung'}
+${tool.phases.map(phase => `- ${phase}`).join('\n')}\n\n` : ''}${tool.scenarios && tool.scenarios.length > 0 ? `## Anwendungsszenarien
- ${tool.type === 'concept' ?
- `### Kernkonzepte
+${tool.scenarios.map(scenario => {
+ const scenarioData = yamlData.scenarios.find(s => s.id === scenario);
+ return scenarioData ? `- ${scenarioData.icon} ${scenarioData.friendly_name}` : `- ${scenario}`;
+}).join('\n')}\n\n` : ''}## ${tool.type === 'concept' ? 'Grundlagen' : tool.type === 'method' ? 'Vorgehensweise' : 'Installation & Nutzung'}
- TODO: Beschreibe die wichtigsten Konzepte und Prinzipien.
+${tool.type === 'concept' ?
+`### Kernkonzepte
- ### Anwendungsbereiche
+TODO: Beschreibe die wichtigsten Konzepte und Prinzipien.
- TODO: Erkläre, wo und wie dieses Konzept angewendet wird.` :
- tool.type === 'method' ?
- `### Schritt-für-Schritt Anleitung
+### Anwendungsbereiche
- 1. TODO: Erster Schritt
- 2. TODO: Zweiter Schritt
- 3. TODO: Dritter Schritt
+TODO: Erkläre, wo und wie dieses Konzept angewendet wird.` :
+tool.type === 'method' ?
+`### Schritt-für-Schritt Anleitung
- ### Voraussetzungen
+1. TODO: Erster Schritt
+2. TODO: Zweiter Schritt
+3. TODO: Dritter Schritt
- TODO: Liste die erforderlichen Voraussetzungen auf.` :
- `### Installation
+### Voraussetzungen
- TODO: Beschreibe die Installation für die relevanten Plattformen.
+TODO: Liste die erforderlichen Voraussetzungen auf.` :
+`### Installation
- ### Grundlegende Nutzung
+TODO: Beschreibe die Installation für die relevanten Plattformen.
- TODO: Erkläre die wichtigsten Funktionen und Befehle.
+### Grundlegende Nutzung
- ### Workflow-Beispiele
+TODO: Erkläre die wichtigsten Funktionen und Befehle.
- TODO: Zeige typische Anwendungsfälle und Workflows.`}
+### Workflow-Beispiele
- ## Best Practices
+TODO: Zeige typische Anwendungsfälle und Workflows.`}
- TODO: Teile bewährte Praktiken und Tipps für die optimale Nutzung.
+## Best Practices
- ## Häufige Probleme
+TODO: Teile bewährte Praktiken und Tipps für die optimale Nutzung.
- TODO: Beschreibe häufige Stolpersteine und deren Lösungen.
+## Häufige Probleme
- ${tool.related_concepts && tool.related_concepts.length > 0 ? `## Verwandte Tools und Konzepte
+TODO: Beschreibe häufige Stolpersteine und deren Lösungen.
- ${tool.related_concepts.map(concept => `- ${concept}`).join('\n')}\n\n` : ''}## Weitere Ressourcen
+${(tool.related_concepts && tool.related_concepts.length > 0) || (tool.related_software && tool.related_software.length > 0) ? `## Verwandte Tools und Konzepte
- - [Offizielle Dokumentation](${tool.url})${tool.projectUrl ? `\n- [CC24 Server Zugang](${tool.projectUrl})` : ''}
+${(tool.related_concepts || []).map(concept => `- 💡 ${concept} (Konzept)`).join('\n')}${(tool.related_concepts || []).length > 0 && (tool.related_software || []).length > 0 ? '\n' : ''}${(tool.related_software || []).map(software => `- 🛠️ ${software} (Software)`).join('\n')}\n\n` : ''}## Weitere Ressourcen
- TODO: Füge weitere nützliche Links und Ressourcen hinzu.
+- [Offizielle Dokumentation](${tool.url})${tool.projectUrl ? `\n- [CC24 Server Zugang](${tool.projectUrl})` : ''}
- ---
+TODO: Füge weitere nützliche Links und Ressourcen hinzu.
- *Zuletzt aktualisiert: ${new Date().toLocaleDateString('de-DE')}*
- `;
+---
+
+*Zuletzt aktualisiert: ${new Date().toLocaleDateString('de-DE')}*
+`;
}
function downloadMarkdown() {
@@ -1536,7 +1863,7 @@
});
}
- // Validation and Export
+ // Enhanced Validation including scenarios and related_software
function validateYAML() {
if (!yamlData) return showMessage('No data to validate', 'error');
@@ -1546,6 +1873,7 @@
if (!yamlData.tools) validationResults.push('❌ Missing tools section');
if (!yamlData.domains) validationResults.push('❌ Missing domains section');
if (!yamlData.phases) validationResults.push('❌ Missing phases section');
+ if (!yamlData.scenarios) validationResults.push('⚠️ Missing scenarios section');
// Validate tools
yamlData.tools?.forEach((tool, index) => {
@@ -1565,6 +1893,26 @@
if (tool.type === 'concept' && tool.platforms?.length > 0) {
validationResults.push(`⚠️ Tool ${index + 1}: Concepts should not have platforms`);
}
+
+ // Validate related_software references
+ if (tool.related_software && tool.related_software.length > 0) {
+ tool.related_software.forEach(relatedName => {
+ const exists = yamlData.tools.some(t => t.name === relatedName);
+ if (!exists) {
+ validationResults.push(`⚠️ Tool ${index + 1}: Related software "${relatedName}" not found in tools`);
+ }
+ });
+ }
+
+ // Validate scenarios references
+ if (tool.scenarios && tool.scenarios.length > 0) {
+ tool.scenarios.forEach(scenarioId => {
+ const exists = yamlData.scenarios?.some(s => s.id === scenarioId);
+ if (!exists) {
+ validationResults.push(`⚠️ Tool ${index + 1}: Scenario "${scenarioId}" not found in scenarios`);
+ }
+ });
+ }
});
const container = document.getElementById('validationContent');
@@ -1603,6 +1951,24 @@
showMessage('YAML file exported successfully!');
}
+ function exportJSON() {
+ if (!yamlData) return showMessage('No data to export', 'error');
+
+ const jsonString = JSON.stringify(yamlData, null, 2);
+ const blob = new Blob([jsonString], { type: 'application/json' });
+ const url = URL.createObjectURL(blob);
+
+ const a = document.createElement('a');
+ a.href = url;
+ a.download = 'tools.json';
+ document.body.appendChild(a);
+ a.click();
+ document.body.removeChild(a);
+ URL.revokeObjectURL(url);
+
+ showMessage('JSON file exported successfully!');
+ }
+
// Initialize
init();
diff --git a/src/data/tags.json b/src/data/tags.json
index a7e4165..dd2fe0a 100644
--- a/src/data/tags.json
+++ b/src/data/tags.json
@@ -3,17 +3,7 @@
"command-line",
"web-interface",
"cross-platform",
- "windows",
- "linux",
- "macos",
- "portable",
- "cloud",
- "agentless",
"live-acquisition",
- "deadbox",
- "memory-capture",
- "ram-analysis",
- "disk-imaging",
"logical-copy",
"physical-copy",
"sparse-image",
@@ -25,10 +15,9 @@
"chain-of-custody",
"file-carving",
"metadata-parser",
- "registry-viewer",
"artifact-parser",
"log-parser",
- "timeline-builder",
+ "timeline",
"keyword-search",
"regex-search",
"yara-scan",
@@ -93,10 +82,71 @@
"court-admissible",
"standards-compliant",
"blockchain-analysis",
- "ios-backup",
- "android-backup",
- "ms365",
- "google-workspace",
- "slack-export",
- "teams-export"
+ "mobile-app-data",
+ "system-metadata",
+ "deleted-file-recovery",
+ "raw-image-support",
+ "ewf-support",
+ "compression",
+ "disk-signature",
+ "anomaly-detection",
+ "behavioral-analysis",
+ "live-process-view",
+ "memory-timeline",
+ "string-search",
+ "packet-filtering",
+ "encrypted-traffic",
+ "malware-unpacking",
+ "sandboxing",
+ "virtual-analysis",
+ "memory-map",
+ "binary-decode",
+ "firmware-extraction",
+ "forensic-snapshots",
+ "historical-analysis",
+ "app-provenance",
+ "usb-history",
+ "dns-resolution",
+ "session-reconstruction",
+ "file-reconstruction",
+ "protocol-decode",
+ "encrypted-volume-access",
+ "registry-hives",
+ "timeline-correlation",
+ "selective-imaging",
+ "forensic-scripting",
+ "macro-analysis",
+ "macro-automation",
+ "keyword-highlighting",
+ "duplicate-elimination",
+ "timeline-merge",
+ "multi-user-support",
+ "version-control",
+ "git-integration",
+ "secure-sharing",
+ "encrypted-reports",
+ "evidence-tagging",
+ "alerting",
+ "threat-scoring",
+ "IOC-matching",
+ "correlation-engine",
+ "elasticsearch-integration",
+ "data-enrichment",
+ "IOC-ingestion",
+ "taxonomies",
+ "sandbox-reports",
+ "memory-signatures",
+ "forensic-templates",
+ "structured-output",
+ "json-export",
+ "yaml-support",
+ "automation-ready",
+ "hash-database",
+ "integrity-checking",
+ "forensic-indexing",
+ "disk-hash-comparison",
+ "time-normalization",
+ "zero-footprint",
+ "recovery-report",
+ "forensic-logging"
]
diff --git a/src/data/tools.yaml b/src/data/tools.yaml
index d1ac010..80224ac 100644
--- a/src/data/tools.yaml
+++ b/src/data/tools.yaml
@@ -10,13 +10,6 @@ tools:
dafür vollständig transparent und kostenfrei.
skillLevel: intermediate
url: https://www.autopsy.com/
- tags:
- - gui
- - filesystem
- - timeline-analysis
- - carving
- - artifact-extraction
- - keyword-search
icon: 📦
domains:
- incident-response
@@ -27,13 +20,20 @@ tools:
phases:
- examination
- analysis
+ tags:
+ - gui
+ - filesystem
+ - timeline-analysis
+ - carving
+ - artifact-extraction
+ - keyword-search
related_concepts:
- SQL Query Fundamentals
- Hash Functions & Digital Signatures
platforms:
- Windows
- Linux
- accessType: Download
+ accessType: download
license: Apache 2.0
knowledgebase: false
- name: Volatility 3
@@ -62,7 +62,7 @@ tools:
related_concepts:
- Hash Functions & Digital Signatures
- Regular Expressions (Regex)
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: download
@@ -98,7 +98,7 @@ tools:
platforms:
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- collaboration-general
skillLevel: intermediate
@@ -172,7 +172,7 @@ tools:
related_concepts:
- Regular Expressions (Regex)
- SQL Query Fundamentals
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: server-based
@@ -212,7 +212,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -250,7 +250,7 @@ tools:
platforms:
- Windows
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: commercial
@@ -285,7 +285,7 @@ tools:
platforms:
- Windows
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: commercial
@@ -320,7 +320,7 @@ tools:
- Linux
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: server-based
@@ -355,7 +355,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: expert
accessType: download
@@ -393,7 +393,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -428,7 +428,7 @@ tools:
platforms:
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: server-based
@@ -470,7 +470,7 @@ tools:
- macOS
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: server-based
@@ -510,7 +510,7 @@ tools:
- macOS
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: server-based
@@ -547,7 +547,7 @@ tools:
platforms:
- Linux
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: expert
accessType: server-based
@@ -583,7 +583,7 @@ tools:
- Windows
- Linux
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: download
@@ -622,7 +622,7 @@ tools:
- macOS
related_concepts:
- Regular Expressions (Regex)
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: novice
accessType: download
@@ -656,7 +656,7 @@ tools:
platforms:
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: commercial
@@ -697,7 +697,7 @@ tools:
- Web
related_concepts:
- SQL Query Fundamentals
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: server-based
@@ -734,7 +734,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -772,7 +772,7 @@ tools:
platforms:
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- collaboration-general
skillLevel: novice
@@ -806,7 +806,7 @@ tools:
platforms:
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- collaboration-general
skillLevel: beginner
@@ -842,7 +842,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: download
@@ -884,7 +884,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- collaboration-general
skillLevel: novice
@@ -967,7 +967,7 @@ tools:
license: Proprietary
knowledgebase: false
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- collaboration-general
- name: GraphSense
@@ -989,7 +989,7 @@ tools:
platforms:
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: server-based
@@ -1023,7 +1023,7 @@ tools:
- Windows
related_concepts:
- Hash Functions & Digital Signatures
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: download
@@ -1056,7 +1056,7 @@ tools:
- Linux
related_concepts:
- Hash Functions & Digital Signatures
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: novice
accessType: download
@@ -1088,7 +1088,7 @@ tools:
platforms:
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1125,7 +1125,7 @@ tools:
- macOS
related_concepts:
- SQL Query Fundamentals
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1161,7 +1161,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1196,7 +1196,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1244,7 +1244,7 @@ tools:
license: GPL-3.0
knowledgebase: true
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- specific-os
- name: dd
@@ -1265,7 +1265,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: built-in
@@ -1298,7 +1298,7 @@ tools:
- Linux
related_concepts:
- Hash Functions & Digital Signatures
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1331,7 +1331,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1366,7 +1366,7 @@ tools:
- Linux
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: download
@@ -1399,7 +1399,7 @@ tools:
platforms:
- Linux
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: download
@@ -1431,7 +1431,7 @@ tools:
platforms:
- Windows
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: download
@@ -1465,7 +1465,7 @@ tools:
platforms:
- Windows
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: beginner
accessType: download
@@ -1500,7 +1500,7 @@ tools:
- Windows
- Linux
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1569,7 +1569,7 @@ tools:
- macOS
related_concepts:
- Regular Expressions (Regex)
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: novice
accessType: built-in
@@ -1645,7 +1645,7 @@ tools:
license: Free / Mixed
knowledgebase: false
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- specific-os
- name: Tsurugi Linux
@@ -1678,7 +1678,7 @@ tools:
license: GPL / Mixed
knowledgebase: false
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- specific-os
- name: Parrot Security OS
@@ -1710,7 +1710,7 @@ tools:
license: GPL-3.0
knowledgebase: false
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software:
- specific-os
- name: Eric Zimmerman Tools
@@ -1730,7 +1730,7 @@ tools:
platforms:
- Windows
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -1766,7 +1766,7 @@ tools:
- Windows
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: download
@@ -1801,7 +1801,7 @@ tools:
platforms:
- Web
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: expert
accessType: commercial
@@ -1834,7 +1834,7 @@ tools:
platforms:
- Windows
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: expert
accessType: commercial
@@ -1868,7 +1868,7 @@ tools:
platforms:
- Windows
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: commercial
@@ -1900,7 +1900,7 @@ tools:
platforms:
- Hardware
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: commercial
@@ -1959,7 +1959,7 @@ tools:
- data-collection
platforms: []
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: null
@@ -1995,7 +1995,7 @@ tools:
- examination
platforms: []
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: null
@@ -2033,7 +2033,7 @@ tools:
platforms:
- macOS
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: download
@@ -2068,7 +2068,7 @@ tools:
- analysis
platforms: []
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: null
@@ -2100,7 +2100,7 @@ tools:
- analysis
platforms: []
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: intermediate
accessType: null
@@ -2132,7 +2132,7 @@ tools:
- examination
platforms: []
related_concepts: null
- related_software:
+ related_software: null
domain-agnostic-software: null
skillLevel: advanced
accessType: null
@@ -2209,33 +2209,27 @@ domain-agnostic-software:
name: Betriebssysteme
description: Operating Systems which focus on forensics
scenarios:
- - id: registry
- icon: 🗃️
- friendly_name: "Registry-Analyse"
- - id: memory-forensics
+ - id: disk_imaging
+ icon: 💽
+ friendly_name: Datenträgerabbild
+ - id: memory_dump
icon: 🧠
- friendly_name: "Memory-Forensik"
- - id: network-traffic
- icon: 🌐
- friendly_name: "Netzwerk-Traffic"
- - id: mobile-forensik
- icon: 📱
- friendly_name: "Mobile Geräte"
- - id: malware-analysis
- icon: 🦠
- friendly_name: "Malware-Analyse"
- - id: timeline-analysis
- icon: ⏰
- friendly_name: "Timeline-Erstellung"
- - id: file-recovery
- icon: 💾
- friendly_name: "Datei-Wiederherstellung"
- - id: browser-forensik
+ friendly_name: RAM-Analyse
+ - id: file_recovery
+ icon: 🗑️
+ friendly_name: Datenrettung
+ - id: browser_history
icon: 🌍
- friendly_name: "Browser-Forensik"
- - id: email-forensik
- icon: 📧
- friendly_name: "E-Mail-Forensik"
- - id: log-analysis
- icon: 📊
- friendly_name: "Log-Analyse"
\ No newline at end of file
+ friendly_name: Browser-Spuren
+ - id: credential_theft
+ icon: 🛑
+ friendly_name: Zugangsdiebstahl
+ - id: remote_access
+ icon: 📡
+ friendly_name: Fernzugriffe
+ - id: persistence
+ icon: ♻️
+ friendly_name: Persistenzsuche
+ - id: windows-registry
+ icon: 📜
+ friendly_name: Registry-Analyse
\ No newline at end of file