Add comprehensive offline help system with fuzzy search
🎯 Enhanced Features: - Integrated navi, cheat, tldr, and fzf for interactive help - Custom cheat sheets for PDF analysis, malware analysis, and system utilities - find-tool command for fuzzy searching through all REMnux tools - Comprehensive help command with workflows and examples - Complete offline documentation system 📚 Help System Components: - help - Main help system - help tools [term] - Search for tools (fuzzy matching) - help cheat <tool> - Show command examples - help examples - Browse examples interactively (navi + fzf) - help pdf/malware/forensics - Analysis workflows - help --offline - Verify offline capabilities 🛠️ Tools Added: - navi: Interactive cheat sheet browser - cheat: Command-line cheat sheets - tldr: Quick command examples - fzf: Fuzzy finder (already included) All documentation works completely offline with local REMnux docs database and custom cheat sheets for analysis workflows.
This commit is contained in:
118
scripts/download-docs.sh
Executable file
118
scripts/download-docs.sh
Executable file
@@ -0,0 +1,118 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Download and process REMnux documentation for offline use
|
||||
# This script creates a searchable database of all tools and their usage
|
||||
|
||||
set -e
|
||||
|
||||
DOCS_DIR="/opt/remnux-docs"
|
||||
TOOLS_DB="/opt/remnux-docs/tools.db"
|
||||
|
||||
echo "📚 Downloading REMnux Documentation..."
|
||||
|
||||
# Create documentation directory
|
||||
mkdir -p "$DOCS_DIR"
|
||||
|
||||
# Download key documentation files from REMnux docs
|
||||
BASE_URL="https://docs.remnux.org"
|
||||
|
||||
# Categories of tools to download
|
||||
CATEGORIES=(
|
||||
"analyze+documents/pdf"
|
||||
"analyze+documents/general"
|
||||
"analyze+documents/microsoft+office"
|
||||
"analyze+documents/email+messages"
|
||||
"examine+static+properties/general"
|
||||
"statically+analyze+code/general"
|
||||
"statically+analyze+code/scripts"
|
||||
"dynamically+reverse-engineer+code/general"
|
||||
"gather+and+analyze+data"
|
||||
"view+or+edit+files"
|
||||
"general+utilities"
|
||||
)
|
||||
|
||||
# Function to download and process a documentation page
|
||||
download_category() {
|
||||
local category="$1"
|
||||
local filename=$(echo "$category" | sed 's/+/_/g' | sed 's/\//_/g')
|
||||
|
||||
echo "Downloading: $category"
|
||||
if curl -s "$BASE_URL/discover-the-tools/$category.md" -o "$DOCS_DIR/${filename}.md"; then
|
||||
echo "✓ Downloaded $filename.md"
|
||||
else
|
||||
echo "⚠ Failed to download $category"
|
||||
fi
|
||||
}
|
||||
|
||||
# Download all categories
|
||||
for category in "${CATEGORIES[@]}"; do
|
||||
download_category "$category"
|
||||
done
|
||||
|
||||
# Create a consolidated tools database
|
||||
echo "🔍 Creating searchable tools database..."
|
||||
|
||||
# Function to extract tool information from markdown files
|
||||
create_tools_db() {
|
||||
echo "# REMnux Tools Database" > "$TOOLS_DB"
|
||||
echo "# Format: TOOL_NAME|DESCRIPTION|CATEGORY|USAGE_HINTS" >> "$TOOLS_DB"
|
||||
echo "" >> "$TOOLS_DB"
|
||||
|
||||
for md_file in "$DOCS_DIR"/*.md; do
|
||||
if [[ -f "$md_file" ]]; then
|
||||
local category=$(basename "$md_file" .md | sed 's/_/ /g')
|
||||
|
||||
# Extract tool entries (they start with ##)
|
||||
awk -v cat="$category" '
|
||||
/^## / {
|
||||
if (tool_name != "") {
|
||||
print tool_name "|" description "|" cat "|" usage
|
||||
}
|
||||
tool_name = substr($0, 4) # Remove "## "
|
||||
description = ""
|
||||
usage = ""
|
||||
in_tool = 1
|
||||
next
|
||||
}
|
||||
/^#/ && !/^## / { in_tool = 0; next }
|
||||
in_tool && /^[A-Z]/ && description == "" {
|
||||
description = $0
|
||||
next
|
||||
}
|
||||
in_tool && /^\*\*Website/ {
|
||||
usage = usage $0 " "
|
||||
next
|
||||
}
|
||||
in_tool && /^\*\*Notes/ {
|
||||
usage = usage $0 " "
|
||||
next
|
||||
}
|
||||
END {
|
||||
if (tool_name != "") {
|
||||
print tool_name "|" description "|" cat "|" usage
|
||||
}
|
||||
}
|
||||
' "$md_file" >> "$TOOLS_DB"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
create_tools_db
|
||||
|
||||
# Add our custom tools to the database
|
||||
echo "" >> "$TOOLS_DB"
|
||||
echo "# Additional Tools Added to Container" >> "$TOOLS_DB"
|
||||
echo "capa|Malware capability detection tool from Mandiant|malware analysis|Analyze executable files to identify capabilities" >> "$TOOLS_DB"
|
||||
echo "box-js|JavaScript sandbox for malware analysis|malware analysis|box-js sample.js to analyze JavaScript in sandbox" >> "$TOOLS_DB"
|
||||
echo "visidata|Interactive data exploration tool|data analysis|vd filename.csv to explore data interactively" >> "$TOOLS_DB"
|
||||
echo "unfurl_cli.py|URL analysis and extraction tool|data analysis|unfurl_cli.py URL to analyze and extract components" >> "$TOOLS_DB"
|
||||
|
||||
echo "✅ Documentation download complete!"
|
||||
echo "📊 Tools database created at: $TOOLS_DB"
|
||||
|
||||
# Count tools
|
||||
TOOL_COUNT=$(grep -c "^[^#]" "$TOOLS_DB" | head -1)
|
||||
echo "🔧 Indexed $TOOL_COUNT tools"
|
||||
|
||||
echo ""
|
||||
echo "Usage: Use 'find-tool' command to search through all available tools"
|
||||
Reference in New Issue
Block a user