Initial commit: Network scanner with pfSense integration and SVG diagram generation
This commit is contained in:
181
quickstart.sh
Executable file
181
quickstart.sh
Executable file
@@ -0,0 +1,181 @@
|
||||
#!/bin/bash
|
||||
# Quick Start Script for Network Scanner
|
||||
# This script helps you get started quickly
|
||||
|
||||
set -e
|
||||
|
||||
echo "================================"
|
||||
echo "Network Scanner - Quick Start"
|
||||
echo "================================"
|
||||
echo ""
|
||||
|
||||
# Check for Python
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
echo "❌ Error: Python 3 is not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Python 3 found"
|
||||
|
||||
# Create config if it doesn't exist
|
||||
if [ ! -f config.json ]; then
|
||||
echo ""
|
||||
echo "📝 Creating configuration file..."
|
||||
|
||||
# Try to detect default SSH key
|
||||
SSH_KEY=""
|
||||
if [ -f ~/.ssh/id_rsa ]; then
|
||||
SSH_KEY="$HOME/.ssh/id_rsa"
|
||||
elif [ -f ~/.ssh/id_ed25519 ]; then
|
||||
SSH_KEY="$HOME/.ssh/id_ed25519"
|
||||
fi
|
||||
|
||||
# Get current user
|
||||
CURRENT_USER=$(whoami)
|
||||
|
||||
# Try to detect local network
|
||||
LOCAL_NET=$(ip route | grep -oP 'src \K[\d.]+' | head -1)
|
||||
if [ -n "$LOCAL_NET" ]; then
|
||||
# Convert to /24 network
|
||||
NET_PREFIX=$(echo $LOCAL_NET | cut -d. -f1-3)
|
||||
LOCAL_NET="${NET_PREFIX}.0/24"
|
||||
else
|
||||
LOCAL_NET="192.168.1.0/24"
|
||||
fi
|
||||
|
||||
cat > config.json << EOF
|
||||
{
|
||||
"ssh_user": "$CURRENT_USER",
|
||||
"ssh_key_path": "$SSH_KEY",
|
||||
"timeout": 2,
|
||||
"additional_networks": [
|
||||
"$LOCAL_NET"
|
||||
],
|
||||
"special_devices": {
|
||||
},
|
||||
"scan_options": {
|
||||
"max_workers": 10,
|
||||
"ping_timeout": 2,
|
||||
"port_scan_timeout": 1
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
echo "✓ Created config.json"
|
||||
echo " Local network detected: $LOCAL_NET"
|
||||
[ -n "$SSH_KEY" ] && echo " SSH key detected: $SSH_KEY"
|
||||
echo ""
|
||||
echo " Please edit config.json to customize for your network!"
|
||||
echo ""
|
||||
else
|
||||
echo "✓ config.json already exists"
|
||||
fi
|
||||
|
||||
# Ask what to do
|
||||
echo ""
|
||||
echo "What would you like to do?"
|
||||
echo ""
|
||||
echo "1) Run a quick scan (current network only)"
|
||||
echo "2) Run a full scan with pfSense integration"
|
||||
echo "3) Scan and generate SVG diagram"
|
||||
echo "4) Scan specific pfSense device"
|
||||
echo "5) Show help"
|
||||
echo "6) Exit"
|
||||
echo ""
|
||||
read -p "Choose an option (1-6): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
echo ""
|
||||
echo "🔍 Running quick network scan..."
|
||||
./network_scanner.py -o quick_scan.json -v
|
||||
echo ""
|
||||
echo "✓ Done! Results saved to: quick_scan.json"
|
||||
echo " Generate diagram with: ./svg_generator.py quick_scan.json"
|
||||
;;
|
||||
2)
|
||||
echo ""
|
||||
echo "🔍 Running full integrated scan..."
|
||||
./integrated_scanner.py -o full_scan.json -v
|
||||
echo ""
|
||||
echo "✓ Done! Results saved to: full_scan.json"
|
||||
;;
|
||||
3)
|
||||
echo ""
|
||||
echo "🔍 Running scan and generating diagram..."
|
||||
./integrated_scanner.py -o scan_with_diagram.json -v --generate-svg
|
||||
echo ""
|
||||
echo "✓ Done! Open scan_with_diagram.svg to view the network diagram"
|
||||
;;
|
||||
4)
|
||||
echo ""
|
||||
read -p "Enter pfSense IP address: " pfsense_ip
|
||||
echo "🔍 Scanning pfSense at $pfsense_ip..."
|
||||
./pfsense_scanner.py "$pfsense_ip" -o "pfsense_${pfsense_ip}.json"
|
||||
echo ""
|
||||
echo "✓ Done! Results saved to: pfsense_${pfsense_ip}.json"
|
||||
;;
|
||||
5)
|
||||
echo ""
|
||||
cat << 'HELP'
|
||||
Network Scanner - Help
|
||||
======================
|
||||
|
||||
Available Scripts:
|
||||
-----------------
|
||||
|
||||
1. network_scanner.py
|
||||
Basic network scanner that discovers devices and gathers info
|
||||
Usage: ./network_scanner.py [-c config.json] [-o output.json] [-v]
|
||||
|
||||
2. pfsense_scanner.py
|
||||
Specialized scanner for pfSense firewalls
|
||||
Usage: ./pfsense_scanner.py <ip> [-u user] [-k keyfile] [-o output.json]
|
||||
|
||||
3. integrated_scanner.py
|
||||
Complete scanner with pfSense integration
|
||||
Usage: ./integrated_scanner.py [-c config.json] [-o output.json] [-v] [--generate-svg]
|
||||
|
||||
4. svg_generator.py
|
||||
Generate SVG diagram from scan results
|
||||
Usage: ./svg_generator.py <input.json> [-o output.svg]
|
||||
|
||||
Configuration:
|
||||
-------------
|
||||
Edit config.json to customize:
|
||||
- SSH credentials
|
||||
- Network ranges to scan
|
||||
- Special device definitions
|
||||
- Scan timeouts
|
||||
|
||||
Examples:
|
||||
--------
|
||||
# Quick scan of current network
|
||||
./network_scanner.py -v
|
||||
|
||||
# Full scan with diagram
|
||||
./integrated_scanner.py --generate-svg
|
||||
|
||||
# Scan pfSense
|
||||
./pfsense_scanner.py 192.168.1.1 -u root -k ~/.ssh/id_rsa
|
||||
|
||||
# Generate diagram from existing scan
|
||||
./svg_generator.py network_scan.json -o my_network.svg
|
||||
|
||||
For more information, see README.md
|
||||
HELP
|
||||
;;
|
||||
6)
|
||||
echo "Goodbye!"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo "================================"
|
||||
echo "Thanks for using Network Scanner!"
|
||||
echo "================================"
|
||||
Reference in New Issue
Block a user