Major changes:
- Dockerfile now builds the REMnux-based image (was Dockerfile.remnux)
- Removed redundant Dockerfile.remnux
- Dockerfile.scratch builds from Ubuntu 20.04 (from scratch variant)
- Updated Makefile to reflect new structure:
- 'make build' for REMnux-based (default)
- 'make build-scratch' for Ubuntu-based
- Removed kali references
- Simplified targets and naming
Zsh improvements:
- Added Oh My Zsh auto-installation on first run
- Pre-install Oh My Zsh in Docker images for remnux user
- Custom prompt with 🔍 indicator for analysis work
- Fallback to minimal config for system users
- Includes plugins: git, docker, command-not-found, colored-man-pages
- Welcome message shows only once per session
- No more first-time configuration prompts
Shell experience:
- bash (default) - traditional, reliable
- zsh - now with Oh My Zsh, custom theme, plugins
- fish - friendly interactive shell
All shells include help aliases and analysis shortcuts.
149 lines
4.7 KiB
Bash
149 lines
4.7 KiB
Bash
# File Analysis Container - ZSH Configuration with Oh My Zsh
|
|
|
|
# Skip interactive first-time setup
|
|
ZSH_DISABLE_COMPFIX=true
|
|
|
|
# If running as root or system user without home, create minimal config
|
|
if [[ ! -d "$HOME" ]] || [[ ! -w "$HOME" ]]; then
|
|
# Minimal non-OMZ setup for system users
|
|
HISTFILE=/tmp/.zsh_history_$$
|
|
HISTSIZE=10000
|
|
SAVEHIST=10000
|
|
|
|
autoload -Uz compinit && compinit -d /tmp/.zcompdump_$$
|
|
autoload -U colors && colors
|
|
|
|
PROMPT='%F{red}[🔍]%f %F{cyan}%~%f $ '
|
|
|
|
# Load plugins if available
|
|
[[ -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]] && \
|
|
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
|
[[ -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] && \
|
|
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
|
else
|
|
# Oh My Zsh setup for regular users
|
|
export ZSH="$HOME/.oh-my-zsh"
|
|
|
|
# Install Oh My Zsh if not present
|
|
if [[ ! -d "$ZSH" ]]; then
|
|
echo "Installing Oh My Zsh..."
|
|
RUNZSH=no CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" || {
|
|
# Fallback if curl fails
|
|
RUNZSH=no CHSH=no sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 2>/dev/null
|
|
}
|
|
fi
|
|
|
|
# Oh My Zsh theme - using agnoster-like theme for security work
|
|
ZSH_THEME="robbyrussell"
|
|
|
|
# Custom theme for file analysis work
|
|
if [[ -d "$ZSH" ]]; then
|
|
# Plugins to load
|
|
plugins=(git docker command-not-found colored-man-pages)
|
|
|
|
# Load Oh My Zsh
|
|
source $ZSH/oh-my-zsh.sh 2>/dev/null || true
|
|
|
|
# Custom prompt with analysis indicator
|
|
PROMPT='%F{red}🔍%f %F{cyan}%~%f $(git_prompt_info)%# '
|
|
RPROMPT='%F{yellow}%*%f'
|
|
else
|
|
# Fallback if OMZ installation failed
|
|
autoload -U colors && colors
|
|
PROMPT='%F{red}[🔍]%f %F{cyan}%~%f $ '
|
|
fi
|
|
fi
|
|
|
|
# History configuration
|
|
HISTFILE=${HISTFILE:-~/.zsh_history}
|
|
HISTSIZE=10000
|
|
SAVEHIST=10000
|
|
setopt SHARE_HISTORY
|
|
setopt HIST_IGNORE_ALL_DUPS
|
|
setopt HIST_FIND_NO_DUPS
|
|
setopt HIST_REDUCE_BLANKS
|
|
setopt HIST_VERIFY
|
|
|
|
# Navigation
|
|
setopt AUTO_CD
|
|
setopt AUTO_PUSHD
|
|
setopt PUSHD_IGNORE_DUPS
|
|
setopt PUSHD_SILENT
|
|
|
|
# Completion
|
|
autoload -Uz compinit
|
|
if [[ -w "$HOME" ]]; then
|
|
compinit
|
|
else
|
|
compinit -d /tmp/.zcompdump_$$
|
|
fi
|
|
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
|
|
setopt COMPLETE_IN_WORD
|
|
setopt AUTO_MENU
|
|
|
|
# Load system plugins if available
|
|
[[ -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]] && \
|
|
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
|
[[ -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] && \
|
|
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
|
|
|
# Aliases for file analysis
|
|
alias ls='ls --color=auto'
|
|
alias ll='ls -lah'
|
|
alias la='ls -A'
|
|
alias l='ls -CF'
|
|
alias grep='grep --color=auto'
|
|
alias fgrep='fgrep --color=auto'
|
|
alias egrep='egrep --color=auto'
|
|
|
|
# Tool aliases
|
|
alias fd='fdfind'
|
|
alias rg='rg --color=auto'
|
|
alias analyse='fhelp'
|
|
alias ?='fhelp'
|
|
alias help='fhelp'
|
|
|
|
# Quick navigation
|
|
alias ..='cd ..'
|
|
alias ...='cd ../..'
|
|
alias ....='cd ../../..'
|
|
|
|
# Analysis shortcuts
|
|
alias pdfinfo='pdfid.py'
|
|
alias pdfparse='pdf-parser.py'
|
|
alias scanpdf='pdf-parser.py'
|
|
|
|
# Git aliases (if git plugin not loaded)
|
|
if ! type git &>/dev/null || ! alias gs &>/dev/null; then
|
|
alias gs='git status'
|
|
alias ga='git add'
|
|
alias gc='git commit'
|
|
alias gp='git push'
|
|
alias gl='git log --oneline'
|
|
fi
|
|
|
|
# Environment
|
|
export EDITOR=vim
|
|
export VISUAL=vim
|
|
|
|
# Welcome message (only on interactive shells)
|
|
if [[ -o interactive ]] && [[ -f /opt/README ]]; then
|
|
# Only show welcome once per session
|
|
if [[ -z "$_WELCOME_SHOWN" ]]; then
|
|
echo ""
|
|
echo "\033[1;36m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
|
|
echo "\033[1;31m File Analysis Container\033[0m \033[1;33m(zsh with Oh My Zsh)\033[0m"
|
|
echo "\033[1;36m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
|
|
echo ""
|
|
echo " \033[1;32mfhelp\033[0m or \033[1;32m?\033[0m - Help system"
|
|
echo " \033[1;32mfhelp cheat <tool>\033[0m - Quick examples"
|
|
echo " \033[1;32mfhelp tools pdf\033[0m - Find PDF tools"
|
|
echo ""
|
|
echo " Shells: \033[0;36mbash\033[0m (default), \033[0;36mzsh\033[0m (current), \033[0;36mfish\033[0m"
|
|
echo ""
|
|
export _WELCOME_SHOWN=1
|
|
fi
|
|
fi
|