commit fbdc4974ec24bd94c3ff79ea3e51d6d83e6662db Author: mindesbunister Date: Fri Oct 10 11:03:11 2025 +0200 Initial commit: Network scanner with pfSense integration and SVG diagram generation diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15f43b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +# Network Scanner - Git Ignore + +# Scan results and output +*.json +!config.json.example +*.svg + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# Virtual environments +venv/ +env/ +ENV/ +env.bak/ +venv.bak/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ +.DS_Store + +# Logs +*.log + +# SSH keys (just in case) +*.pem +*.key +id_rsa* + +# Sensitive configuration +config.json diff --git a/EXAMPLES.sh b/EXAMPLES.sh new file mode 100755 index 0000000..4ae81aa --- /dev/null +++ b/EXAMPLES.sh @@ -0,0 +1,265 @@ +#!/bin/bash +# Example usage scenarios for the network scanner + +echo "==========================================" +echo "Network Scanner - Usage Examples" +echo "==========================================" +echo "" + +cat << 'EOF' +# SCENARIO 1: Quick Network Overview +# ----------------------------------- +# Scan your local network and get a basic overview + +./network_scanner.py -v -o quick_scan.json + + +# SCENARIO 2: Complete Network Documentation +# ------------------------------------------- +# Full scan with pfSense integration and SVG generation + +./integrated_scanner.py -c config.json -o full_network.json --generate-svg -v + +# View the diagram: +firefox full_network.svg + + +# SCENARIO 3: pfSense Deep Dive +# ------------------------------ +# Detailed scan of a specific pfSense firewall + +./pfsense_scanner.py 192.168.1.1 -u root -k ~/.ssh/id_rsa -o pfsense_main.json + +# View the results: +cat pfsense_main.json | jq '.vpn' # Show VPN info +cat pfsense_main.json | jq '.routes' # Show routing table + + +# SCENARIO 4: Multi-Network Scan with VPN +# ---------------------------------------- +# Create a config for multiple networks + +cat > my_network_config.json << 'CONFIG' +{ + "ssh_user": "root", + "ssh_key_path": "/home/user/.ssh/id_rsa", + "timeout": 3, + "additional_networks": [ + "192.168.1.0/24", # Main network + "192.168.2.0/24", # Guest network + "10.8.0.0/24", # OpenVPN network + "10.0.0.0/24" # WireGuard VPN + ], + "special_devices": { + "192.168.1.1": { + "name": "Main pfSense Firewall", + "type": "firewall", + "os": "pfSense" + }, + "192.168.2.1": { + "name": "Guest Network Router", + "type": "router" + } + } +} +CONFIG + +./integrated_scanner.py -c my_network_config.json -o multi_network.json --generate-svg + + +# SCENARIO 5: Scheduled Network Monitoring +# ----------------------------------------- +# Add to crontab for daily network documentation + +# Create wrapper script +cat > /usr/local/bin/network-scan-daily.sh << 'SCRIPT' +#!/bin/bash +DATE=$(date +%Y%m%d) +OUTPUT_DIR="/var/log/network-scans" +mkdir -p "$OUTPUT_DIR" + +cd /path/to/network_scanner +./integrated_scanner.py \ + -o "$OUTPUT_DIR/scan_$DATE.json" \ + --generate-svg + +# Keep only last 30 days +find "$OUTPUT_DIR" -name "scan_*.json" -mtime +30 -delete +find "$OUTPUT_DIR" -name "scan_*.svg" -mtime +30 -delete +SCRIPT + +chmod +x /usr/local/bin/network-scan-daily.sh + +# Add to crontab (run at 2 AM daily): +# 0 2 * * * /usr/local/bin/network-scan-daily.sh + + +# SCENARIO 6: Compare Network Changes +# ------------------------------------ +# Scan and compare with previous results + +# Initial scan +./integrated_scanner.py -o baseline.json + +# After changes +./integrated_scanner.py -o current.json + +# Compare device counts +echo "Baseline devices:" +cat baseline.json | jq '[.segments[].devices[].ip] | length' +echo "Current devices:" +cat current.json | jq '[.segments[].devices[].ip] | length' + +# Find new devices +comm -13 \ + <(cat baseline.json | jq -r '.segments[].devices[].ip' | sort) \ + <(cat current.json | jq -r '.segments[].devices[].ip' | sort) \ + | sed 's/^/NEW: /' + +# Find removed devices +comm -23 \ + <(cat baseline.json | jq -r '.segments[].devices[].ip' | sort) \ + <(cat current.json | jq -r '.segments[].devices[].ip' | sort) \ + | sed 's/^/REMOVED: /' + + +# SCENARIO 7: Extract Specific Information +# ----------------------------------------- +# Use jq to extract specific data from scan results + +# List all SSH-accessible devices +cat network_scan.json | jq -r '.segments[].devices[] | select(.ssh_accessible==true) | .ip' + +# List all routers/firewalls +cat network_scan.json | jq -r '.segments[].devices[] | select(.device_type=="router" or .device_type=="firewall") | "\(.ip) - \(.hostname // "unknown")"' + +# List all devices with their OS +cat network_scan.json | jq -r '.segments[].devices[] | "\(.ip)\t\(.os_type // "unknown")\t\(.hostname // "unknown")"' + +# Export to CSV +echo "IP,Hostname,Type,OS" > devices.csv +cat network_scan.json | jq -r '.segments[].devices[] | "\(.ip),\(.hostname // ""),\(.device_type // ""),\(.os_type // "")"' >> devices.csv + + +# SCENARIO 8: Integration with Documentation +# ------------------------------------------- +# Generate markdown documentation from scan + +cat > generate_docs.py << 'PYTHON' +#!/usr/bin/env python3 +import json +import sys + +with open(sys.argv[1]) as f: + data = json.load(f) + +print("# Network Documentation") +print(f"\nGenerated: {data.get('scan_timestamp', 'N/A')}") +print("\n## Network Segments\n") + +for segment in data['segments']: + print(f"### {segment['name']}") + print(f"- CIDR: `{segment['cidr']}`") + print(f"- Devices: {len(segment['devices'])}") + if segment.get('is_vpn'): + print("- Type: VPN Network") + print("\n#### Devices\n") + print("| IP | Hostname | Type | OS |") + print("|---|---|---|---|") + + for device in segment['devices']: + ip = device['ip'] + hostname = device.get('hostname', '-') + dtype = device.get('device_type', '-') + os = device.get('os_type', '-') + print(f"| {ip} | {hostname} | {dtype} | {os} |") + + print() +PYTHON + +chmod +x generate_docs.py +./generate_docs.py network_scan.json > NETWORK_DOCS.md + + +# SCENARIO 9: Security Audit +# --------------------------- +# Check for common security issues + +# Find devices with Telnet open +cat network_scan.json | jq -r '.segments[].devices[] | select(.open_ports[]? == 23) | "⚠️ Telnet open on \(.ip) (\(.hostname // "unknown"))"' + +# Find devices without SSH access +cat network_scan.json | jq -r '.segments[].devices[] | select(.device_type=="router" or .device_type=="firewall") | select(.ssh_accessible==false) | "⚠️ No SSH access to \(.ip) (\(.hostname // "unknown"))"' + +# List devices with many open ports +cat network_scan.json | jq -r '.segments[].devices[] | select((.open_ports | length) > 5) | "ℹ️ \(.ip) has \(.open_ports | length) open ports"' + + +# SCENARIO 10: WireGuard Topology Mapping +# ---------------------------------------- +# Extract WireGuard tunnel information from pfSense + +./pfsense_scanner.py 192.168.1.1 -o pfsense.json + +# List all WireGuard peers +cat pfsense.json | jq -r '.vpn.wireguard[] | "Peer: \(.peer // "N/A") -> \(.allowed_ips // "N/A")"' + +# Check tunnel status +cat pfsense.json | jq -r '.vpn.wireguard[] | select(.latest_handshake) | "Active tunnel to \(.endpoint) (handshake: \(.latest_handshake)s ago)"' + + +# SCENARIO 11: Network Capacity Planning +# --------------------------------------- +# Analyze network usage and plan capacity + +# Count devices per segment +cat network_scan.json | jq -r '.segments[] | "\(.cidr): \(.devices | length) devices"' + +# Calculate subnet utilization +cat network_scan.json | jq -r '.segments[] | + if .cidr | contains("/24") then + "\(.cidr): \(.devices | length)/254 = \((.devices | length) * 100 / 254 | floor)% utilized" + else + "\(.cidr): \(.devices | length) devices" + end' + + +# SCENARIO 12: Quick Health Check +# -------------------------------- +# Create a health check script + +cat > health_check.sh << 'HEALTH' +#!/bin/bash +SCAN_FILE="latest_scan.json" + +echo "Network Health Check" +echo "====================" +echo "" + +# Total devices +TOTAL=$(cat $SCAN_FILE | jq '[.segments[].devices[]] | length') +echo "Total devices: $TOTAL" + +# SSH accessible +SSH_OK=$(cat $SCAN_FILE | jq '[.segments[].devices[] | select(.ssh_accessible==true)] | length') +echo "SSH accessible: $SSH_OK" + +# By type +echo "" +echo "Device Types:" +cat $SCAN_FILE | jq -r '.segments[].devices[].device_type' | sort | uniq -c | sort -rn + +# Segments +echo "" +echo "Network Segments:" +cat $SCAN_FILE | jq -r '.segments[] | " \(.name): \(.devices | length) devices"' +HEALTH + +chmod +x health_check.sh +./integrated_scanner.py -o latest_scan.json +./health_check.sh + +EOF + +echo "" +echo "For more examples, see README.md" diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md new file mode 100644 index 0000000..ad9596b --- /dev/null +++ b/GETTING_STARTED.md @@ -0,0 +1,299 @@ +# Network Scanner - Getting Started Checklist + +## ✅ Pre-Installation Checklist + +- [ ] Linux system available +- [ ] Python 3.8 or higher installed +- [ ] Network access to devices you want to scan +- [ ] Authorization to scan your network +- [ ] SSH access to network devices (optional but recommended) + +## ✅ Initial Setup + +### 1. Verify System +```bash +cd /home/rwiegand/Nextcloud/entwicklung/Werkzeuge/netzwerk_diagramm_scanner +./test_system.py +``` + +**Expected outcome:** All tests should pass ✓ + +### 2. Configure SSH Access (Recommended) + +- [ ] **Generate SSH key** (if you don't have one): +```bash +ssh-keygen -t ed25519 -f ~/.ssh/network_scanner -N "" +``` + +- [ ] **Copy SSH key to your devices**: +```bash +# For each device you want to scan +ssh-copy-id -i ~/.ssh/network_scanner.pub root@ + +# Example for pfSense +ssh-copy-id -i ~/.ssh/network_scanner.pub root@192.168.1.1 +``` + +- [ ] **Test SSH connection**: +```bash +ssh -i ~/.ssh/network_scanner root@ "echo Connection OK" +``` + +### 3. Create Configuration + +- [ ] **Copy example config**: +```bash +cp config.json.example config.json +``` + +- [ ] **Edit config.json** with your details: + - [ ] Update `ssh_user` (usually "root" or your admin user) + - [ ] Update `ssh_key_path` (e.g., `/home/username/.ssh/network_scanner`) + - [ ] Add your network ranges to `additional_networks` + - [ ] Add your pfSense/router IPs to `special_devices` + +**Example config.json:** +```json +{ + "ssh_user": "root", + "ssh_key_path": "/home/rwiegand/.ssh/network_scanner", + "timeout": 2, + "additional_networks": [ + "192.168.1.0/24", + "10.0.0.0/24", + "10.8.0.0/24" + ], + "special_devices": { + "192.168.1.1": { + "name": "pfSense Main", + "type": "firewall", + "os": "pfSense" + } + } +} +``` + +## ✅ First Scan + +### Option A: Interactive Mode +- [ ] **Run quickstart**: +```bash +./quickstart.sh +``` +Choose option 1 for a quick test scan. + +### Option B: Direct Scan +- [ ] **Run integrated scanner**: +```bash +./integrated_scanner.py -v -o first_scan.json +``` + +- [ ] **Check output**: +```bash +cat first_scan.json | jq '.segments | length' +``` + +### Option C: With SVG Diagram +- [ ] **Run with diagram generation**: +```bash +./integrated_scanner.py -v -o scan.json --generate-svg +``` + +- [ ] **Open diagram**: +```bash +firefox scan.svg +# or +xdg-open scan.svg +``` + +## ✅ Verification Steps + +After your first scan: + +- [ ] **Check segment count**: +```bash +cat first_scan.json | jq '.segments | length' +``` +Expected: At least 1 network segment + +- [ ] **Check device count**: +```bash +cat first_scan.json | jq '[.segments[].devices[]] | length' +``` +Expected: Number of devices in your network + +- [ ] **List found devices**: +```bash +cat first_scan.json | jq -r '.segments[].devices[].ip' +``` + +- [ ] **Check pfSense detection** (if applicable): +```bash +cat first_scan.json | jq '.segments[].devices[] | select(.device_type=="firewall")' +``` + +## ✅ Advanced Configuration + +### For pfSense Users: + +- [ ] **Test pfSense scanner directly**: +```bash +./pfsense_scanner.py -u root -k ~/.ssh/network_scanner -o pfsense_test.json +``` + +- [ ] **Verify pfSense data**: +```bash +# Check interfaces +cat pfsense_test.json | jq '.interfaces' + +# Check VPN +cat pfsense_test.json | jq '.vpn' + +# Check routes +cat pfsense_test.json | jq '.routes | length' +``` + +### For Multiple Networks: + +- [ ] **List all networks**: +```bash +ip route show +``` + +- [ ] **Add each network to config.json**: + - Local network (e.g., 192.168.1.0/24) + - Guest network (e.g., 192.168.2.0/24) + - VPN networks (e.g., 10.8.0.0/24) + - WireGuard networks (e.g., 10.0.0.0/24) + +### For VPN Networks: + +- [ ] **Check WireGuard**: +```bash +# On pfSense or WireGuard server +wg show +``` + +- [ ] **Add VPN networks** to config.json additional_networks + +- [ ] **Verify VPN is marked** in scan results: +```bash +cat scan.json | jq '.segments[] | select(.is_vpn==true)' +``` + +## ✅ Common Issues & Solutions + +### Issue: No devices found +- [ ] Check network connectivity: `ping ` +- [ ] Verify ICMP is not blocked +- [ ] Try with verbose mode: `-v` +- [ ] Check if you're on the correct network + +### Issue: SSH connection failures +- [ ] Verify SSH service is running on target device +- [ ] Check SSH key permissions: `chmod 600 ~/.ssh/network_scanner` +- [ ] Test manual connection: `ssh -i ~/.ssh/network_scanner root@` +- [ ] Verify key is in authorized_keys on target + +### Issue: pfSense not detected +- [ ] Verify pfSense SSH is enabled +- [ ] Check pfSense is in special_devices config +- [ ] Test direct pfSense scan: `./pfsense_scanner.py ` +- [ ] Check pfSense firewall rules allow SSH from your IP + +### Issue: Scan too slow +- [ ] Reduce timeout in config.json +- [ ] Limit network ranges in additional_networks +- [ ] Increase max_workers (if you have powerful system) + +## ✅ Next Steps + +Once basic scanning works: + +### Documentation +- [ ] Run full scan: `./integrated_scanner.py -o full_network.json --generate-svg` +- [ ] Review SVG diagram +- [ ] Generate markdown docs (see EXAMPLES.sh) +- [ ] Save baseline scan for future comparison + +### Automation +- [ ] Set up scheduled scans (cron) +- [ ] Create backup script for scan results +- [ ] Set up alerts for network changes + +### Customization +- [ ] Customize device type detection +- [ ] Adjust SVG styling and colors +- [ ] Add custom port scanning +- [ ] Create custom reports + +### Integration +- [ ] Export data to CSV +- [ ] Integrate with monitoring system +- [ ] Create dashboards +- [ ] Set up change detection + +## ✅ Quick Reference + +### Most Common Commands + +```bash +# Quick scan +./network_scanner.py -v + +# Full scan with diagram +./integrated_scanner.py --generate-svg + +# Scan specific pfSense +./pfsense_scanner.py 192.168.1.1 -u root -k ~/.ssh/id_rsa + +# Generate diagram from existing scan +./svg_generator.py scan.json -o diagram.svg + +# Interactive mode +./quickstart.sh + +# System test +./test_system.py +``` + +### Useful jq Queries + +```bash +# List all IPs +cat scan.json | jq -r '.segments[].devices[].ip' + +# List SSH-accessible devices +cat scan.json | jq -r '.segments[].devices[] | select(.ssh_accessible==true) | .ip' + +# Count devices per segment +cat scan.json | jq '.segments[] | "\(.name): \(.devices | length) devices"' + +# List routers and firewalls +cat scan.json | jq -r '.segments[].devices[] | select(.device_type=="router" or .device_type=="firewall") | "\(.ip) - \(.hostname)"' +``` + +## ✅ Getting Help + +- [ ] Read README.md for detailed documentation +- [ ] Check EXAMPLES.sh for usage scenarios +- [ ] Review PROJECT_SUMMARY.md for overview +- [ ] Run `./quickstart.sh` for interactive help + +## 🎉 Success Criteria + +You're ready to use the scanner when: + +- ✅ All system tests pass +- ✅ SSH keys are set up and working +- ✅ config.json is properly configured +- ✅ First scan completes successfully +- ✅ Devices are detected in your network +- ✅ SVG diagram is generated +- ✅ pfSense devices are properly detected (if applicable) + +--- + +**Need help?** Check the troubleshooting section above or review the documentation files. + +**Ready to go?** Run `./quickstart.sh` or `./integrated_scanner.py --generate-svg -v` diff --git a/PROJECT_SUMMARY.md b/PROJECT_SUMMARY.md new file mode 100644 index 0000000..22a162c --- /dev/null +++ b/PROJECT_SUMMARY.md @@ -0,0 +1,423 @@ +# Network Scanner Project - Complete Summary + +## 📁 Project Structure + +``` +netzwerk_diagramm_scanner/ +├── network_scanner.py # Main network scanning engine +├── pfsense_scanner.py # pfSense-specific scanner +├── svg_generator.py # SVG diagram generator +├── integrated_scanner.py # Combined scanner with pfSense integration +├── test_system.py # System verification and testing +├── quickstart.sh # Interactive quick start guide +├── EXAMPLES.sh # Usage examples and scenarios +├── config.json.example # Configuration template +├── requirements.txt # Python dependencies +├── README.md # Complete documentation +└── .gitignore # Git ignore file +``` + +## 🚀 Quick Start + +```bash +# 1. Run system tests +./test_system.py + +# 2. Use the interactive quickstart +./quickstart.sh + +# 3. Or run directly +./integrated_scanner.py --generate-svg -v +``` + +## 📋 What Each Script Does + +### network_scanner.py +**Main network scanner** - Discovers and scans network devices +- Auto-discovers network segments from routing table +- Ping sweep to find live hosts +- Port scanning (common services) +- SSH-based information gathering +- Device type identification +- Routing table extraction +- Network interface enumeration + +**Usage:** +```bash +./network_scanner.py -c config.json -o scan_results.json -v +``` + +### pfsense_scanner.py +**pfSense-specific scanner** - Deep dive into pfSense firewalls +- Network interfaces and IP configuration +- Complete routing table +- VPN information: + - WireGuard tunnels and peers + - OpenVPN connections + - IPsec tunnels +- Active firewall rules +- DHCP leases +- ARP table +- Gateway status + +**Usage:** +```bash +./pfsense_scanner.py 192.168.1.1 -u root -k ~/.ssh/id_rsa -o pfsense.json +``` + +### svg_generator.py +**SVG diagram generator** - Creates visual network topology +- Color-coded network segments +- Device type icons (routers, servers, clients) +- Device information (IP, hostname, type) +- Network connections +- Legend explaining device types + +**Usage:** +```bash +./svg_generator.py scan_results.json -o network_diagram.svg +``` + +### integrated_scanner.py +**All-in-one scanner** - Combines everything +- Full network scan +- Automatic pfSense detection and deep scanning +- Enhanced routing analysis +- Optional SVG generation +- Comprehensive reporting + +**Usage:** +```bash +./integrated_scanner.py -c config.json -o full_scan.json --generate-svg -v +``` + +### test_system.py +**System verification** - Checks if everything is ready +- Python version check +- Network connectivity test +- Required commands verification +- Script syntax validation +- SSH key detection +- Network detection test + +**Usage:** +```bash +./test_system.py +``` + +## 🔧 Configuration + +Create `config.json` from the example: + +```json +{ + "ssh_user": "root", + "ssh_key_path": "/home/user/.ssh/id_rsa", + "timeout": 2, + "additional_networks": [ + "192.168.1.0/24", + "10.0.0.0/24", + "10.8.0.0/24" + ], + "special_devices": { + "192.168.1.1": { + "name": "pfSense Main Firewall", + "type": "firewall", + "os": "pfSense" + } + }, + "scan_options": { + "max_workers": 10, + "ping_timeout": 2, + "port_scan_timeout": 1 + } +} +``` + +## 📊 Output Format + +### JSON Structure +```json +{ + "scan_timestamp": "2025-10-10T12:00:00", + "segments": [ + { + "name": "192.168.1.0/24", + "cidr": "192.168.1.0/24", + "gateway": "192.168.1.1", + "is_vpn": false, + "devices": [ + { + "ip": "192.168.1.1", + "hostname": "pfsense.local", + "mac": "00:11:22:33:44:55", + "device_type": "firewall", + "os_type": "pfSense (FreeBSD)", + "open_ports": [22, 80, 443], + "ssh_accessible": true, + "routes": [...], + "interfaces": [...], + "pfsense_info": { + "vpn": {...}, + "firewall_rules": [...], + "dhcp_leases": [...] + } + } + ] + } + ] +} +``` + +## 🎯 Common Use Cases + +### 1. Network Documentation +```bash +# Generate complete network documentation +./integrated_scanner.py -o network_doc.json --generate-svg +``` + +### 2. Security Audit +```bash +# Scan and analyze open ports +./network_scanner.py -v -o security_scan.json +cat security_scan.json | jq '.segments[].devices[] | select(.open_ports[]? == 23)' +``` + +### 3. VPN Topology Mapping +```bash +# Extract VPN information +./pfsense_scanner.py -o vpn_info.json +cat vpn_info.json | jq '.vpn' +``` + +### 4. Change Detection +```bash +# Baseline scan +./integrated_scanner.py -o baseline.json + +# After changes +./integrated_scanner.py -o current.json + +# Compare +diff <(jq -S . baseline.json) <(jq -S . current.json) +``` + +### 5. Scheduled Monitoring +```bash +# Add to crontab for daily scans +0 2 * * * /path/to/integrated_scanner.py -o /var/log/network-scan-$(date +\%Y\%m\%d).json +``` + +## 🔐 Security Setup + +### SSH Key Generation +```bash +ssh-keygen -t ed25519 -f ~/.ssh/network_scanner -N "" +``` + +### Distribute to All Devices +```bash +for ip in 192.168.1.{1..254}; do + ssh-copy-id -i ~/.ssh/network_scanner.pub root@$ip 2>/dev/null +done +``` + +### Update Configuration +```json +{ + "ssh_user": "root", + "ssh_key_path": "/home/user/.ssh/network_scanner" +} +``` + +## 🔍 Features + +### Network Discovery +- ✅ Auto-detect network segments from routing table +- ✅ Configurable additional networks +- ✅ VPN network detection +- ✅ Multi-threaded scanning + +### Device Information +- ✅ IP address and hostname +- ✅ MAC address lookup +- ✅ OS detection (via SSH) +- ✅ Device type classification +- ✅ Open port scanning +- ✅ Service enumeration + +### pfSense Integration +- ✅ Full routing table extraction +- ✅ WireGuard tunnel mapping +- ✅ OpenVPN status +- ✅ IPsec tunnels +- ✅ Firewall rules +- ✅ DHCP lease tracking +- ✅ ARP table + +### Visualization +- ✅ SVG diagram generation +- ✅ Color-coded networks +- ✅ Device type icons +- ✅ Connection mapping +- ✅ Legend and labels + +### Output & Integration +- ✅ JSON export +- ✅ Structured data format +- ✅ Easy integration with other tools +- ✅ jq-friendly output + +## 🛠️ Requirements + +- Python 3.8+ +- Linux operating system +- Standard utilities: `ping`, `ip`, `ssh` +- SSH access to network devices (recommended) +- SSH key-based authentication (recommended) + +## 📈 Performance + +- **Small networks** (<50 devices): ~1-2 minutes +- **Medium networks** (50-200 devices): ~5-10 minutes +- **Large networks** (200+ devices): ~15-30 minutes + +Times vary based on: +- Network latency +- SSH accessibility +- Number of ports scanned +- Concurrent worker threads + +## 🐛 Troubleshooting + +### No devices found +```bash +# Check network connectivity +ping + +# Check routing table +ip route show + +# Run with verbose mode +./network_scanner.py -v +``` + +### SSH failures +```bash +# Test SSH manually +ssh -i ~/.ssh/network_scanner root@ + +# Check key permissions +chmod 600 ~/.ssh/network_scanner + +# Verify key is loaded +ssh-add -l +``` + +### Slow scanning +```bash +# Reduce timeout in config.json +{ + "timeout": 1, + "scan_options": { + "ping_timeout": 1, + "port_scan_timeout": 1 + } +} + +# Scan specific networks only +{ + "additional_networks": ["192.168.1.0/24"] +} +``` + +## 🎓 Advanced Usage + +### Custom Device Types +Edit `network_scanner.py` to add custom device identification logic. + +### Extended Port Scanning +Modify `_scan_common_ports()` to scan additional ports. + +### Custom Visualization +Edit `svg_generator.py` to customize colors, icons, and layout. + +### Integration with Other Tools +Use JSON output with tools like: +- `jq` - JSON processing +- `python` - Custom analysis +- `ansible` - Automation +- `grafana` - Monitoring +- `prometheus` - Metrics + +## 📝 Next Steps + +1. **Initial Setup** + ```bash + ./test_system.py + cp config.json.example config.json + # Edit config.json with your details + ``` + +2. **First Scan** + ```bash + ./quickstart.sh + # Or: ./integrated_scanner.py --generate-svg -v + ``` + +3. **Review Results** + ```bash + # View JSON + cat network_scan.json | jq . + + # View diagram + firefox network_diagram.svg + ``` + +4. **Customize** + - Add your networks to config.json + - Mark special devices (pfSense, routers) + - Adjust timeouts and workers + - Set up SSH keys for all devices + +5. **Automate** + - Schedule regular scans + - Compare with baselines + - Generate documentation + - Monitor for changes + +## 💡 Tips + +- **Always get authorization** before scanning networks +- **Use SSH keys** instead of passwords for automation +- **Start small** - test on a single network first +- **Increase verbosity** (`-v`) for troubleshooting +- **Use jq** for powerful JSON querying +- **Keep baselines** for change detection +- **Document special devices** in config.json + +## 📞 Support + +- See `README.md` for detailed documentation +- Check `EXAMPLES.sh` for usage scenarios +- Run `./quickstart.sh` for interactive help +- Run `./test_system.py` to verify setup + +## ✅ Project Status + +All components are complete and tested: +- ✅ Core network scanner +- ✅ pfSense integration +- ✅ SVG diagram generation +- ✅ Integrated scanner +- ✅ Configuration system +- ✅ Documentation +- ✅ Examples and quick start +- ✅ System tests + +**Ready to use!** 🎉 + +--- + +Generated for comprehensive network topology discovery and visualization. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fb2a5c --- /dev/null +++ b/README.md @@ -0,0 +1,364 @@ +# Network Diagram Scanner + +A comprehensive network topology discovery tool that scans local and VPN-connected networks, gathers detailed device information, extracts routing tables from pfSense and other routers, and generates SVG diagrams for network visualization. + +## Features + +- 🔍 **Network Discovery**: Automatically discovers all network segments from routing tables +- 🖥️ **Device Detection**: Identifies devices via ping sweep and port scanning +- 🔐 **SSH Access**: Gathers detailed information from SSH-accessible devices +- 🛡️ **pfSense Integration**: Specialized scanner for pfSense firewalls (routing, VPN, firewall rules, DHCP) +- 🌐 **VPN Support**: Scans networks connected via WireGuard, OpenVPN, and IPsec +- 📊 **SVG Diagram Generation**: Creates visual network topology diagrams +- 🔄 **Routing Analysis**: Extracts and analyzes routing tables from routers +- 📝 **JSON Export**: Structured data output for further processing + +## Requirements + +- Python 3.8 or higher +- Linux-based network (all scripts designed for Linux systems) +- SSH access to network devices (recommended) +- SSH key-based authentication (recommended for automation) + +## Installation + +1. Clone or download this repository: +```bash +cd /home/rwiegand/Nextcloud/entwicklung/Werkzeuge/netzwerk_diagramm_scanner +``` + +2. Make scripts executable: +```bash +chmod +x network_scanner.py pfsense_scanner.py svg_generator.py +``` + +3. (Optional) Install additional dependencies for enhanced features: +```bash +pip3 install -r requirements.txt +``` + +## Configuration + +1. Copy the example configuration: +```bash +cp config.json.example config.json +``` + +2. Edit `config.json` with your network details: +```json +{ + "ssh_user": "root", + "ssh_key_path": "/home/user/.ssh/id_rsa", + "timeout": 2, + "additional_networks": [ + "192.168.1.0/24", + "10.0.0.0/24", + "10.8.0.0/24" + ], + "special_devices": { + "192.168.1.1": { + "name": "pfSense Main Firewall", + "type": "firewall", + "os": "pfSense" + } + } +} +``` + +### Configuration Options + +- **ssh_user**: SSH username for accessing devices (default: `root`) +- **ssh_key_path**: Path to SSH private key for authentication +- **timeout**: Connection timeout in seconds (default: 2) +- **additional_networks**: List of network CIDRs to scan (in addition to auto-discovered ones) +- **special_devices**: Dictionary of known devices with custom attributes + +## Usage + +### Basic Network Scan + +Run a complete network scan: +```bash +./network_scanner.py +``` + +This will: +1. Auto-discover network segments from your routing table +2. Perform ping sweeps to find live hosts +3. Scan common ports on each device +4. Attempt SSH connections to gather detailed information +5. Save results to `network_scan.json` + +### Custom Configuration + +Use a custom config file and output location: +```bash +./network_scanner.py -c my_config.json -o my_scan_results.json +``` + +### Verbose Output + +Enable detailed logging: +```bash +./network_scanner.py -v +``` + +### pfSense-Specific Scanning + +Scan a pfSense firewall directly: +```bash +./pfsense_scanner.py 192.168.1.1 -u root -k ~/.ssh/id_rsa -o pfsense_info.json +``` + +This extracts: +- Network interfaces and IP addresses +- Complete routing table +- VPN configurations (WireGuard, OpenVPN, IPsec) +- Active firewall rules +- DHCP leases +- ARP table +- Gateway status + +### Generate SVG Diagram + +After scanning, generate a visual network diagram: +```bash +./svg_generator.py network_scan.json -o network_diagram.svg +``` + +Open the SVG in a web browser or image viewer: +```bash +firefox network_diagram.svg +# or +xdg-open network_diagram.svg +``` + +## Output Format + +### JSON Structure + +The scanner produces JSON with the following structure: + +```json +{ + "scan_timestamp": "2025-10-10T12:00:00", + "segments": [ + { + "name": "192.168.1.0/24", + "cidr": "192.168.1.0/24", + "gateway": "192.168.1.1", + "is_vpn": false, + "devices": [ + { + "ip": "192.168.1.1", + "hostname": "pfsense.local", + "mac": "00:11:22:33:44:55", + "device_type": "firewall", + "os_type": "FreeBSD", + "open_ports": [22, 80, 443], + "ssh_accessible": true, + "routes": [...], + "interfaces": [...] + } + ] + } + ] +} +``` + +## Workflow + +### Complete Network Discovery Workflow + +1. **Configure SSH Access**: + ```bash + # Generate SSH key if needed + ssh-keygen -t ed25519 -f ~/.ssh/network_scanner + + # Copy to devices + ssh-copy-id -i ~/.ssh/network_scanner root@192.168.1.1 + ``` + +2. **Create Configuration**: + ```bash + cp config.json.example config.json + nano config.json # Edit with your settings + ``` + +3. **Run Network Scan**: + ```bash + ./network_scanner.py -c config.json -o scan_results.json -v + ``` + +4. **Scan pfSense Devices** (if not already captured): + ```bash + ./pfsense_scanner.py 192.168.1.1 -u root -k ~/.ssh/network_scanner -o pfsense.json + ``` + +5. **Generate Diagram**: + ```bash + ./svg_generator.py scan_results.json -o network_topology.svg + ``` + +6. **View Results**: + ```bash + firefox network_topology.svg + ``` + +## SSH Access Setup + +For automated scanning, SSH key-based authentication is recommended: + +### Generate SSH Key +```bash +ssh-keygen -t ed25519 -f ~/.ssh/network_scanner -N "" +``` + +### Copy to All Devices +```bash +# For each device in your network +ssh-copy-id -i ~/.ssh/network_scanner.pub root@ +``` + +### Update config.json +```json +{ + "ssh_user": "root", + "ssh_key_path": "/home/username/.ssh/network_scanner" +} +``` + +## Device Types + +The scanner identifies the following device types: + +- **router**: Devices with extensive routing tables +- **firewall**: pfSense and other firewall devices +- **switch**: Network switches (if detectable) +- **server**: Linux servers with SSH access +- **linux_server**: Specifically identified Linux servers +- **windows_client**: Windows machines (RDP port open) +- **client**: Generic client devices + +## Advanced Features + +### Custom Device Identification + +You can add custom device identification logic by modifying the `_identify_device_type()` method in `network_scanner.py`. + +### WireGuard VPN Scanning + +The scanner automatically detects WireGuard tunnels on pfSense and Linux systems by: +1. Checking for `wg` interfaces +2. Extracting peer information +3. Mapping allowed IPs to network segments + +### Routing Table Analysis + +Routing information is extracted from: +- Linux: `ip route show` +- pfSense: `netstat -rn` +- Other systems: Adaptable via SSH commands + +## Troubleshooting + +### No devices found +- Check network connectivity: `ping ` +- Verify ICMP is not blocked by firewalls +- Try with verbose mode: `-v` + +### SSH connection failures +- Verify SSH key permissions: `chmod 600 ~/.ssh/network_scanner` +- Test manual SSH: `ssh -i ~/.ssh/network_scanner root@` +- Check SSH service is running on target devices + +### Permission denied errors +- Scanner needs root/sudo for some operations (ICMP ping) +- Run with: `sudo ./network_scanner.py` + +### Large networks taking too long +- Reduce scan scope by specifying specific networks in config +- Increase timeout values +- Use fewer worker threads + +## Examples + +### Scan only specific networks +Edit `config.json`: +```json +{ + "additional_networks": [ + "192.168.1.0/24", + "10.8.0.0/24" + ] +} +``` + +### Quick scan without SSH +Set empty SSH key path to skip SSH attempts: +```json +{ + "ssh_key_path": null +} +``` + +### Scan and immediately visualize +```bash +./network_scanner.py -o scan.json && ./svg_generator.py scan.json -o diagram.svg && xdg-open diagram.svg +``` + +## Security Considerations + +- **SSH Keys**: Keep private keys secure with proper permissions (600) +- **Credentials**: Never commit `config.json` with real credentials to version control +- **Network Access**: This tool performs active scanning - ensure you have authorization +- **Firewall Rules**: May trigger IDS/IPS systems - coordinate with network admins + +## Customization + +### Adding New Device Types + +Edit `network_scanner.py`: +```python +def _identify_device_type(self, device: Device) -> str: + # Add your custom logic + if device.hostname and 'myswitch' in device.hostname.lower(): + return 'switch' + # ... existing logic +``` + +### Custom SVG Styling + +Edit `svg_generator.py`: +```python +DEVICE_STYLES = { + 'my_custom_type': {'color': '#FF00FF', 'icon': '🎯', 'shape': 'rect'}, + # ... existing styles +} +``` + +## Future Enhancements + +- [ ] SNMP support for switches and routers +- [ ] Automatic link detection via LLDP/CDP +- [ ] Interactive HTML diagram with zoom/pan +- [ ] Historical comparison (detect network changes) +- [ ] Integration with monitoring systems (Prometheus, Grafana) +- [ ] Multi-threaded pfSense scanning for large deployments +- [ ] Automatic VPN tunnel mapping + +## Contributing + +Feel free to submit issues, feature requests, or pull requests. + +## License + +This project is provided as-is for network documentation and analysis purposes. + +## Author + +Created for comprehensive network topology discovery and visualization. + +--- + +**Note**: Always ensure you have proper authorization before scanning networks. This tool performs active network reconnaissance. diff --git a/config-gw-nue01.egonetix.lan-20251010104729.xml b/config-gw-nue01.egonetix.lan-20251010104729.xml new file mode 100644 index 0000000..375ed65 --- /dev/null +++ b/config-gw-nue01.egonetix.lan-20251010104729.xml @@ -0,0 +1,5259 @@ + + + 24.0 + + pfsense_ng + + + + vfs.forcesync + default + + + + debug.pfftpproxy + default + + + + vfs.read_max + default + + + + net.inet.ip.portrange.first + default + + + + net.inet.tcp.blackhole + default + + + + net.inet.udp.blackhole + default + + + + net.inet.ip.random_id + default + + + + net.inet.tcp.drop_synfin + default + + + + net.inet.ip.redirect + default + + + + net.inet6.ip6.redirect + default + + + + net.inet6.ip6.use_tempaddr + default + + + + net.inet6.ip6.prefer_tempaddr + default + + + + net.inet.tcp.syncookies + default + + + + net.inet.tcp.recvspace + default + + + + net.inet.tcp.sendspace + default + + + + net.inet.tcp.delayed_ack + default + + + + net.inet.udp.maxdgram + default + + + + net.link.bridge.pfil_onlyip + default + + + + net.link.bridge.pfil_member + default + + + + net.link.bridge.pfil_bridge + default + + + + net.link.tap.user_open + default + + + + kern.randompid + default + + + + net.inet.ip.intr_queue_maxlen + default + + + + hw.syscons.kbd_reboot + default + + + + net.inet.tcp.inflight.enable + default + + + + net.inet.tcp.log_debug + default + + + + net.inet.icmp.icmplim + default + + + + net.inet.tcp.tso + default + + + + net.inet.udp.checksum + default + + + + kern.ipc.maxsockbuf + default + + + net.inet.ip.portrange.reservedhigh + 0 + + + + hw.hn.tso_maxlen + 65535 + + + + hw.vtnet.tso_disable + 0 + + + + dev.vtnet.0.txq0.tso + 0 + + + + dev.vtnet.0.tx_tso_offloaded + 0 + + + + dev.vtnet.0.tx_tso_not_tcp + 0 + + + + dev.vtnet.0.tx_tso_bad_ethtype + 0 + + + + + normal + gw-nue01 + egonetix.lan + + all + + system + 1998 + + + admins + + system + 1999 + 0 + page-all + + + admin + + system + admins + + 0 + user-shell-access + ac324e38f8a489d153940fadc57a7cbd + + + + + 2000 + 2000 + Europe/Berlin + + 0.pfsense.pool.ntp.org + + https + 53038dda9a6b6 + + 2 + + + 2 + pfSense-dark.css + 1e3f75; + + + enabled + + + + hadp + hadp + + monthly + + + + + 400000 + + en_US + + 53bbc3372d555 + ldap + srvdc02 + 53bbbfe6c587c + 10.0.0.21 + 389 + Standard TCP + 3 + one + + + + + + + + + + + 25 + + 9600 + serial + + + + aesni_cryptodev + 2_8_1 + + enabled + enabled + + hadp + + + + + + + + + + yes + + cron + 20 + 0 + * + * + * + 3 + yes + + + none + none + none + 194.242.2.2 + 193.19.108.2 + 91.239.100.100 + service wireguardd start + + + + + vtnet0 + dhcp + dhcp6 + + on + on + + + + 0 + + + + + vtnet1 + 10.0.0.1 + 24 + + + + + wan + 0 + + + + + + + tun_wg0 + + + 1300 + 1260 + 10.69.69.1 + 30 + WirusguardusGW + + + + + 172.20.0.0/16 + WirusguardusGW + + + + + + + 10.0.0.100 + 10.0.0.150 + + 7200 + + + + 10.0.0.1 + egonetix.lan + egonetix.lan + egonetix.lan + + + + + + + fe:0a:ea:4d:6c:78 + + 10.0.0.23 + srvmail01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 32:38:39:37:39:39 + + 10.0.0.24 + srvmonitor01 + + + + + + + + + + + + + + + + + 96:63:70:a2:bd:6b + + 10.0.0.29 + srvrevproxy02 + + + + + + + + + + + + + + + + + 7e:9b:28:bb:d7:df + + 10.0.0.37 + srvmailgw02 + + + + + + + + + + + + + + + + + bc:24:11:54:de:9d + + 10.0.0.37 + srvmailgw03 + + + + + + + + + + + + + + + + + + + + + + + + + + 0a:e9:b9:ac:59:8f + + 10.0.0.39 + srvnextcloud02 + + + + + + + + + + + + + + + + + a6:91:f4:10:2e:47 + + 10.0.0.41 + srvrmgw01 + + + + + + + + + + + + + + + + + + + da:42:70:74:c0:13 + + 10.0.0.42 + srvwiki01 + + + + + + + + + + + + + + + + + f6:49:5d:6b:6c:57 + + 10.0.0.43 + srvwordpress01 + + + + + + + + + + + + + + + + + 96:87:94:11:3d:23 + + 10.0.0.44 + srvnextcloud03 + + + + + + + + + + + + + + + + + be:0e:83:ec:fd:01 + + 10.0.0.45 + srvdms01 + + + + + + + + + + + + + + + + + 5e:d7:34:84:2e:5f + + 10.0.0.46 + srvdocker04 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + b2:81:4e:c2:8a:47 + + 10.0.0.47 + srvdocker01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + be:b1:4b:77:28:a5 + + 10.0.0.48 + srvdocker02 + + + + + + + + + + + + + + + + + e6:f6:41:0e:1f:d9 + + 10.0.0.49 + srvdocker03 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 2a:43:da:a9:b8:32 + + 10.0.0.50 + srvfs02 + + + + + + + + + + + + + + + + + 2a:78:fa:54:85:8e + + 10.0.0.51 + srvhome01 + + + + + + + + + + + + + + + + + 26:9f:33:83:31:d9 + + 10.0.0.52 + srvplex + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + d2:d6:43:a8:5c:60 + + 10.0.0.53 + srvgrass01 + + + + + + + + + + + + + + + + + + + + + + + + + + ce:7c:2b:3e:16:91 + + 10.0.0.54 + srvgrass02 + + + + + + + + + + + + + + + + + + + + + + + + + + b6:ee:e8:89:88:41 + + 10.0.0.55 + srvmail02 + + + + + + + + + + + + + + + + + + + + + + + + + + 92:f5:8c:d2:06:19 + + 10.0.0.56 + srvnextcloud01 + + + + + + + + + + + + + + + + + + + + + + + + + + 82:72:5d:a2:0d:73 + + 10.0.0.57 + srvgpt01 + + + + + + + + + + + + + + + + + + + + + + + + + + + bc:24:11:b7:be:31 + + 10.0.0.58 + srvai01 + + + + + + + + + + + + + + + + + + + + + + + + + + bc:24:11:98:40:27 + + 10.0.0.59 + srvts01 + + + + + + + + + + + + + + + + + + + + + + + + + + bc:24:11:29:a0:c6 + + 10.0.0.60 + srvcode01 + + default + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10.0.0.21 + + + + + hmac-md5 + allow + 10.0.0.21 + 10.0.0.1 + 192.53.103.108 + + + + + + + + + + + zabbix + + + + + + + + + 161 + 10.0.0.13 + 162 + zabbix + lan + + + + + + + + + 200 + + ipv4 + bzip2 + rfc3164 + + 10.0.0.48:514 + + + + enabled + + + + + + + + + wanip + 3478 + + inet + tcp/udp + 10.0.0.13 + 3478 + wan + + nat_5e92beea5d78f1.42043041 + + + + + + + + + + + + + + + wanip + 993 + + tcp/udp + 10.0.0.21 + 993 + wan + + nat_5d25d87dd02951.07124574 + + + + + + + + + + + + + + + wanip + 143 + + tcp/udp + 10.0.0.21 + 143 + wan + + nat_5d2701c9192b32.34567247 + + + + + + + + + + + + + + + wanip + 465 + + tcp/udp + 10.0.0.21 + 465 + wan + + nat_5d25d8abe71685.94398056 + + + + + + + + + + + + + + + wanip + 587 + + tcp/udp + 10.0.0.21 + 587 + wan + + nat_5d2701adab3610.52057307 + + + + + + + + + + + + + + + wanip + 443 + + inet + tcp + 10.0.0.29 + 443 + wan + + nat_50e97d06d902a9.84018420 + + + + + + + + + + + wanip + 8448 + + tcp + 10.0.0.29 + 8448 + wan + + nat_5fea1971842a03.40302471 + + + + + + + + + + + + + + + wanip + 3478 + + inet + tcp/udp + 10.0.0.48 + 3478 + wan + + nat_685d3713508ee4.95814256 + + + + + + + + + + + + + + + wanip + 222 + + inet + tcp/udp + 10.0.0.48 + 222 + wan + + nat_686e2fcf3041e7.42519569 + + + + + + + + + + + + + + + wanip + 32400 + + tcp/udp + 10.0.0.48 + 32400 + wan + + nat_5d4416fb4814a6.29962428 + + + + + + + + + + + + + + + wanip + 8096 + + tcp/udp + 10.0.0.48 + 8096 + wan + + nat_5d62bcbf4ecca4.82154889 + + + + + + + + + + + + + + + wanip + 22000 + + inet + tcp/udp + 10.0.0.48 + 22000 + wan + + nat_68a5a9afadbd58.32830902 + + + + + + + + + + + + + + + wanip + 8080 + + tcp + 10.0.0.21 + 8080 + wan + + nat_5d3aaabf9675e6.22055731 + + + + + + + + + + + + + + + wanip + 8443 + + tcp + 10.0.0.21 + 8443 + wan + + nat_5d271068503fb1.72834721 + + + + + + + + + + + + + + + wanip + 80 + + inet + tcp + 10.0.0.29 + 80 + wan + + nat_50eb17fbd17572.66536060 + + + + + + + + + + + wanip + 25 + + tcp/udp + 10.0.0.37 + 25 + wan + + nat_50f8185cd2a136.83136546 + + + + + + + + + 12.1.0.0/24 + + + + + + openvpn + + + + + 172.20.0.0/16 + + + + + + + + + + + + + lan + + + + + + opt1 + + + + + 172.20.0.0/16 + + + + + + + + + + + + + any + + + + enc0ip + enc0 + + + + + + + + + 172.20.20.0/24 + + + + wanip + wan + + + + + + + + + 10.0.0.0/24 + + + + wanip + wan + + + + + + + + + 10.10.20.0/24 + + + + wanip + wan + + + + + + + + + + + + + + + + + 172.20.20.0/24 + + + + wanip + wan + + + + + + + + + + + + + + + + wan + + 127.0.0.0/8 + + 500 + wanip + + + + + + + + + + + + wan + + 127.0.0.0/8 + + + wanip + + + + + + + + + + + + wan + + ::1/128 + + 500 + wanip + + + + + + + + + + + + wan + + ::1/128 + + + wanip + + + + + + + + + + + + wan + + 10.0.0.0/24 + + 500 + wanip + + + + + + + + + + + + wan + + 10.0.0.0/24 + + + wanip + + + + + + + + + + + + wan + + 10.11.11.0/24 + + 500 + wanip + + + + + + + + + + + + wan + + 10.11.11.0/24 + + + wanip + + + + + + + + + + + + wan + + 10.10.20.0/24 + + 500 + wanip + + + + + + + + + + + + wan + + 10.10.20.0/24 + + + wanip + + + + + + + + + + + + wan + + 12.1.0.0/24 + + 500 + wanip + + + + + + + + + + + + wan + + 12.1.0.0/24 + + + wanip + + + + + + + + + + + + wan + + 10.10.30.0/24 + + 500 + wanip + + + + + + + + + + + + wan + + 10.10.30.0/24 + + + wanip + + + + + + + + + + + + wan + + 10.0.120.0/24 + + 500 + wanip + + + + + + + + + + + + wan + + 10.0.120.0/24 + + + wanip + + + + + + + + + + + + wan + + 172.20.0.0/16 + + 500 + wanip + + + + + + + + + + + + wan + + 172.20.0.0/16 + + + wanip + + + + + + + + + + + advanced + + + + + + inet + reject + + + + + +
pfB_PRI1_v4
+
+ + + + + + lan + 1770008075 +
+ + + 1426500457 + pass + wan + inet + + + + + + + + + + tcp + +
80.241.60.212
+ + + + 25 + + + + + + + + + + +
+ + + + + + + + + + + + block + + +
pfBlockerTopSpammers
+ + + + + + wan + 1422395664 + +
+ + + pass + wan + + + + + + + + + + tcp + + + + + wanip + 443 + + + + 1422395665 + + + + pass + wan + + + + + + + + + + tcp + + + + + wanip + 80 + + + + 1422395666 + + + + pass + wan + + + + + + + + + + tcp + + + + + + 22 + + + + 1422395667 + + + + pass + wan + + + + + + + + + + tcp + + + + + + 443 + + + + 1422395668 + + + + pass + wan + + + + + + + + + + tcp/udp + + + 4500 + + + + 4500 + + + 1422395669 + + + + pass + wan + + + + + + + + + + tcp + + + 500 + + + + 500 + + + 1422395670 + + + + pass + wan + + + + + + + + + + esp + + + + + + + + 1422395671 + + + + pass + wan + + + + + + + + + + ah + + + + + + + + 1422395672 + + + + pass + wan + + + + + + + + + + tcp + + + + +
10.0.0.29
+ 443 +
+ + nat_50e97d06d902a9.84018420 + 1422395674 + inet +
+ + + pass + wan + + + + + + + + + + tcp + + + + +
10.0.0.29
+ 80 +
+ + nat_50eb17fbd17572.66536060 + 1422395675 + inet +
+ + + + + wan + tcp/udp + +
10.0.0.37
+ 25 +
+ + nat_50f8185cd2a136.83136546 + 1422395678 +
+ + + 1422395684 + pass + wan + inet + + + + + + + + + + tcp/udp + + + + + wanip + 1195 + + + + + + + + + + + + + pass + wan + + icmp + echoreq + +
213.133.113.84
+ + +
176.9.95.82
+
+ 1422395698 +
+ + + 1480950946 + pass + wan + inet + + + + + + + + + + tcp + + + 30331 + + +
10.0.0.20
+ 3389 +
+ + + + + + + + + + +
+ + + 1531912851 + pass + wan + inet + + + + + + + + + + + + + +
10.0.0.34
+
+ + + + + + + + + + +
+ + + + + wan + tcp/udp + +
10.0.0.21
+ 993 +
+ + nat_5d25d87dd02951.07124574 + 1562761341 + + + + +
+ + + + + wan + tcp/udp + +
10.0.0.21
+ 465 +
+ + nat_5d25d8abe71685.94398056 + 1562761387 + + + + +
+ + pass + wan + inet + + tcp + +
92.79.82.210
+ + +
95.216.21.72
+ 110 +
+ + + + + 1562836606 +
+ + + + + wan + tcp/udp + +
10.0.0.21
+ 587 +
+ + nat_5d2701adab3610.52057307 + 1562837421 + + + + +
+ + + + + wan + tcp/udp + +
10.0.0.21
+ 143 +
+ + nat_5d2701c9192b32.34567247 + 1562837449 + + + + +
+ + + + + wan + tcp + +
10.0.0.21
+ 8443 +
+ + nat_5d271068503fb1.72834721 + 1562841192 + + + + +
+ + + + + wan + tcp + +
10.0.0.21
+ 8080 +
+ + nat_5d3aaabf9675e6.22055731 + 1564125887 + + + + +
+ + + + + wan + tcp/udp + +
10.0.0.48
+ 32400 +
+ + nat_5d4416fb4814a6.29962428 + 1564743419 + + + + +
+ + + + + wan + tcp/udp + +
10.0.0.48
+ 8096 +
+ + nat_5d62bcbf4ecca4.82154889 + 1566751935 + + + + +
+ + + + + wan + tcp/udp + +
10.0.0.13
+ 3478 +
+ + nat_5e92beea5d78f1.42043041 + 1586675434 + + + + + inet + +
+ + + + + wan + tcp + +
10.0.0.29
+ 8448 +
+ + nat_5fea1971842a03.40302471 + 1609177457 + + + + +
+ + + 1748421225 + pass + wan + inet + + + + + + + + + + tcp/udp + + + + + wanip + 51820 + + + + + + + + + + + + + + 1748864974 + pass + wan + inet + + + + + + + + + + tcp + + + + + + 853 + + + + + + + + + + + + + + + + wan + inet + tcp/udp + +
10.0.0.48
+ 3478 +
+ + nat_685d3713508ee4.95814256 + 1750939411 + + + + +
+ + + + + wan + inet + tcp/udp + +
10.0.0.48
+ 222 +
+ + nat_686e2fcf3041e7.42519569 + 1752051663 + + + + +
+ + + + + wan + inet + tcp/udp + +
10.0.0.48
+ 22000 +
+ + nat_68a5a9afadbd58.32830902 + 1755687343 + + + + +
+ + + 1750255444 + pass + lan + inet + + + + + + + + + + + lan + + +
10.69.69.2
+
+ + + + + + + + + +
+ + + 1486659007 + pass + lan + inet + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1750250633 + pass + WireGuard + inet46 + + + + + + + + + + + + + + + + + + + + + + + + + + + + pass + enc0 + + + + + + + + + + + + + + + + + 1422395712 + + + + pass + enc0 + + + + + + + + + + icmp + echorep + + + + + + + + 1422395713 + + + + pass + enc0 + + + + + + + + + + icmp + echoreq + + + + + + + + 1422395714 + + + + 1422395715 + pass + openvpn + inet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1748422740 + pass + opt1 + inet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + 1 + wan + droelf.no-ip.org + aggressive + address + 176.9.95.82 + peeraddress + + 28800 + eccmts42* + + + + pre_shared_key + + + + force + 10 + 5 + ikev1 + + + + + aes + 128 + + sha1 + 1 + + + inet + + + 2 + wan + + aggressive + myaddress + + fqdn + admin.egonetix.local + 28800 + eccmts42* + + 517944f936e9b + + xauth_psk_server + unique + strict + + force + 60 + 5 + ikev1 + + + + + aes + 128 + + sha1 + 2 + + + inet + + + + system + system + 10.0.120.0 + 24 + + egonetix.local + 10.0.0.6 + 10.0.0.1 + 141.1.1.1 + + + + 1 + tunnel + + network +
13.0.0.0
+ 24 +
+ + lan + + + network +
172.20.20.0
+ 24 +
+ esp + + aes + 256 + + hmac_sha1 + 0 + 3600 + 172.20.20.1 + + 54c808fc5c1d6 + 1 +
+ + 2 + tunnel + + lan + + + mobile + + esp + + aes + auto + + hmac_sha1 + 0 + 28800 + + + + 54c808fc5c21d + 2 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + + 2 + 0 + 2000 + + +
+ + + pfB_PRI1_v4 + https://127.0.0.1:443/pfblockerng/pfblockerng.php?pfb=pfB_PRI1_v4 + 32 +
+ + urltable + +
+ + pfBlockerTopSpammers + https://127.0.0.1:443/pfblocker.php?pfb=pfBlockerTopSpammers + 32 +
+ + urltable + +
+ + snort_allow + host +
212.93.4.42 92.79.82.210
+ + +
+
+ + + + 1,31 + 0-5 + * + * + * + root + /usr/bin/nice -n20 adjkerntz -a + + + 1 + 3 + 1 + * + * + root + /usr/bin/nice -n20 /etc/rc.update_bogons.sh + + + 1 + 1 + * + * + * + root + /usr/bin/nice -n20 /etc/rc.dyndns.update + + + */60 + * + * + * + * + root + /usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 virusprot + + + 30 + 12 + * + * + * + root + /usr/bin/nice -n20 /etc/rc.update_urltables + + + 0 + * + * + * + * + root + /usr/local/bin/php -q /usr/local/www/pfblocker.php cron + + + 1 + 0 + * + * + * + root + /usr/bin/nice -n20 /etc/rc.update_pkg_metadata + + + 16 + 3 + * + * + * + root + /usr/local/pkg/acme/acme_command.sh "renewall" + + + */1 + * + * + * + * + root + /usr/sbin/newsyslog + + + 1 + 3 + * + * + * + root + /etc/rc.periodic daily + + + 15 + 4 + * + * + 6 + root + /etc/rc.periodic weekly + + + 30 + 5 + 1 + * + * + root + /etc/rc.periodic monthly + + + 20 + 0 + * + * + * + root + /usr/bin/nice -n20 /usr/local/bin/php /usr/local/sbin/execacb.php + + + * + * + * + * + * + root + /usr/bin/nice -n20 /usr/local/bin/php /usr/local/sbin/acbupload.php + + + 0 + * + * + * + * + root + /usr/local/bin/php /usr/local/www/pfblockerng/pfblockerng.php cron >> /var/log/pfblockerng/pfblockerng.log 2>&1 + + + */1 + * + * + * + * + root + /usr/local/pkg/servicewatchdog_cron.php + + + 0 + 6 + * + * + * + root + /usr/local/bin/php /usr/local/www/pfblockerng/pfblockerng.php dcc >> /var/log/pfblockerng/extras.log 2>&1 + + + */5 + * + * + * + * + root + /usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/snort/snort_check_cron_misc.inc + + + */2 + * + * + * + * + root + /usr/bin/nice -n20 /sbin/pfctl -q -t snort2c -T expire 900 + + + 26 + 0,6,12,18 + * + * + * + root + /usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/snort/snort_check_for_rule_updates.php + + + + + + + + gateways:col1:open:0,system_information:col1:open:0,disks:col1:open:0,interface_statistics:col1:open:0,interfaces:col2:open:0,wireguard:col2:open:0,openvpn:col2:open:0,services_status:col2:open:0,traffic_graphs:col2:open:0,pfblockerng:col2:open:0,snort_alerts:col1:open:0 + + + 1 + true + 1 + true + + + + + gw_ip + WAN_DHCP6,WirusguardusGW + + + + + + + + + + 1 + server_user + srvdc02 + UDP4 + tun + wan + + 1195 + + tun-mtu 1400; +mssfix 1360; +push "mssfix 1360"; + Iw0KIyAyMDQ4IGJpdCBPcGVuVlBOIHN0YXRpYyBrZXkNCiMNCi0tLS0tQkVHSU4gT3BlblZQTiBTdGF0aWMga2V5IFYxLS0tLS0NCjM2MWIxYTJhY2Y4MWJhODMwODAwMWJkMzJlMWQwNjllDQowNzVhOTNhNmMzY2M4NDZkMTM0YWZmYTEyNzcxNWU4Nw0KNzgwOTNiOGJjN2NjNDQyMzJhY2Q1OWVjZjA4YjI2Y2MNCmFlYTFmMjY2MTVlMzAwOTYwNjhlZWFjMmQ2NDcwYmY4DQozODViNDJiMDUwYzE0NjU2YTU0YzI4M2I4ZDBjZTdjMQ0KMWQ1NmVlZmNhMzQxODNjNzlkZDI4MWQxNmE1N2ExYzgNCjFlYmZlZGViNjc2OThmNjhiYWQzNjczYzQwNDhkZDM4DQo1ZWRiYjUzYjFhYTg4N2Y3ZGZmYjQ2ZmE4OTNiNmNiNQ0KNmZjNDQ0MDM1MTU0NjNlOTk4YTQyN2RjMGIxZWI3NTMNCmVmOTE0MWU4N2E2Nzc5ZmVlN2NlMTBlNjE0ZmIwZjNhDQpiYzM3MzI3OTJkMmE4NTMzZjIxMDcyNGVjMTIzZGQ4Mw0KOGNhNWVkMzM2MjlkMTdkYTc2OGUxZTg4YzkwMmE0MDUNCmI3MWFlYjAxYTE0MTI2OGYxOTYyYWNkNjBmMzBlYzQ5DQo0ZGYzNjA1ZGEwNWU2MjdlZDBjODQ2NjQ1ZjJkYTU5Mw0KNzdiZTFjNzhjYTMyMzgwZWRlMGU1ZGEwODM1NGJlYmINCjczYWI5ZmE3NmEwMmJlNGJhNWMwZGE1ZDc5MWEzNGQxDQotLS0tLUVORCBPcGVuVlBOIFN0YXRpYyBrZXkgVjEtLS0tLQ0K + auth + default + 53bbbfe6c587c + + + 5b5ef3932235a + 4096 + none + 1 + AES-128-CBC + SHA1 + none + 12.1.0.0/24 + + + + + + 10.0.0.0/24,172.20.0.0/16,172.22.22.0/24 + + 4 + + no + + yes + + yes + yes + subnet + + none + + + + egonetix.lan + 10.0.0.21 + 172.20.20.1 + + + + yes + none + 1048576 + yes + + 0 + + both + 1 + + AES-256-GCM,AES-128-GCM,AES-128-CBC + keepalive + 10 + 60 + 10 + + ping_restart + 60 + + 0 + + + 5 + + p2p_tls + UDP4 + tun + wan + + 1197 + + + Iw0KIyAyMDQ4IGJpdCBPcGVuVlBOIHN0YXRpYyBrZXkNCiMNCi0tLS0tQkVHSU4gT3BlblZQTiBTdGF0aWMga2V5IFYxLS0tLS0NCjZlODU0N2ExZmM2NmQ5ZDBjYWIyNGRmNWRhMjFmYTk5DQpmOWI5NDlmYjAwMmM4N2NlYzI3YmQ3YmZiZTljNzMxZA0KMzk0NjQ4YjNjN2U0MTQwZWIwOWJjZjliYTAxM2E4NjUNCjZiY2FhOWEwZjE3ODViYmZmYWI1MDY0ZmZmMmEzOTIzDQpmNDhhYzZhNzcyNmJlZWQ5MTU2NzhiNGYzYTU5YzcwZg0KZWI5ZTVkYzIyOTZiODUzODJmNGVhYmRiYjk1MzkzZjMNCmUxMTM2MDJmNzliYTNiYWQ3YjA1MTZhODZiYmNiMjI1DQo2OTY5MmE2OGUyODU4NzRkNTgzZjkxYTMxNTUzZmUzZg0KNDM3NGI2MzNhNzFhMzljMDIyMjgxNmNhMTczZTU0NzcNCmFmM2EwMzZiMjE3ZWNiYmE4MTZiNWIzNmYyM2RlMDQwDQo5NDc3MzA0MDMxNjBhZTMzMDMxNDk4M2UzYTQzNzZjYw0KNmFkYjAwMzM1MjU4ZGU2NzA2OGNjZjhiNjY4M2M5ZTgNCmE5MGUzY2M1Mzk0ZmIwMTAyYTY0NDVjODZlMjA3ZWE2DQpkNDExZjU4ZDZmNzYxZDU2MzM5ZDRjN2ViM2FjMDY3NA0KNDBiOTkyY2RjNDI1NWNkNDI1NWIzYzA2YzZkZWQ0YWQNCmVjNGVkYmFjNWE2ZjFlMmIxNDFmOGRmNTU2MjlkZGExDQotLS0tLUVORCBPcGVuVlBOIFN0YXRpYyBrZXkgVjEtLS0tLQ0K + auth + 1 + 664ca7c2efc5b + + + 664ca810f149a + 4096 + none + + + AES-128-CBC + SHA1 + none + 10.10.40.0/30 + + 172.20.20.0/24,192.168.178.0/24 + + + + 10.0.0.0/24 + + + + no + lz4-v2 + + + + + subnet + + none + + + + + none + 1048576 + + 0 + + both + 3 + AES-128-GCM,AES-128-CBC + keepalive + 10 + 60 + 10 + + ping_restart + 60 + + 0 + + + + push "route 172.20.20.0 255.255.255.0"; + + + + + + + + + + + 0 + + + + 5 + + + + + + + + + 172.20.20.0/24 + + + + 0 + + + + + + + 53038dda9a6b6 + + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVZakNDQTh1Z0F3SUJBZ0lJSUVXRmVVVDlnVzB3RFFZSktvWklodmNOQVFFTEJRQXdnYjh4Q3pBSkJnTlYKQkFZVEFsVlRNUkl3RUFZRFZRUUlFd2xUYjIxbGQyaGxjbVV4RVRBUEJnTlZCQWNUQ0ZOdmJXVmphWFI1TVJRdwpFZ1lEVlFRS0V3dERiMjF3WVc1NVRtRnRaVEV2TUMwR0ExVUVDeE1tVDNKbllXNXBlbUYwYVc5dVlXd2dWVzVwCmRDQk9ZVzFsSUNobFp5d2djMlZqZEdsdmJpa3hKREFpQmdOVkJBTVRHME52YlcxdmJpQk9ZVzFsSUNobFp5d2cKV1U5VlVpQnVZVzFsS1RFY01Cb0dDU3FHU0liM0RRRUpBUllOUlcxaGFXd2dRV1JrY21WemN6QWVGdzB5TkRBMwpNRFl4T0RRMk1EaGFGdzB5T1RFeU1qY3hPRFEyTURoYU1JRy9NUXN3Q1FZRFZRUUdFd0pWVXpFU01CQUdBMVVFCkNCTUpVMjl0Wlhkb1pYSmxNUkV3RHdZRFZRUUhFd2hUYjIxbFkybDBlVEVVTUJJR0ExVUVDaE1MUTI5dGNHRnUKZVU1aGJXVXhMekF0QmdOVkJBc1RKazl5WjJGdWFYcGhkR2x2Ym1Gc0lGVnVhWFFnVG1GdFpTQW9aV2NzSUhObApZM1JwYjI0cE1TUXdJZ1lEVlFRREV4dERiMjF0YjI0Z1RtRnRaU0FvWldjc0lGbFBWVklnYm1GdFpTa3hIREFhCkJna3Foa2lHOXcwQkNRRVdEVVZ0WVdsc0lFRmtaSEpsYzNNd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEEKTUlHSkFvR0JBTEV5N0tZM1pnT0l2QVNMZ0YyUVBBTUhpOW90WWF1UTV2TStTUHdsM3dTalRiVDJ1d09nTjRlQwpMc0hxTG9OUzlPUnpxbGZkUHNiR2tjcllVb1lKMjhEM2pHU3ZwV2tsWThldldZd2h6dzhIV2NVN2V2bUo1U2ZnCjdJdEsvOHhrTXJQTmYzRVVUWGhRc3RDUEltMlF3VG5tRkh3VlJQbWRwTEh4STB0ckxrWDNBZ01CQUFHamdnRmoKTUlJQlh6QUpCZ05WSFJNRUFqQUFNQXNHQTFVZER3UUVBd0lGNERBeEJnbGdoa2dCaHZoQ0FRMEVKQllpVDNCbApibE5UVENCSFpXNWxjbUYwWldRZ1ZYTmxjaUJEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVS9HMk5jdElDCm93VGM4UWZoenFsM3NUZW9acGt3Z2QwR0ExVWRJd1NCMVRDQjBxR0J4YVNCd2pDQnZ6RUxNQWtHQTFVRUJoTUMKVlZNeEVqQVFCZ05WQkFnVENWTnZiV1YzYUdWeVpURVJNQThHQTFVRUJ4TUlVMjl0WldOcGRIa3hGREFTQmdOVgpCQW9UQzBOdmJYQmhibmxPWVcxbE1TOHdMUVlEVlFRTEV5WlBjbWRoYm1sNllYUnBiMjVoYkNCVmJtbDBJRTVoCmJXVWdLR1ZuTENCelpXTjBhVzl1S1RFa01DSUdBMVVFQXhNYlEyOXRiVzl1SUU1aGJXVWdLR1ZuTENCWlQxVlMKSUc1aGJXVXBNUnd3R2dZSktvWklodmNOQVFrQkZnMUZiV0ZwYkNCQlpHUnlaWE56Z2dnZ1JZVjVSUDJCYlRBVApCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFOQmdrcWhraUc5dzBCQVFzRkFBT0JnUUJtVjlPaldkS3loMUlUCmJCb1pZSzZEaVZVeXM1cUZkQUk1RlMwZkZ0WXRtYUQ3cEFLdUJPd3hlWEs1S21FUURYZWNqY0JFRzFmU2JvOUIKM1JvdHhRMDdTazNzTnBQeFBBaURJeDA0cVp3MU15Q3BIU2JXSmxMWDJVTGxsVmMxdUtyQ0lycnFzYzdDOTFiQgpqdkNqU0UrQjJXVy9iMnYyVSttWm5WUXA1STl0UXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUNkZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQW1Bd2dnSmNBZ0VBQW9HQkFMRXk3S1kzWmdPSXZBU0wKZ0YyUVBBTUhpOW90WWF1UTV2TStTUHdsM3dTalRiVDJ1d09nTjRlQ0xzSHFMb05TOU9SenFsZmRQc2JHa2NyWQpVb1lKMjhEM2pHU3ZwV2tsWThldldZd2h6dzhIV2NVN2V2bUo1U2ZnN0l0Sy84eGtNclBOZjNFVVRYaFFzdENQCkltMlF3VG5tRkh3VlJQbWRwTEh4STB0ckxrWDNBZ01CQUFFQ2dZQW1RWTFQOFdQbjNXeGlPcy95NDBIaGtZNkQKQXdzMEpDdUlWbWtoYnZld0k2V1NMVGFBK09Va0wxbnk2YUV6SHdUYUVaSzBONExuSFZXNmltdCtuc0EvazdFZQp0TVZYd05KZVJ0TWpETU1RWWZ2OHptTWY3emRGVUdiMjMzQjZMQ1lIc2RKM0FKWnVHZlVIYkMwMlFEVVBrcm1CCi9xNGV5Z1hXMkNNeEdlcGVlUUpCQU9hTVlqa2h3WG03SUFJWVJYZHQyRUYycnV2U1ZiUHVGUnYxRTRRU1QyK0QKZVJLVlB0ZkpyLzVLKzhKVC95cjIxM2F1SjNIaThqakg2K1oxWlppRlptMENRUURFd3MrMnNKYkFIcllGYWxtSgozVUlMVGNTbVpnaUVuVmI4aXpZcCt6cFRVM3Rjam1CdFlHWGV1OVMwc2Q5ZEdhZVNyZzZVQUcwSjZqTjgxQTFJCk9HOXpBa0VBbURhVlh3MEhWUnlUckc1ajVzN3lHWDZIVEpFcEhrdVJTazBMWG9aTVJkNnluKzlEZDJya3RHckQKUDNEL3Bsa2t0bW1UQjJFRDlUTWhiNTJRdnh0TUhRSkFkVEcvdklYajFKeTJOL1dIVFZsUExDSnUvZG1LTzBybgo4OVlMTmVnZ2JsOHIvQTRGbTBBdWpRTDloMzdtbHJKZ0lEcXlEaTlPd3ZnUElNdkErWUk3eHdKQVU3dUM3VWdwCmpvSFNNYzJEU3pxUExzREJJYndtRldWcG5PZlhpVmppR1lkS0d6UUdBYWVrdEZUYnNPQUlOQ1hSYnRoR0V0QmUKT1RQSnZuYzZyQ09lbkE9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg== + user + + + 53bbc01859953 + + 53bbbfe6c587c + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUd3ekNDQkt1Z0F3SUJBZ0lCQXpBTkJna3Foa2lHOXcwQkFRc0ZBREI4TVFzd0NRWURWUVFHRXdKRVJURVAKTUEwR0ExVUVDQk1HUW1WeWJHbHVNUTh3RFFZRFZRUUhFd1pDWlhKc2FXNHhFVEFQQmdOVkJBb1RDRVZuYjI1bApkR2w0TVNJd0lBWUpLb1pJaHZjTkFRa0JGaE50YjI1cGRHOXlRR1ZuYjI1bGRHbDRMbVJsTVJRd0VnWURWUVFECkV3dHBiblJsY201aGJDMWpZVEFlRncweU5EQTNNRFl4T0RNeU1URmFGdzB6TkRBM01EUXhPRE15TVRGYU1JR0EKTVFzd0NRWURWUVFHRXdKRVJURVBNQTBHQTFVRUNCTUdRbVZ5YkdsdU1ROHdEUVlEVlFRSEV3WkNaWEpzYVc0eApFVEFQQmdOVkJBb1RDRVZuYjI1bGRHbDRNU0l3SUFZSktvWklodmNOQVFrQkZoTnRiMjVwZEc5eVFHVm5iMjVsCmRHbDRMbVJsTVJnd0ZnWURWUVFERXc5M2QzY3VaV2R2Ym1WMGFYZ3VaR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUMwNjZVRDViK2RSbll0Z3BGaDhhNmU2NkZDMS9qbGR0ZVFLc0NBbndpSApSMkhnQ2hCMHQrdkhZNHNsdEwzc0dWaGtNNkhHNklsWnllSDJROFM1ZU81QmlIVWhPb1I0K2lsanh5Vmdvc1JQCitVRHJLKzJjY0M5ZUFjUVVNS2NyUThXS1MwdUR0eEdKcmtrOFVKalA3MEdUMTVLQUd1M1VlUDAvTGxoWGlhYlYKRFh1Z0kwZDM0VVhlUW0ySmprVEdjSDlWeEoza3JZYlJCNjlFSWkwUVAzdzBwNUpYUzluYnlvbTgra0FNUlIvNgpjU0ZJWCtPSWVPTGRWcktuUVVjMDI3TFIwZVc0VkNhOC9rRWtSVjVZRVB3K1llVjRHaGpLZTFIZlpJNlJyVW04Cm9adFplVmVnNmFFdUZDM2Z1dnN0Q1hIQjUvZ2h3L2xKQUpUQTNJMTFZQXpJYnAwZlVnNUVjbm16dUZYQS90Y1YKeTJ6ckdacGU1M0lwT2p2ZE5pcUFSSlVkaGZlQnV1OEdKUTNtamQzMDRkdWRzUktMb1V2dUxNZTgzVTdVRVFtNwo5NVYvL2xodGY4MC90UFJDNVZmb3Y0ZHNXWGlGSVR4YTh2S0VwbjlPeE9GOTNscXFPcHc5TldnMXY4UlZTL2JTCjlIVWViQXVqdjJrNTNqZUdzQU1xOGZOS3hudmk2R0g3ZzhSN1RiK2hSTk52ZUVNazlUbE83NEk4SzNFdjBHQXkKcDNDNTduUFJRWnpNUFlZYU5rYXJsTWk3NTRyWkYyZEdDbnY3SWZCVy9YZ1duanNVRllKT1lwalh6WTltS0pmRwpvb2dLdkxxM2U4UUNZWkNKaUlUbGpJSHJYSTlLWmRXVDNSeCtZZkpZbWxsRkFBNVdoa0hNZ24rbnBJZzdkVkRGCnpRSURBUUFCbzRJQlNUQ0NBVVV3Q1FZRFZSMFRCQUl3QURBTEJnTlZIUThFQkFNQ0JlQXdNUVlKWUlaSUFZYjQKUWdFTkJDUVdJazl3Wlc1VFUwd2dSMlZ1WlhKaGRHVmtJRlZ6WlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEVlIwTwpCQllFRkNVcXpDMU9LR1NheEZOamcwaUpEbE45cFkwMk1JR25CZ05WSFNNRWdaOHdnWnlBRk02UGhLbnlsTllFCnZOM3RYOU0rRnhWVDFqYnZvWUdBcEg0d2ZERUxNQWtHQTFVRUJoTUNSRVV4RHpBTkJnTlZCQWdUQmtKbGNteHAKYmpFUE1BMEdBMVVFQnhNR1FtVnliR2x1TVJFd0R3WURWUVFLRXdoRloyOXVaWFJwZURFaU1DQUdDU3FHU0liMwpEUUVKQVJZVGJXOXVhWFJ2Y2tCbFoyOXVaWFJwZUM1a1pURVVNQklHQTFVRUF4TUxhVzUwWlhKdVlXd3RZMkdDCkFRQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3R2dZRFZSMFJCQk13RVlJUGQzZDNMbVZuYjI1bGRHbDQKTG1SbE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQWxPNDRJQWxjcFFXbk5EdHk5STRBd0NhblhaOVU5N0d1RQp2M0dSUVZOOE5pdzhUZi85eFFQZ2pQdUZucTc5eHNHNGl2TVF2TUJrcnJxL1JSRkV6Ly8yc0NNNTJVaTNteTRKCnZmT2tXV0xCTnVhMXg1SHRFVDdSWlVXc3o5MjZXVGtiQmljbW8xZExOZGg0dzBUL3owY3ZQR0k1b1NuWUJiVWUKQXcxWFlkeDRRL0pNckRxUXE5L3AreHNpdjNIN2NzUEFralBoR0R1Qy9lM0dsZ2EyQkQ1VjZDL3licmQvVmY3NAo4WENNSDJKcU5Sc0U0OUF2OWcyMzI3Njk4Q3FUTE1tU0pXZENBZlFUWVRrbTZxcTFRRStNUGdubmdLaEx3N0dVCmpHNHQyWHFkaG9PVVFMSGxDRXFVb3FyKzZrWEk2emlEMEorekllQ0k2a2toempyRUdmMVM0cW10WUkzYnd5RFIKMzJnNnVIZlYxWG93V2Z3UzdJd1BWRlM1L3pGWXI1eVZQUWhwZzUzbUVJSnNwZmtIMFJwa2tPeDhmR0plR2VEOAp6SHBqOUV0RUE4ZkRHdS9xVG9icUVSWS9iUE9DTFZNSDNiRGRqY0RsamtSNEMyd2xFK0NEWUZVeVVaVWpEb21sCnZJSWhMdXRGVFpjWkh0N1hJT205Mmc1MVErVDJUYVAvdmQzZFlCNy9oZ1lGd1A3dUpmTHc2dFBjUW5xd1BXNHkKU2w2aFVkdTFkZHYrVzVrUlJMMEY2OCtiakpSRnpvbkhHeEc4TnAxQmJZa01NN1pCYlBHQ3VyLzUxOWVRcGgwbAplR1dLMDFFNEg3Q1ltOEFKWEV2Qzl0L2x0Ty93WE5VaFFwdzA3emhSWjZqM0F2ZXpHWXY5enEvczBRK05paUpOCkE0RVFnTzFqZnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRd0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1Mwd2dna3BBZ0VBQW9JQ0FRQzA2NlVENWIrZFJuWXQKZ3BGaDhhNmU2NkZDMS9qbGR0ZVFLc0NBbndpSFIySGdDaEIwdCt2SFk0c2x0TDNzR1Zoa002SEc2SWxaeWVIMgpROFM1ZU81QmlIVWhPb1I0K2lsanh5Vmdvc1JQK1VEcksrMmNjQzllQWNRVU1LY3JROFdLUzB1RHR4R0pya2s4ClVKalA3MEdUMTVLQUd1M1VlUDAvTGxoWGlhYlZEWHVnSTBkMzRVWGVRbTJKamtUR2NIOVZ4SjNrclliUkI2OUUKSWkwUVAzdzBwNUpYUzluYnlvbTgra0FNUlIvNmNTRklYK09JZU9MZFZyS25RVWMwMjdMUjBlVzRWQ2E4L2tFawpSVjVZRVB3K1llVjRHaGpLZTFIZlpJNlJyVW04b1p0WmVWZWc2YUV1RkMzZnV2c3RDWEhCNS9naHcvbEpBSlRBCjNJMTFZQXpJYnAwZlVnNUVjbm16dUZYQS90Y1Z5MnpyR1pwZTUzSXBPanZkTmlxQVJKVWRoZmVCdXU4R0pRM20KamQzMDRkdWRzUktMb1V2dUxNZTgzVTdVRVFtNzk1Vi8vbGh0ZjgwL3RQUkM1VmZvdjRkc1dYaUZJVHhhOHZLRQpwbjlPeE9GOTNscXFPcHc5TldnMXY4UlZTL2JTOUhVZWJBdWp2Mms1M2plR3NBTXE4Zk5LeG52aTZHSDdnOFI3ClRiK2hSTk52ZUVNazlUbE83NEk4SzNFdjBHQXlwM0M1N25QUlFaek1QWVlhTmthcmxNaTc1NHJaRjJkR0NudjcKSWZCVy9YZ1duanNVRllKT1lwalh6WTltS0pmR29vZ0t2THEzZThRQ1laQ0ppSVRsaklIclhJOUtaZFdUM1J4KwpZZkpZbWxsRkFBNVdoa0hNZ24rbnBJZzdkVkRGelFJREFRQUJBb0lDQVFDSkN6S3RPQndrVzFwcmNNc0ZnUmdBCkE0YmM1bElBSnp4MFZSNEtqK3phNUNSc205TUpSc1JQL2NSS1pKVzB3U0ltak1IUHRSZE5yMUg5eENuQlFLeGgKY2FjZjYzNnJVUHVIUERQQTlxcHoxZC9xQkJWeCtieTNuZWpVVG1KaXNHeHpMRVBnV3d6cTJOMWExY1piUStYTgp3bTZUb1ZKa0x0M09QU0huOVRvdGlwQUpwbytkYkVRTGJ4QWdNV2RCVmJmdTFRZXhVQXllVEE3a01tc21NcUM0CkZmTVJNMENzYjhoVUlNL2hPMzlVcXR0R1FuUk5UUnkwQXRkRFFIeGF1c3pDaVJkVXdGR3p1WGpJcTg4aU1JT1MKRVgvTHNTRDBSK09scnpzYmVFTXhvc3pWUXNndytLZ0NDb0VSUjBhNlA3d3U0TE1oaUp4TlF5WnF6T1pPY2RwYgp0cFMyQm9QcVVRK1kxMXBxL0hwVGlldHR5Z3BVRFFaT0wxdCtYMStxNXBSUkJlVmh0ck1jNWJORlkxVC8wT3ZuClA0M2Z2aUdmRWNNWWJmeXJQTnNoQVRvNW13bkRWa1FpRTFrWWZ5UGRYNWcrRFZteitHSEFVclNGeVJVcVo3NlYKS052ZmJiNDB5RnJTY2ZaQWdlTGhwZjBYa1dVdjNsUGtNUDZySDczTDgyeGJ3bmRtZVRXU0tiWmdmTk84M3gvZwpBRU5icDk4MnFqN3RqTGdYZSt5aUx0OWJ2MzRoaGhpWmxvNUswc3pkRDRvdGl1ZDFSOFV5Q2dEZGdhTTZEYUlKCjRCaTRYUXdxTVVVVERFTllJekRKTXluRVgrbmYxWDh6bTRINWtHU0svenM3dllHRkpnOHJVa0Q3Yk1ybXpoSUkKQ3RGdXRzKzFpa1Qrc2p4cmhJRmlBUUtDQVFFQTRpMmFwM0JkcnQ3Y0lCbGdhOXcvdXZDNG8xUG5OTWV0NVlENQpuSk9lYmxjRUhPNWEycGRKY1UxNG9IUFplcHlhL1lGVWdYOEdNeEpydEtlSUl1dGtEL3VxcklBRlhYY1Q1TjFaCkhBY2h4S0x2Ri84NTE5QmVDbzFiN084QWlzRkRwOHJJcitnVnBQNnVOd3d6UUE3VWlQT3J1MEZIRVhGcGJyeFcKZlMrenNHZ2VXVC9wVkJNVVdBcUpWeVB0VzNoTWc1T3hJOWVNblEvL2ZJTVY1cmd3dWMyaWVLUTRpSTZsU2ZzSApnMW5paFhtTUlKUWJyMlJwUVBIQS9Vei9lZ1RPZmZ4R0RFVjdZSkVHbXZHL0tySzYyTGVxYzJMZU1oSXRxeW90CnhOcU9FMnFHaU4zZEUySlZZc3RQMjJDQW1wc3F0YVZMMlFxK3h5QVA2Q3JnbjdCZlRRS0NBUUVBek1acTlyWU4KT3Bxa1BQZ1lFeS9qcy9JNUJqT1ZOQk1TUUpBNUVkeVhOTVFWOXVYVVpJQ3A2V01MU2pCVzd4MURjV1R4Ujd6MApmOVlYd0s1aTFZTnhqRGM1dGhqZ0dpdkNlM203OGpwV1dQc09yaC9GSWJjN2k1cW9seG5WMzF4YlBZTmxGcyt0Cnp3ZERHVmxYMDRaVGVOZXdFeW5Kb1ZSMEs1VURWUVFqTXVCRk8xMzBHWUkySVd6bXVHdkVPOHlraFNyVEdCZkYKZXhiWUFqQlVSd3V4aHBOREhRckVEZkRvMGpoeTBsSS9IT0FzNDVMb2RadDFlWG5FNG4rQTZISTNnVHlrU2FTLwpseHVQbmVBckJqUG04WEJybjNIK3dyUlRobjF2VW41SG9lYTVVL0p1TjJRRTU2YURaeVhEbC9aaU5xN2JiYmVLCkJZNkJKZEl2RUZQQWdRS0NBUUJmNTNCMVlTc0lORTFvZXZvc29pYVAwUFNwcExFYjZ6TnNabVR4SkpNQVBIdHMKL1JDZk1aa2RwdmpvS0ZkbUt6TjVITGJGZGlRZDBjakR3R24wVEpXUVJXbFlYYXhvdGs1RU5DdE52Q1J3YVpveQpOYkhFTmdFNlBqaGxYZTUvNTNVVmwrSEMzUWtZZmpsRzlEQmpFQ2JFcjNYNUg3UFB6S1FsSlUwVEpmL3VaQ2ZDCk5seHNudTU0YW5kVDhOTDdmeVlLZ0x5Uzh4b1hteW45Rk9SYmdXeC96SmNBeXJtQ0JlSkdYV0FSTFRMazMrWXcKQmowN0FMdTBvdzN2R2hBV0lDV2l2QzdEazA2K1lxQkhZUXhyUVlBQzF0WTZ1UWg0ZU1iT2xrTHovcXhSeFZDbwpobEx3bmppUWZKOHU2VnQrc3g3SUNRQUJWeElRQXlOYmtaclBlNHpkQW9JQkFRQzVNTFJwZkFrSXQvUFNZN2c2CkdmUSt0OCtVYVRBRlVUNFBmNTd0SldibHhIUHN2cnRQVFFEYzNjTEhER0tDaXgrRVBIcnNtdGt2aDJvaHlsUDkKcm9zUStKekxyMEYweWFCdjFJOEJxSHFRckRRQml4L1h0d00xNU4rVkR6dFpiZ2ZoNEtPYWRxVkVkdGZhNCs3RwprRk9MRk56YTU4NitoVWN1WnV3RmhlRmpVR21zSC9MeTRzeWJmQVpJUU1YT0l1dWl0ekVETi9SVHRqd1I5cTB4Ck4wVU1aTCtzVXlFdFRuTHdNemE4T0w5MUdOUGYxK3M4K1NQTGdURnFlVThXYUwwRHR0a0k5T0tFQU52b05tUVMKanZ2TDNCU290UXBtQVhrTVJ3SlhRM2I2MTFOQnRSeXlJVlZDUGxmVi85UWM2U2kzTlhtaWh2dGV2UnJWSG5tTAp0WUtCQW9JQkFHc1dkWW9vRU1jOGlmNlR3UUd2cmw4RE9OM2RXaU5nZm5YMENyRml6VWtWRmhtcHJQMDdGOVYzCmM2a2pzK0VWRXBzYnMrR2VpVitkWUhVWW81aHZQTGUzWmNZSXZQaFZwVDNFYmxTVFYrZzUzY0VzOWh4amlVRlAKUnhwazk1TVBsbGZBZHhkSnIyM1hrRWY4MTlOS2dBdGRUOEpWMVg0eGdyR2svcGQ5S1dQMU1VeHpadWlBOVZkWQpxaFF1ay9kcTRJTjRKUDY5TVZNTi9tOCtmUUwxWVFEbk1wSHY3YWI5VTR0Y2FWcXFLZmtaaGp0aStpdzFhVTZaCjJ5RGc0V3NPSVBocTJTdGQ1eDMyTWhCT1NFRVY0d2lFK3E2MnpvQmxBMzBvS1lqZkczT05zcnRDOGRWYm0rblEKWXVld1YzWnhob3BSUTN6NTkyREFrSlpWSFg4Tml6QT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= + user + + + 5b3e06407f794 + + LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBd1RVNWJWQWJuZnl2L2FUTiswakFaV0NlRFVlVFAvQUQxYUVwbllLTGhCRmszRnAwCjA3N3JqZzVZUkd1K1ZrUGdSYjVJdm0vVDJodVBWSzNaZTFmWEF4NUgzSlJmaVdHRHh3b2FXazNXVkhKL0kxcUsKK2IrNXlnRWVJZSsrbjA1Y2hKUGsxdjBQWGtHZWpLZnVJNmR3MDZBblV3R0Z1NE1IN0E5ZEhhdGtVV2FCaVl1cApmb2RmaFZqNGFuQmE4R0VJbFhxeWk2ejNEaTRMTnd3enljQ2lsZGhIZVFvNUNUbGM5Z2lVU3lYSE1ndUtudEM1CjZvWkZ3ayttc0ZHNFRJZGM2d2pIQk9TRnlnWVJubDRuZXJVYzlabXNEWG52Mmo2ZUV6TUpaajJLS1lpU1J3Wm4KTDg3R3RyTFg0V1J5ZnFObEo0SVM2T1Fzd21xVlpkMEpNZnNmN1FJREFRQUJBb0lCQVFDdHVKeWxKR1ZnbmFiawppcjNHMXJoZnJ3c041N0NIeWRpNHlrc3YzQVIwUUd1UEVpcC9oZWdvOTg3MzNtVHJEZWJtN3R4Ymx4Tkd4b2NPCjNhNXlFQjQ5S0luMjFOWStJWmNxYlhRYWhHaFYwQWx2RVdkcWZyQ2Y2SGRlamtHNDNlMmtLNUtVbUQrc1FaWTgKNUhYa1N4YlF3ZXo1M3FHUFk1Ykk4MXVIWk9jenBFYUdhV0xtcS9lQmZiKzl4Ri8zdmdDd1VYaElKdm95VEUwVwoySnhibEd2VmdQTzd4Z2VSS1FNdVJVTnJ2VWt0OC9BRVhOOWJGa2pldkhZYktHcXBWSzVZTjc1Z2tLaGJHVStICm1YRm5CNU1XYStxMmo1RS9FS1hSNVoydmd0ZEhVKzc4T1JlNlpid2UxRGdicXBaQUIwWXF3VE1Hb2w2WkpVMDkKcERyRjVhOUJBb0dCQU9NNHZjK0hmSndqOGNINDV2WnRZNXF2dFJUbjVxVnE5WHdNYXBENVdyOVRGdlJ3d0dJMApXSUZTSUJHbEpoMWNOVElsckpVeG52dFNNM2tWbWxVRk1iaEJyV0pnWDYrVHFKUjUzYTFySUdzVlpyUmNrZUdnClhXTzBLdHRUWFJvL1Vmcmlna2FsWHc3d2xhU0MvVzVrYVlKWjBkMFkvcTRGZTBDckhkQkxVMXhSQW9HQkFObXQKcGRSd1VMeXMxbWF5eWRlaS9IMHhVTGNXRjB2VkV4clhZdGQ5RXZ5bEtoMFRucHJWeS8yVHdRVi9BNEVTTnZTZwpJZDBuUzVGRGo4UExlYVJwRGRDajBtaVpXWElXeUh6V3dFR2Q3WjFaUklTbWZlZ0hHbmhEVHdlU3o3bXZpckZFClYycEoyTWl2Ry9WY3V5emdQRCtaVFczY0FLSWR3ZzZHWDZsMmVBN2RBb0dCQUovay8vMFlGS0l6MFI1MHJ1TGUKbTJieEduWjVzaDdabzZJRmdzQStHSlBtUHBNSS9QaWVhV0duanhXYnA3U2xmSEdyZlVVSHhCNksrOW5MVCsxZwpXRnFYTFJHN1M5cGNDQmRqb3BFMGYzMmJjOGljRTdRNGl6OXNPM1JYdDM2TzdIdW1CWkw5TUdWcys0RG5CTHc0ClFOOFBvZFQ2ajgyWjRkL2lDbnJYWnZQaEFvR0JBTkJyQi9VUW1PMGQyNmEzRnJVbHMvUzJiQjd3d3R0enB2Z3oKTThzNVVSMmZrbVFHcmZ4NEtmbWdKOWI0VnNXVlNCTU80MzJaS3l4cDhOTzZGYjBLYlJUUVZoeWFmMTdTVzZIVQpDSDZMRk1Cc2dVTTFHaVkzN3VzcEh4a1VRMW41cnFTdDE3akgvZzJnUS9lNGt1cVR4SHZzYjR0NWN3M0Z5bEVYCjdhNFc1VHJ0QW9HQUR5N0lLYXNQMXdnemUvUThaY3hMWVlmU1d5eFpMMlpXOHlKYkhzVlB1ZzBSNjdvK0xRWVcKWGlROUNMNlc2R2VVdTV3VDJmQ0UrS2Frd1NDQjg1SnRlK1lBQ0dnclNLOTNiZEJBSEk5bDlyeFhSbVdBUTVYcwpTd0xYaG1QS2ZTWnNrRzhmd0N4bzV2aFJYSjcxL2xXV2pkL09pdVplajB3ZVdRc3pvZzNwK1NrPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= + + + 5b5ef3932235a + + server + 53bbbfe6c587c + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUc3akNDQk5hZ0F3SUJBZ0lCQWpBTkJna3Foa2lHOXcwQkFRc0ZBREI4TVFzd0NRWURWUVFHRXdKRVJURVAKTUEwR0ExVUVDQk1HUW1WeWJHbHVNUTh3RFFZRFZRUUhFd1pDWlhKc2FXNHhFVEFQQmdOVkJBb1RDRVZuYjI1bApkR2w0TVNJd0lBWUpLb1pJaHZjTkFRa0JGaE50YjI1cGRHOXlRR1ZuYjI1bGRHbDRMbVJsTVJRd0VnWURWUVFECkV3dHBiblJsY201aGJDMWpZVEFlRncweE9EQTNNekF4TVRFMk16WmFGdzB5T0RBM01qY3hNVEUyTXpaYU1JR0cKTVFzd0NRWURWUVFHRXdKRVJURVBNQTBHQTFVRUNCTUdRbVZ5YkdsdU1ROHdEUVlEVlFRSEV3WkNaWEpzYVc0eApFVEFQQmdOVkJBb1RDRVZuYjI1bGRHbDRNU0l3SUFZSktvWklodmNOQVFrQkZoTnRiMjVwZEc5eVFHVm5iMjVsCmRHbDRMbVJsTVI0d0hBWURWUVFERXhWbmR5MXVkV1V3TVM1bFoyOXVaWFJwZUM1c1lXNHdnZ0lpTUEwR0NTcUcKU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLQW9JQ0FRRGlicVdkZnY0NWxnRStMV0VvbnZRRTFhZ0VtUGNneFpvOAp3c1paaFVRaktGd1d0RTUvWWo1U05TSTdJQ1djU21xRjE5Sm1CaFF1S2I1THMyT2VuN3NheFpWU3RhL2hRekg3CkhPeVJocGZQay9qZGI4bFh1ekNWazBMeUgwS2VRRFV1MU9FU09Md24yMXNXUks1bVF2Umh2RnZGemRjQ203NDQKelFLL2ZRZjVVeTZxM3dOZEhEMHJ3WXBnRFpxOWh4cEdGd05sTWsraTdGZHl1ZHN6UzJJNWovbDBSL25mTm91LwpBMFlwQmgwMkxlTUQvbUxuVHhMd0NBN0w0OWRoREgwQk9Iek9MditIUUtOdUowbDJQLzdmdmZkVUhJK05OWm5TClBKTEVxWkp4NmhoNUE3UFlsWkh0WXlQYXpwSWRwOUVvUFdKYW8rK0cvQjh2YURqdmRrVEx1b3lnUHJrcWlteDQKMlpvTGlpRngxVVc1OTNvVTZlZ0NiSUFlQitSbEZHbGUrakNJMGN0QWd1QkpiTkl5ZVIvRkJhQUdRZm1nTmhFSQpCS2FabmtwRnY4Sk1PS1FER0c3dlhsd2FrTTROQkRGOUhuN05KQkpMYXl1bm93cDAwdWNaSnNndE9zcXJHREFECkpLTExjZktRNTdpSVBPWFdWTXBQeDg0MW1LT01pdmFhM1J2MVRDekNqRFRyZ3ZzRC8xTEtXTi9vNHlSRG9saHcKYmlyNHNGRjNuT2twTkRXemk4bzRkcm1oejA0SGhaQU4xbkRvWDBzdXRYVndCa3RVUHRKSk9GNU5YN2RnN2FsYwpLSlFDbnNqSXl6WnNySjJMQm1QS1pjTkpLRm5PQ0NCd2tnUmhzazQzSkhkaDhKMkgySnl4RTA1bVBRZEg4NjhDCnU2ckd2dDFvOFFJREFRQUJvNElCYmpDQ0FXb3dDUVlEVlIwVEJBSXdBREFSQmdsZ2hrZ0JodmhDQVFFRUJBTUMKQmtBd0N3WURWUjBQQkFRREFnV2dNRE1HQ1dDR1NBR0crRUlCRFFRbUZpUlBjR1Z1VTFOTUlFZGxibVZ5WVhSbApaQ0JUWlhKMlpYSWdRMlZ5ZEdsbWFXTmhkR1V3SFFZRFZSME9CQllFRktsaTRORDI0UnU1OU44Y3ZJTUlyR3FUCmttcm5NSUduQmdOVkhTTUVnWjh3Z1p5QUZNNlBoS255bE5ZRXZOM3RYOU0rRnhWVDFqYnZvWUdBcEg0d2ZERUwKTUFrR0ExVUVCaE1DUkVVeER6QU5CZ05WQkFnVEJrSmxjbXhwYmpFUE1BMEdBMVVFQnhNR1FtVnliR2x1TVJFdwpEd1lEVlFRS0V3aEZaMjl1WlhScGVERWlNQ0FHQ1NxR1NJYjNEUUVKQVJZVGJXOXVhWFJ2Y2tCbFoyOXVaWFJwCmVDNWtaVEVVTUJJR0ExVUVBeE1MYVc1MFpYSnVZV3d0WTJHQ0FRQXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUgKQXdFR0NDc0dBUVVGQ0FJQ01DQUdBMVVkRVFRWk1CZUNGV2QzTFc1MVpUQXhMbVZuYjI1bGRHbDRMbXhoYmpBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFDYjdhdEg3U1E1RTBtdVZxVmwyTlZUZW9FTUFzWVV4SVpuWGVNV2pVCk9wYUd2RkppTnpEeVpyTy90L1dNMTZYR0VHZzFSZHVSNk1LQXV2c1lGa1ZzZHBhUTQ3Y2QxNGJMejUwaEJnak4KUW4yVS8zazlLM3dRczUxYTlkV29mVFpON3VFRmdleEI4MWJ6bDZsTFc1cGJ6eHd0Z0ZyMWc2QS9HK2tNZHN1YQpVQjdmWTZ2UENWUUxHQ0pzdEw5R3p0eXF1dDRQaDZId2s5WVowcE9BSjRtVzc4akdjOHo0T3g0Ny8ybUN2eHA3Ci95VUNhT0xQcWhWUE9LMWp6Sy85bzBGVlkybDEvVWVaTHZaZGZrbVNFZjFOR3YvK2ZHQ2lBOWVtVGNnTXZlQ28KeDRrNHo1VjVzRkZnUEpPWU05MEc2VktYWk9jdk8vb2l5NjRBNFJLdE4ya0FCUGlnWU4xL1Z5b2w0MFBUb3dQeQp5eWdLZ0FNOXBRVnhZT2FaUVFtenZIWUtjZ0pzUHFBaGg4MVg2SGpYYXpNS2NEMFI1Mys5MVRXYjhSdGtmYktyClMrUWxzRHRiZldDbDNPa1BrMlNnODV3eXU5cGl1OXhRTVBZT2RTVmJ3Zm9OWlFpdDE5Mis1YlhTdTE1V1dwT0UKNEVBMWpXc0ZxWHdKQ3RUdzJPRS9DcUNjMjJpdUlUREk1cmtJQjlxdVFuMTFVSEsxa0ZXQit3endyUTZXSDAybgpEd1V1Um9ELzFNb0RqR3JoWTBaMHE0UW9uWStMSE45cDQxYTR0STVMM2EzNXMyNGFncUNCRmFURHJlanJXRkNnCnRMVmw2dVZKYk5NMS90QUFFS3RnVitsVHJLTnEzMW5wR1hoYVlFSzhieGluUWRsS2hhelhtTHdPR0RCU2NiM3EKK25ZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRGlicVdkZnY0NWxnRSsKTFdFb252UUUxYWdFbVBjZ3habzh3c1paaFVRaktGd1d0RTUvWWo1U05TSTdJQ1djU21xRjE5Sm1CaFF1S2I1TApzMk9lbjdzYXhaVlN0YS9oUXpIN0hPeVJocGZQay9qZGI4bFh1ekNWazBMeUgwS2VRRFV1MU9FU09Md24yMXNXClJLNW1RdlJodkZ2RnpkY0NtNzQ0elFLL2ZRZjVVeTZxM3dOZEhEMHJ3WXBnRFpxOWh4cEdGd05sTWsraTdGZHkKdWRzelMySTVqL2wwUi9uZk5vdS9BMFlwQmgwMkxlTUQvbUxuVHhMd0NBN0w0OWRoREgwQk9Iek9MditIUUtOdQpKMGwyUC83ZnZmZFVISStOTlpuU1BKTEVxWkp4NmhoNUE3UFlsWkh0WXlQYXpwSWRwOUVvUFdKYW8rK0cvQjh2CmFEanZka1RMdW95Z1Bya3FpbXg0MlpvTGlpRngxVVc1OTNvVTZlZ0NiSUFlQitSbEZHbGUrakNJMGN0QWd1QkoKYk5JeWVSL0ZCYUFHUWZtZ05oRUlCS2FabmtwRnY4Sk1PS1FER0c3dlhsd2FrTTROQkRGOUhuN05KQkpMYXl1bgpvd3AwMHVjWkpzZ3RPc3FyR0RBREpLTExjZktRNTdpSVBPWFdWTXBQeDg0MW1LT01pdmFhM1J2MVRDekNqRFRyCmd2c0QvMUxLV04vbzR5UkRvbGh3YmlyNHNGRjNuT2twTkRXemk4bzRkcm1oejA0SGhaQU4xbkRvWDBzdXRYVncKQmt0VVB0SkpPRjVOWDdkZzdhbGNLSlFDbnNqSXl6WnNySjJMQm1QS1pjTkpLRm5PQ0NCd2tnUmhzazQzSkhkaAo4SjJIMkp5eEUwNW1QUWRIODY4Q3U2ckd2dDFvOFFJREFRQUJBb0lDQVFEYW5lL0MxempIQ3FCYWt0L0tvMldBClFYUytNNTN1Z3pwK1RhUEtETlFUaWNVWG1yQnJac1E3Qk5mdTlBTzhHVkV0dG9tS1BYWkFkOGNtT2FZR0lidzUKaGVpOCtYUTlibTRVUUFIY0kzSHhWYkdpd21wSURSQkVhZkRwNmVxYzllc2pNeCszUXhYTytZZkJRVUNNdFRwVQpIdE1RY01PVjNoN1Rvb1J6czFqK2pTUnlqMjBrK2IzSndFeEVudjMyM1RrdDBNeFRhVGJnVzRXMjIrRGFibjhBCmlwUlRnNmFwcjNWUFQrN3VidHZIVXBoclk3SEVHR0YxWktJOGt0ZUErTmk4VS9pVDdXYURCSktHS09KUmpFb2QKWmNFazhZcGIwUk9abXlndFBuZUpDbmJrYUFHOUsvTy9tY2VsVzJwUnZaUkFZTHZVUFpGbTU0ZUljdno5bmxlZAo5bTR0NmEranZVYVRhc1VyblNxcU5BYWhPbEJZZVFGaEdRYUwvYjVya2xwRlZSaTlHRWFoenRaZ0d0Y0R4Kzc2CndYMFBiZHZ6VzBkZXpMTm9XRnBYZ1orZU8rbVN1QytiK1Nvb0VGcjhXeE9pNFFMaUhJR21VN1RjaWV4UFowTEcKSlJsU2Juc2pJNUorTnlEU1B1cXdqQTR2NDRyN0dNclNLMGRtL0lqVUxLT3M5NWJxcDh2dzErYXJiWUtZNWJ2TwpaZDdYZFBQclQzbC9obUFyWVpsaVMvbHYxRkp2TVFvR1dwd0hqajduTFpibG1sSnNzdmJjemRVUzE2d0Nsd0dxCk44U1R4TEV4TFhQbWc4UTY1dlZWbXpubDZUbDhSbW5YQWhGQ2p2RVhwcnM2QUxzOE5rUnV4cy9NOEg0cTlibUYKaFNFbjdXUGRtV1BnTDN6L3YwLzkwUUtDQVFFQStNNElXSkxzS0poMHMvTUZ0T3YzV2gvNmRCWDBIZkpGT2pzUApYNHQwdVFMVFRaVzJ3WklJTDluSGgwRTZEZmgyWGtJU05CWkkzSGplbFZvdjJWcG5RZ1loZmtCcW84Q2tPVGYzCkMrRXJmVnM4dkJnMldBNnl1VEZkWU5LbUFrZ3NtRlJFRFFtb1VPTXVENFZSTHd6S0hPSEhXbUZhZVdJb3hhdnYKWmY3S3NlN21jWGEzQkVFa1JHcW1QVHJ4WHlsWTVqVTdKbTlGS2ZlWlQydHJTUjhtdXNtQTdZYVNHYUljT1k0Uwo4VHlKaUVXR1pkRS82dEdBNGd1Q1ZpNm1Ldk1iSGx3enYzTmordnRyUUpqa1FnRlZBTEw0bEkzblpnNnE1VTFFCm1pZHVFeVhCMndmSmg0Yzh1cFBQMEhISWszZ2F2QTNOenN0MnRDWk1XOW04UmRUYkRRS0NBUUVBNlByNzdiL1EKU3Bad25FSDEzTkp3WkZtUTZ1bmVOSGZvd3A5WEJTcE1HZXBWOXQ2cENOZEtVb1BRclNKeG43R1ZPQ0s5SnhOcgp4c1d5aHdqWDhrT0NWK3NLNEl6VC9iMTZGZkxUeFJCTnF1Q1JqSnFRdXd2NjZBWnphdk81S2RLVVg3LzJWaWxTCmNDVjBnNWs3NkhRSXdLZ1d6SlhwSWNDR2ovaG9LS2F3TWFSN2VuZEEyZWhqR2tuakRoeWwyQkdCNm04N1g5dVIKNlM5WDl0UkswbUV5QjBEYXF2eS9jeTN0TnptclZUTTFXVHQ3V2FDR0ZIeFZnYTR0emFLVFl4L2pZYVQvMGhVQwpKdi8xVVVaVSt2cHZneW5IOTdhTFBBRG1OcFE0c0hFdUQzZkFtZ0ZrbXVCbDRNWDhFWkd0RG1KNnVyeVJUTFRwCngvUVpQSnZtNmFkOGRRS0NBUUJjR2NpMUlRNFNxUHpxY0JlNHRYREhCL2RxYVlZSVg5cUloN3hWSGdhRFJpeDYKRitXakdpKzFwdVJaaVNlNGJEVkZCeWc5NTlIbzYwVlovQnlpVlBqTVZBQ3AvNlo2SDZHckhMQnkwVk9MLys0bgpvcjdiTWZXdTREczAwRVZycXRQM1A1cEJTVVhwUzIrTmgwaGFKbDNhK3lrVXA5MForZUFsN0ZPZWFnY1dmdDBICk8yN2NRRkR3a3BvZktHYVpWM0QxSnRkU2p2WUhad1IxaGNvZE0wN2U3aUN2ekpUZ3NFWEtlSEZDbzZvMXE2Ym8Kb2VFTFI2cHlBdGlvbG5Ra2lnR0w1NDJ3WFVLeGNjaHVEU3JSMURSbklka3JCS3lYOXU0RUcrbzlOa05sQ3lFTAp0NEkralMxSjA5V2x6N2p6L2czSGQwU3NQRjBncXR5eFU1U0NOUjB4QW9JQkFBQzJBMTdPWHd4Yk9TekE1c2N0CnZUb1JLK2dMbnFuNlU3T0VXUGVqRVdoaTFyQlNMYUhoUmxES0pqRGhFZ2V5dXduWTBVcjFQRGIzRTN4bUFvS3kKd2dzU3BJM2E0Q3ErRVVsUDNHV1ZqeWNlV0ZOZGhXT012YzlIZGNLMXk3TGMrYWJ4SndkTVNQd2VvU1JscTFFaQpTWVNNL3NUUkVFMFNFVmNQSXdJOHYvem15NW1zRTM2V3Z2YXRrd3ZQK3BHV1BCZERENk5UUURhOTlqN0NseGZkClJCSFJtTms4dkRqVnd3dVFHWDNCRWtDYmRkem9LSUNYZ0l0TXhNY0QzLzlGY2FReXBMVTNhekpEUmJSaHlwQ1oKZ3cyYmF3ak9mYzVKRW1ySU9RUVExRnNudW1hOTZsaXVwcUR3K2J2ei9kczFZYnFBS05GYkcvdUlPeXQ4TGxBNApPcUVDZ2dFQUM4azlteG4vVE9RNUxxVVFhUjJDOTkrZXczZ29YbktwblhxMHRuY2t3SDVtN0djZm9jdzJWWXNSCkN3MlB5NVphVzBqUGNLbEpjYk42U0hWSmRQNW1EWTdPd2hTM2VuZFU0VWhMM2g0Smo1NzAvMW1YTnl3anJMVngKSzY2Sk9JQi81dnBiNTd4QUtYbUFwdG8veUQvLzJTVGpzUnBCNDVWT3h1Q1ZrbmN3aEtRampCSXNaS0NLVnEzZQpqbVI3UThBZWZyQXVtWkFINmh6RE1CWFVNcjdyS3A5MmZ6RjhOajJqSHFncE56bkFTVzNCcWVvY0xIZ0hzL2NLCnJWRlB0TW5jS0ttZFJvV3B4bnpZdGlpYnQ5bHlzc0RYSjhkaUxMY2tzWXJraXlqa3ArVkd2aW4yRHlkQXl6Y2UKR3JaYXVUUWNOMTg5dUkyQXh4VTRIRHBiR2Q3SlpRPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= + + + 664ca810f149a + + server + 664ca7c2efc5b + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZ1akNDQTZLZ0F3SUJBZ0lJZnRVUVc1RmVWc2N3RFFZSktvWklodmNOQVFFTEJRQXdIREVhTUJnR0ExVUUKQXhNUmIzQmxiblp3YmlCemFYUmxNbk5wZEdVd0hoY05NalF3TlRJeE1UTTFOak16V2hjTk16UXdOVEU1TVRNMQpOak16V2pBak1TRXdId1lEVlFRREV4aFRaWEoyWlhJZ2IzQmxiblp3YmlCemFYUmxNbk5wZEdVd2dnSWlNQTBHCkNTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFEZnNlWmRlckp6U2hZR2lSTlVqSHJ1cWN0OXBGYVYKclRZd3dYTmpaQlFaYzlNSE5Ea2gvdEwyKzdMYTQ5YTYrSk40c0VCUzBGTmd3Yy9HdVRoU1ZMUVRqYWt0Q28xNApQL1hMZjV4Z1l2Y09uVGF2WDZrOXg3Z3hkNWROaEMzSkJOV25BcjBJWFNLSzhoWVZMR256Q1BOREFIck1Da08rClBYRE9YTEsxcVdLbk5rUmZWcU1LbFpndzNKZ0tCQVRVNW4rOGhWWGVnbm9sTUpXTEkyUUNENk94OTdmYXBrOEgKY3h2N1BaUk9WbjRmSzBTRXVvK2tBWGx1bTBVd3RONUNUSzdWcGxrY21ZcDZJcE1JYWl6aEQ1c2d1QWhTUVZnQQpyekJUenVtZnJCNFNDai9zODlkckZMSTNjRUVEV08zTmxKYUM4ejZZYlpXT1NqM3JmSEZSSVNRaExkZG81bytwCjVCQStKc2M4ZnhvSUV5S0NMMWd1WmMxeGN2ODUyNUZzd2tla0tyazlEOFBnQjdHa21mNTNJZG0weVowVzduUWsKMFpic2FySWcvVlB5dkszbCtzZytDWmhZUG41UVdDUXlwdnNZS2FMNW1ETTc0ckFpL1ZHTUhNWkp2TkdqcVBndgoyblluMEU0TmovS2htUUxDSzhPaGhqcUN0QzJhaEVFQjJ1eHB4SmNVQzc4RkFVMk01TlFCcFVwNkFvSWE2cStkCkg1YTAzWlVvajgrQ1VyemsydU5rb0NBSWErTmZwQkx5VjVxbmVCc2ZHdzBzL2RpbnZ6MGhrVTdmcUVpY2twSWEKbktJeS9jMVRTeC9zcWQ3Q3dmZ1BjMitYeG4vSXkzNS84Y1dOWXNubjFNeTVvSmh0aDluSTgwZGxmZE4wS0VKagpqSUVPZjJRR3JwdEZhUUlEQVFBQm80SDRNSUgxTUFrR0ExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFECkFnWkFNQXNHQTFVZER3UUVBd0lGb0RBekJnbGdoa2dCaHZoQ0FRMEVKaFlrVDNCbGJsTlRUQ0JIWlc1bGNtRjAKWldRZ1UyVnlkbVZ5SUVObGNuUnBabWxqWVhSbE1CMEdBMVVkRGdRV0JCUnlKRytBWXVub0JqM2pTVzVDWHJpbwppZ29aa1RCTEJnTlZIU01FUkRCQ2dCVEd4TUJBdy9HYTlidVhwSmFqM3RLbEtQQ3dBNkVncEI0d0hERWFNQmdHCkExVUVBeE1SYjNCbGJuWndiaUJ6YVhSbE1uTnBkR1dDQ0c1eDVEdUJWOFN4TUNjR0ExVWRKUVFnTUI0R0NDc0cKQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUlBZ0l3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUk4ago3ekhwaURVaXpmclhrNUFwM3FrcjZ2SjhTM0ZXamJPaWhIbUhRSldTbHFWTEtWZ3ZvMDk5bStUcGhSamVLeGNOCjhabEVidUs5d1c4dFM1Uy9MY0RwU0t3SzUwRGJ2WlRBWnM0S0diY1RScFBDTGYxdUFKL1MraVc5TkVtNFErN1UKaTBYKzlzRThMME1LT1ZwVXEwc2pDdXJ2NGhVaVBZTUdiUmEwMFphMmNZQUMwZXhFaExOaVM3TWFZU1dILzhQMgpTbzhhYmpibmg3TCtISEpUNGdUcitSQk11VkZ4UzVVMDZ5Q2lFNFZDbWxqWW81ejNTQ2ZpQld0cFZ5YnVodzdnCkZpTVV0Sk1uVGVaaGVhUVdROVU1QVc3SG4yUG5GcDFqZk1iR3RTVTc2Wng3UU1EWjc2SHgrVW5WSENFdkZTS2EKM2JFekNkaTJDRDh0azBwcmNjclpzakE0RFpqNUh2TWtyUUlJUUpFNUcyM2hEMUdWK1UrbmxVRnplV2hWTzF4UApOd2JXRHM0Um9ZOUNsMVBBMXFZRWlHelZFMjFxa21ZeFhSZkNjMVNCQ2kxVlFVS3NUK3cyNlk1eVI0QWxJR1NHClovNHVhcmpScWJGWDdJOG40ZzlZeFJXSnNQV3ZERElESVBLcExEcGxZMVd4VlU4MEo5RjhJczZsc0lHbFRSMTMKZEdWNXNTbWtsWmNpdS9rYUxJNlVkTThndmNvTXpJdTVaNHYzS2dxUkNsOGh1Um54Nm1FY0dpNzRZRHA1UkR1RgpXYkpOZlRJZUpUZzJqQVhURjlpRElDZThxdVZIR2xrNDVUS1JBYnk2N01ONUtRM3FJLzBNdzNPQ3oxenp1Mi9WCkhPQzlSbyszWmNlckhOVW1hdDMzb1NvOWprRFJ4c0dldlFhRlRURm8KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRGZzZVpkZXJKelNoWUcKaVJOVWpIcnVxY3Q5cEZhVnJUWXd3WE5qWkJRWmM5TUhORGtoL3RMMis3TGE0OWE2K0pONHNFQlMwRk5nd2MvRwp1VGhTVkxRVGpha3RDbzE0UC9YTGY1eGdZdmNPblRhdlg2azl4N2d4ZDVkTmhDM0pCTlduQXIwSVhTS0s4aFlWCkxHbnpDUE5EQUhyTUNrTytQWERPWExLMXFXS25Oa1JmVnFNS2xaZ3czSmdLQkFUVTVuKzhoVlhlZ25vbE1KV0wKSTJRQ0Q2T3g5N2ZhcGs4SGN4djdQWlJPVm40ZkswU0V1bytrQVhsdW0wVXd0TjVDVEs3VnBsa2NtWXA2SXBNSQphaXpoRDVzZ3VBaFNRVmdBcnpCVHp1bWZyQjRTQ2ovczg5ZHJGTEkzY0VFRFdPM05sSmFDOHo2WWJaV09TajNyCmZIRlJJU1FoTGRkbzVvK3A1QkErSnNjOGZ4b0lFeUtDTDFndVpjMXhjdjg1MjVGc3drZWtLcms5RDhQZ0I3R2sKbWY1M0lkbTB5WjBXN25RazBaYnNhcklnL1ZQeXZLM2wrc2crQ1poWVBuNVFXQ1F5cHZzWUthTDVtRE03NHJBaQovVkdNSE1aSnZOR2pxUGd2Mm5ZbjBFNE5qL0tobVFMQ0s4T2hoanFDdEMyYWhFRUIydXhweEpjVUM3OEZBVTJNCjVOUUJwVXA2QW9JYTZxK2RINWEwM1pVb2o4K0NVcnprMnVOa29DQUlhK05mcEJMeVY1cW5lQnNmR3cwcy9kaW4KdnowaGtVN2ZxRWlja3BJYW5LSXkvYzFUU3gvc3FkN0N3ZmdQYzIrWHhuL0l5MzUvOGNXTllzbm4xTXk1b0podApoOW5JODBkbGZkTjBLRUpqaklFT2YyUUdycHRGYVFJREFRQUJBb0lDQUJ2Wm51WVV4bmFrMnNybndrcTRuajRNClVQL1VwK3lFNXc0cEtadnVXL1BDeUR0WmdNTDNJazRhYm0xQzZFczVNMGdYZm55by8vWjREczJ0cGdIWEZwL28KRjAvYXBGd2NMM2FOYmR0UXV2UmNkYkJlS3ppY1B0WVd6dlU1VDRkN1ZQdlE4eGJCWExGNm5DMzQ3SHgwQ1BCVwp0Uk1sOUlMeERKUSt0WWU1UGVWMlU4c2dZdFpvbzB6ekMvRlVTSU0ycXVEZVkxOWJkSWhnalAvSWtWVVIzQ1ltClFxTkQ2U3N5NVVFUmpMODNsTVo5NlM4U3VKczVUVVJzYTYvNWxzSGZvUFZMMjRTY1o2R1c0Q0l3TU9QNDRNNFIKSjRVUktsc1VkS0o4akhqakVZL2FxNVNOVTh5NnhBanpybjV6a2hEU0x1NkJDUklxYzVBbWRXRFdDcGdvbFlJWgo1UFdpSkpKMHZ0cHk5WHdmbkZqeXhYNVdlQUxjQjhZZXRIakhMNW8zbnhKTy9CQmVack9RS0NFWmc4d3ZyZlozCjlHUlUxNkhhdVNwZWRvNHVyY2FXbzFZRmR1V2V5YUE2N0JETzNRM1FEOUwyZC9hNnlxU3F5YXFvZEdZckhYU2EKeVB1S2NkWEZ4UU9ENGRNVzBiSU0zSWNlVVVmTFhoRTdIcENOV0k5dTBKeHM4T3hIOFJSRlNpamJIWjhvMWd0bwpNWXNoazRpVkdycmNoa2JqYzdlRWFENXVaTUxvV3hVUFA1WktQMXU1eHkxWitKQnFGZC9yQ2g0YytBL3REVTJOCnNsMFIrVCt5SU16NmJveVFKY0dCZW5vbWJXdGtSekt6bTdUV0o1TDRFM2RYNjF5Q3laNHQ0c1JITzdGVDJCYXoKTG1Xam1mZE1ZVnVuN0c1dzVaSWhBb0lCQVFEMEdYMURnK1g4ODJIdU81eG1YVU5OdjNRNlUxcE1lS0FaSG1sOApvaHhxWVllSWxQZGFjL2l0eTFZZURlSFFYNlQ2VnExNTV4MU5GVTJ6eVJFMGErN1Yvcmo2cUFHL3E4M2QvdFJyCjl6VnY0K0V4Y3pCTVVydnkwYS9HN3NPVno5bG9hOUFZVS9MVXVkRDhqNS91Z1dkT01yZnJWVTVNYnlsYk1FMlkKcFltU0prVm5QWWVrQmNaU3M4d0k5VlJla0dQazFnUEcxYUoyTWlTc1VPcWloZUJUd2VUNkJZekNXNHd5VDdOZwpnRU9aRlc3dld6cVdiOFM1eC8vT0pMRkUvVHdTMERrRmQxa3hwbmEwMjZ5TEk0ZzB5ZVg2MThMSFFLQnYyTFNiCkhJYmpqNWFRNHpzTjZnQzFYRGRIMlhWaHZ2NWhlUEREZy9oTWpPaXlkNWVqRmU0SkFvSUJBUURxbWIrSlE5WkgKVG5VN0M3UUVTQ1ZsOHpnUVA4eVlXVCtxaEVzdDRVSEpSR0pPdWovSmpmcnMvYnRRdmwyQ3d4NGJnMEV5b2gxeApBNVo3ZlJXSTVSYkhueHhZdmp5eTNZLzJ6MTJGdjZwWXJWemFlQk5wWlp6N0NDa3I3YW9pM1dVSjlqMHc2YUlJCjRrSTFqbTd0blp5V2txZlVVdXBpdVM4S1hNWGlwbkE4a1ZpZE05dzBLY3U3ZEdxZ3dKVmt0d2NOYU9nTDRUakcKbmR2aFpiUzlseWxJNjBzb2hGbzN1a2lBTW4vaXBxNVpCb1ZTMnA2dk9JaGtnWEcySE9hd0c0dVhBcDlaWDNZYwpNRzRvYmtqYnNCVnVvMjRhRFVtOG0vNm9xbTRNRzdSdENpbk96T0FIOHdiT25YY1hHOTRwaWd4dnY4TU9xZEVMCjkrVlU4V2t6OEhSaEFvSUJBQXNjU2VaVHo1a1czdU5BRlZ0WGJXUFJqaEhGajN1aGxlL3V3WEJwMUk5SEJ5dEIKVkl6cWNHeEFzQmZJRy9vbkVGUlFzNjZ6eFZLbjRKU0pWMTRpZDRtSUFaVnZKajA2TGJHb0VyVWpXR3hTWEFLcgpNb3lXeTNVKzlCaEM3K1lXd3RlTTZMaml3VS9MY1dhOWh0TU5VczF0WTQrem4wKzlVNDJTQWtZcmFycWJRVmQwCnBvTGh2R2d4Uk4wM2hYS1VjZWVOa2podnF1aGtXZVQ1L2VRTjRlc09EVVVRRVpzYkhhT0FtektPUkFWb3cxYmoKdVNQMXpHZUVZZkZaSERSK3JraFE3L2QrdWpHWFdSbmNVZHMzYjlDdlMrZUNBSnlmSlc1UjE4Nmptc1FxMmZpWQpUeXpQOU41TVp6dSsreWZLMEx0UkRPeHBTbGo1cFBIU25iVlBuemtDZ2dFQVl1Q21UODVkcy9RbmlObG42QjRZClZSM3IxVDF1bUErVnUrTENaUFg1NmtCK1JyeE5Ra0FyTUZQSTdVRXUzSHdzWm1BdHpJOXpaVHlqNGl4WU5UaUoKSDEyNmJ0VFBkSHZadjZhcXZrS0lJNVA5L0w1N1FBTHA1UXdOZmt4UFZ4NkZCV3ZaWXBJMkR4UjkzMkRHOURObgoyamE1c2MyNHFCOXc2aWNyNkZsS0dOMFJ3a0FuWVh6ME4yL2J1U0V5Vmg2bVJFcWc4dERjUXlvcGtKaHpVeTB3CjQyRDRibjFLSVE3TW0rdXM1dlJscTNRS0lWK3ZYaDZ2cmR5NDlvNjcxQ0huOVovUFZiWGNiQWtsaExqbTBHRW8KeDFidWd1Qnk0YUhGOVlUUG1SN2NMdEVIeWZlanZQWDdPbjQzd1crbmRVNlA2MUdoZnI2b015a3FhV0RPZkd1dQpRUUtDQVFFQXBBbHl2YjBYZHZTVjVtblBKZ3lORkFISGdrTDI0KzZQcFJyTStWNHduNjZmT2VlUXp0MWQ0K0VHCkFVYlVEeTBNcEF1TS84ZVJoMjNtaVhkaGFPV1J2UjJ0ZlJHK2RvSy9vcWZSNmRkOTYrb01WcllmeW1weWcyYUEKMVVUdzNDRExKZ2trdTgxdVJDenhndzltQnNJNE9ZOG9YalJCUHM1UTN6a2E4WFordSs0VllmQnFPNm5OTVppUwo1YjN6YjNFb0N3YkxacldOcENRWm5sTGdOeVZ0SU5JVEFyZDBLRDh5YnVPQnA0UU5vVlU4QnM5NXZValoxYkx1Ckxwd3A5Q3BTU1ZTeXloREdzSVlvS1hkK1IrajJYQnNicDlaZ1VLc256NDN6d1I5Y3hOVkVnbi83K3hpbGhuNE8Kb1lXdDNmZlVueHBJY3Y1SkhCVVowek50TWp6cU5RPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= + + + 664ca862a1dc2 + + user + 664ca7c2efc5b + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZrVENDQTNtZ0F3SUJBZ0lJY2NrT01PWHRTTnd3RFFZSktvWklodmNOQVFFTEJRQXdIREVhTUJnR0ExVUUKQXhNUmIzQmxiblp3YmlCemFYUmxNbk5wZEdVd0hoY05NalF3TlRJeE1UTTFOelUyV2hjTk16UXdOVEU1TVRNMQpOelUyV2pBak1TRXdId1lEVlFRREV4aERiR2xsYm5RZ2IzQmxiblp3YmlCemFYUmxNbk5wZEdVd2dnSWlNQTBHCkNTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDbGpsOEhhWXRYdGdvdjN2TGRrUU8xNTJsTmdmek4KT0xsMHlldmIzNDJSaDBLM2Rtd2ErRkd0NGFHYWNFSmxFbmpZMTlCRTdudUVTaHRkaDQwcjZONkNmVURhQlhEZgo1dkN4d2RSQ0lBbllBZXAwRTJzVjN5dkxGUUt6eHJPZkZRSGtEclJoU1FWVnE1amw1MEVreXQzb1VHNjlJV1N2CjNvc3pxZktlVGw5L21vR2RjUzA5czNRVVdMaXVrbFNRV3kxVkQrYjBTQnJTR29wOUFDbGpCWVlseUFoN05KNXAKMzJnK3R0OUFEb2JPMzFCbmhiRzE1RWxrRE1YWTJKQjFLMzBWQnpnUlN3OVBXZzd6OW9oVm9pcFN0RDJFczhsTwp5cTdQck1uL0I3Rkd3QWY4cFgvU2xTeE5kVFdWTjRJdGN0QTBscEl1cXJKdG5mOGFWYk51M29OdU0zbEpoeldZCkV3R292bm9uRFdMMjl1VW9QUmFKL1QzYWEzZGxScXpxMjJqQ05jc0hnWk5ZNWhyaG5aamVqNVlJK3NaZUdOMWgKTnZVWUdwMnNEemNFUGkyY09UWExiZ1ZXQ3ZSM2ZudkRYekxPc3owK0srZXM1bWNZS2VTSU1WTmNGZVJ0UlJsNgpObStqT1cwOEROU2c2VGlqSnhOWG1Cd3JjU1hxMk1WZGk5VURkcnRDR29uOWlRdTBHeFI1NTl5NHhkbTRFd2NjCmRnRStEYUFJTWtSNmJ1c2k5RjJMOVYwVmRocUZwdzV0bmNpVUFvdTh0bDMwem9xWUtWM1lYR1FORm5KcmxWa0IKb2dPSnc3YzcraDJQcWY5K1ZZanZWRjVQenIvVmx4UGpqTkxkekZ5Q25SQ2ZuVVFkSDNxOHdQYkh6dnljczZSSApETVZJdTFhNGxjL3hpd0lEQVFBQm80SFBNSUhNTUFrR0ExVWRFd1FDTUFBd0N3WURWUjBQQkFRREFnWGdNREVHCkNXQ0dTQUdHK0VJQkRRUWtGaUpQY0dWdVUxTk1JRWRsYm1WeVlYUmxaQ0JWYzJWeUlFTmxjblJwWm1sallYUmwKTUIwR0ExVWREZ1FXQkJURWZKV0duWHRhRDlyTk5LeDFzaFp0ZUdlQ3l6QkxCZ05WSFNNRVJEQkNnQlRHeE1CQQp3L0dhOWJ1WHBKYWozdEtsS1BDd0E2RWdwQjR3SERFYU1CZ0dBMVVFQXhNUmIzQmxiblp3YmlCemFYUmxNbk5wCmRHV0NDRzV4NUR1QlY4U3hNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01DTUEwR0NTcUdTSWIzRFFFQkN3VUEKQTRJQ0FRQVh5a3BFTlZ0Y3hNQU9DckJCMFpqZ2lNMHc0dzF4OU44bnc5Y045ODVCSVhhY0NLd2t3UWw0ZSt1Twp5UmNpZFRGemxOaWxSMG5SYlEwbFlzZkdRZFp5cDQ2eWkvT3pvcDBKZldWa1ViSkdZczcxeTNUbEZhQzVlbDNFCkpYS1JQeWI1b0gzNmRhNTlTc3RmM0R0TWEvSGRDWFVSSWxSdzhKYlpmaE8vZkNHMzN1ZG1qSUlZM1lreVptcmYKaUVFZmUzUHNWZGtjRmdGeGtxbGQ1K056Zlg5Q2M1NHBxTk5Dais1aDloNWJCMTRPYXJrNEVQYWNXbFI2ejNwLwpPUndpNFBVblM5dnNPY2x3SFM3WjZFMWNrT1RybVZHbXIyczh1TFdJRVl2RnRZS1hGQkh1ZkM5eElkYVpTSmxTClA3YWN5TkU4d3dtZCtUNEZzZFRQb2NLNDRPNU1OMHA5V3R5NmozSHJDMm4rbXRzSXZEbm55Y2tQaWc3U09MZ2cKVjdJRGdrSlNQNjdLWTV2YTdwS0YrdnltTzZQcGtmaDVmVytLTXVMY0VMN3l1cWFmeGRXMm5SMCtzbnRJNkZxRApHTFpYSlZ1WFk2bzVXb0UzbVU4UE1TZWpiaEZiT2tZQkhiK2FRZFN3TWZyWHB5UHR0YmpHTCtvdUZxL1UxZFo2CklMeGFsMmZPSE5INFljRjV1ei84bDVuZUNZVHVFYkxlSGovWUhOWDVDakt1U2wyTXNreS9zV0tzQ2F6Qy9YclcKdzQ1R2Jvdmd3Y1NqMk5BMGpUMU1sS2liNVNNZzZ6Skg2NGZCVFVaV1MzWjRRUkpnKyszWUpWczdJSmZJTzQwaQprZ1BnZlczSFZONVRhMWlVeFQya3ROS3prcGN5QjJXYnNlTUNyemJaOFdZQjA3eldaQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRQ2xqbDhIYVl0WHRnb3YKM3ZMZGtRTzE1MmxOZ2Z6Tk9MbDB5ZXZiMzQyUmgwSzNkbXdhK0ZHdDRhR2FjRUpsRW5qWTE5QkU3bnVFU2h0ZApoNDByNk42Q2ZVRGFCWERmNXZDeHdkUkNJQW5ZQWVwMEUyc1YzeXZMRlFLenhyT2ZGUUhrRHJSaFNRVlZxNWpsCjUwRWt5dDNvVUc2OUlXU3Yzb3N6cWZLZVRsOS9tb0dkY1MwOXMzUVVXTGl1a2xTUVd5MVZEK2IwU0JyU0dvcDkKQUNsakJZWWx5QWg3Tko1cDMyZyt0dDlBRG9iTzMxQm5oYkcxNUVsa0RNWFkySkIxSzMwVkJ6Z1JTdzlQV2c3ego5b2hWb2lwU3REMkVzOGxPeXE3UHJNbi9CN0ZHd0FmOHBYL1NsU3hOZFRXVk40SXRjdEEwbHBJdXFySnRuZjhhClZiTnUzb051TTNsSmh6V1lFd0dvdm5vbkRXTDI5dVVvUFJhSi9UM2FhM2RsUnF6cTIyakNOY3NIZ1pOWTVocmgKblpqZWo1WUkrc1plR04xaE52VVlHcDJzRHpjRVBpMmNPVFhMYmdWV0N2UjNmbnZEWHpMT3N6MCtLK2VzNW1jWQpLZVNJTVZOY0ZlUnRSUmw2Tm0rak9XMDhETlNnNlRpakp4TlhtQndyY1NYcTJNVmRpOVVEZHJ0Q0dvbjlpUXUwCkd4UjU1OXk0eGRtNEV3Y2NkZ0UrRGFBSU1rUjZidXNpOUYyTDlWMFZkaHFGcHc1dG5jaVVBb3U4dGwzMHpvcVkKS1YzWVhHUU5GbkpybFZrQm9nT0p3N2M3K2gyUHFmOStWWWp2VkY1UHpyL1ZseFBqak5MZHpGeUNuUkNmblVRZApIM3E4d1BiSHp2eWNzNlJIRE1WSXUxYTRsYy94aXdJREFRQUJBb0lDQUJTaGpGZ1pJQU03TFVQUDdjWU10MENvCjZPZCt4bWt3bzNQWlllb1Jqc3ZPNWxLRWtHNC8rYlhJZzJJQ2tWT1ZITGd4Rk1ReVQvUXBaQVdneWNmcUNpaUsKd1ZVcURtbm9scUFnUG5wTEVjNzRWaVpHOFRaVmpGaVBjcm5DamtuSnpXV0ZLNWRnQ1NrbTdEUGlRS3o4RnZGSApiTFZtL3V3bnVJTWtyNVpvdjkvZitqMExpSTdDMlRsYjRRL29MbCthN1NoSGhnbDFIdHFGOGpJbm5nQzRCSUthCnpldkVuK1Vqc1JMM3FSU0xldU0yMHdkRGt1VE80Ukoxd1FZSDN1Q3JIYmhNSVFHT3NBYThlMWFOcDJtOGZyZTEKdkdEWUlzTU40UUVDVUYzV3NKSFhobWRHbklvNmlyM1FXSEFTN2NjS0lzWWE2WGFsVVB6MkRuOVNwTHl4UUFGOQpLVVhRamRuU0poUVV1SmRtc29TWVg3aVVCbXpkcU8zQVFqcjlrQkU3M1NkSlp6b2ZMaXJqMVVTS0dyK2NjZTFRClZZOFBNek1lUmkwdTNqejlXY2tJbHgyNGJGaUJaK2ZGVG9vYmJGb1krbThUSllqVThGZDFFYWFWa2Z2alBIOWcKdjlhOWlKTnI4Qm11TFAwbW5MNTF6QSs3OXFnMjc4UFk4RFVRMlR4YndUNDAvb1dHbTRUc0h1ckljSlJBUG9BUwpCU21uWWVRalRRTS8rMU5xSTZVeWM3NnlNa1Z5T28zcG1kejA4cnVZVFlCanpHZVkzK1M0QVNmQW9GSWZ3ZGxTCmlkb0luT3hoeG5mSU9TU2JWK3luLyt1Z3JraW5XdmloSVdtMVBBQVM2MjVqRFI5UWNGM2xxSHkrWFJNSVhtdVoKQTZkR1lmOFRKYTdvbUhkd0pwblpBb0lCQVFEZ25kQ1p3WTBxMjhvT3J1T2w0UlE3SkNoMGtGQmZCWnJuUDJINwo4TGhCbGpZS1pFTHVqQ1pRZEcwT0xEc2pCL09JbzdOc2lLK0hzY250VjJLYXRTRGkyYzRWL1IvSUF1ZzdSKzAxCnJodFlMeU84R1RvdVF6cEdVT3Rvd3pIc3liUStaNzdwWXRZL1VmbFRxaVplR2d5UjlKcnNBU05MSGY5ZVlnZlAKNGErU24wK05teng3NENSUEVzMENWMy9YZUk3RCsxS3FwWlVwRmFsQ05vSDc4TTZUdUMvcWszeG9HdG9rZFNjZApiSlltTk1VOGZZQkFhWDhVRTJTZFQzUldkWWRrd2RlRi9lYjA0YWpEOWUvVk81QXNBVU84UEV1c0MzZTJNZzlQCkVTK2dsQ2NPZUF1cTJLUWNSdDBtdkZHUXkvOU1YQjJKQ1pjMTBOOUN5bkF3aEE2bkFvSUJBUUM4c0E4MFBnVzAKRmdCenh2OFgxRWpFVlN2dENyb0IxN2pSZkliVEprOGdxTXBYaFNBWFJER3M3MktPWVlVRFA0SDgyQTA3UWtqQgpmekZPWE1RbnA2WElONjJ0akRWN3JoSitvcjlTaVphdTBvUWtLbEVXRmloS3VxQUJad0VJTDJ4dkdXVGZVdTV0CkxibC92Z2NlaXNacURvb3dacnpxK2NKYWk0YjRoSG53b2pENDdvck5yamhuTlljNi9OWnQ5MEpveE93ZFFucmgKcnBpK2l0MFdlazlhSnBnelNyN3lTU2VZL3VnR2pldU8vVk9yZXg1Y05HcnkzRVJ6QWp5R2N5U3F5Y3N1cy9BZQpTMzBNSTVKSHlRUDZHcE82SHYxUlFkTHJzbVF1TU4yRllsQVoyRHAyZWR4SVpmYVFsb0RWaUZuZ3QvODJXYkZuCkJ1ZDR3WEdvbUNaOUFvSUJBRDZITUQ3ZFJyTWJwRkFhRjMxaC93UEh1UXRaOFVYQ2hiRENVRUNXYm5Tem9DK2MKWVpXT3BrdlhYVlNJczUyNDVPNnd3NDMvTHY0VFhDY2FJSFQ0MzBMSFp6dHZ6NTBhVWhQT25oWkhkWTFDOGl1Mgp5aDkrejRZcm1KejlXYlNWSWZ3TlhYUVM4NW1FOUdkNkFseEgzQi8xZS9zZkJmZ3ZUWnUwcG9BVVQ0LzlrV1BXClJ5d2s1WGF0d1N4WnQxa0FVcDMwSkxza2hUVit0ak9jZ09ybHlsd005aW5URE5yZVBzUFBhU2dqeGxpMGNBTzYKM0MwU01USWhnK3pXNVlmOEI4amd2V0tybjlPanpodGZKM2l3c0IzUDdFOUdhYnBuSnRndGIxMlBaemJJaDJiYgp2RU8vTTFBNzJleWltQUk3QjhMMkViTElYTE82aGF4T05wVUs3aGtDZ2dFQVZkOUNiQ0kxOGtsNUZ6ZmZiSGJlClR3djhHN3NnQUNxdklCZXVQSFpZMktJNHhDLy85TmJDVE5QOVpKTVpOK3MxTzE4UVZvSEtIdFhHR01XN045amkKYUFaKzhsYTNHSHlXU2kvREpzc2JXcURRSnExampjdXp0cDdNcHhhN3IzLzF0M0kxS0RYVDhMZzRqZHhyM1FpSApXRWtadHdGcXhQMjU1LzlNQTlvMnJMOER6cWF4WVA0RENXV2hEOFYxeVVJWVpSb0o0eDhZVVpGbVRvRmdNUlNrCi9JQklFRC9hT3VYME1Yc0JHY3FKQStCaXJjNHdlUUlhRWtFUW5jN013TnV5T2svd09tY0Z4cVBRV3kvdEtPSmcKL3ZnTmQwMFhPRjNlb2duajhlbW5SMGNBOFdJbzZUWjRmREo3VGo1UWo5Mm9HYzlqUk5iNUY4eGFsK2hoMDdxNgorUUtDQVFFQXo2KzhqNzl6VzVDamQvZWE3aUxrOHdiVTV3VUFjWG1QOHlOaXNhOVFtU3B4SnhBU1dlQzlmQzZzCnZQQUJJQm1PYlJsQ3dvcXpET0xSTHJzZVRQZnJaS29yNGdDaERZOHp4cndmbGQzN3QyWUVpY3U4UllJZmkySlkKRmtoTXhIN1ZYeGNkYkpjd2E5akdxNysycFl3R0pjZThwZXhqS3dhRFVKVHBBZVBOemE2aTc4ZXk1UTRGL3piNAo1cndZdnZzTjRMaDBGektMRDNUVmxWS3JIVUxCK2xKSExTa2ozUlk0TjFSR2d3WkhtN0k3NWx2WDZKMjFPUlkyCm5zVzBSenRLdVc4d0taSUtZWnRxYmxIdzg5UkhFSmpHSEh5OGFISkl5NEsxYWx2TVNvWWVVQWZMbi9MajJNanAKR0dsYmV2N2xZZnBLdldKOFk1Q2lRYXB4ZEM2YVZRPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= + + + + + + + + egonetix.local + SOA + 10.0.0.5 + + + egonetix.local + SOA + 10.0.0.1 + + + egonetix.local + MX + srvdc02. + + + srvdc02 + A + 10.0.0.5 + + + + + on + squid + lan + 3125 + + on + on + de + + + d3d3LmVnb25ldGl4LmRl + + + + 5000 + on + + on + on + + + + + + 1 + eu + + + + + + + 4.1.6_26 + + wan + on + 41336 + + ac-bnfa + on + default + default + wansuppress_58497c0db0e4e + on + on + off + on + off + 10000 + 10 + 16000 + on + stateful + off + on + on + on + 20 + + + default + all + 256 + no + yes + yes + + + + + + + default + all + default + no + yes + no + 100 + + + on + on + on + on + on + off + on + on + all + all + 10000000 + low + on + off + 150994944 + 838860 + + + default + all + all + off + off + off + 65535 + on + 1460 + on + off + on + on + on + on + on + on + off + off + 200 + -1 + 0 + 0 + 0 + default + + + 8192 + 4194304 + on + + + default + all + bsd + 60 + 1 + on + 0 + 0 + + + on + off + 1048576 + on + 262144 + on + 131072 + 30 + off + 65536 + 30 + 8388608 + + + default + all + bsd + 30 + 1048576 + off + 0 + 2621 + off + 0 + off + 0 + off + off + off + default + default + none + + + GPLv2_community.rules||emerging-scan.rules + on + balanced + on + 838860 + 0 + 0 + 0 + 0 + 838860 + 0 + 0 + 0 + 0 + 838860 + 838860 + 0 + 0 + 0 + 0 + 1464 + on + on + on + on + on + off + 256 + on + 300 + on + both + passlist_21324 + log_auth + log_alert + 1:105||1:108||1:110||1:115||1:117||1:118||1:119||1:121||1:141||1:144||1:146||1:147||1:152||1:157||1:158||1:161||1:162||1:163||1:185||1:195||1:208||1:209||1:210||1:211||1:212||1:213||1:214||1:215||1:216||1:217||1:218||1:219||1:220||1:221||1:222||1:223||1:224||1:225||1:226||1:227||1:228||1:229||1:230||1:231||1:232||1:233||1:234||1:235||1:236||1:237||1:238||1:239||1:240||1:243||1:244||1:245||1:246||1:247||1:248||1:250||1:251||1:253||1:254||1:255||1:256||1:257||1:258||1:259||1:260||1:261||1:262||1:264||1:265||1:266||1:267||1:271||1:272||1:274||1:276||1:277||1:278||1:279||1:281||1:283||1:286||1:287||1:288||1:289||1:290||1:292||1:300||1:301||1:302||1:303||1:304||1:305||1:306||1:307||1:308||1:309||1:310||1:311||1:313||1:314||1:315||1:316||1:317||1:320||1:321||1:322||1:323||1:324||1:326||1:327||1:328||1:330||1:331||1:332||1:333||1:334||1:335||1:336||1:337||1:353||1:354||1:355||1:356||1:357||1:358||1:359||1:360||1:361||1:362||1:363||1:364||1:365||1:366||1:368||1:369||1:370||1:371||1:372||1:373||1:374||1:375||1:376||1:377||1:378||1:379||1:380||1:381||1:382||1:384||1:385||1:386||1:387||1:388||1:389||1:390||1:391||1:392||1:393||1:394||1:395||1:396||1:397||1:398||1:399||1:400||1:401||1:402||1:403||1:404||1:405||1:406||1:407||1:408||1:409||1:410||1:411||1:412||1:413||1:414||1:415||1:416||1:417||1:418||1:419||1:420||1:421||1:422||1:423||1:424||1:425||1:426||1:427||1:428||1:429||1:430||1:431||1:432||1:433||1:436||1:437||1:438||1:439||1:440||1:441||1:443||1:445||1:446||1:448||1:449||1:450||1:451||1:452||1:453||1:454||1:456||1:457||1:458||1:459||1:460||1:461||1:462||1:463||1:465||1:466||1:467||1:474||1:476||1:480||1:481||1:482||1:483||1:484||1:489||1:490||1:491||1:492||1:493||1:494||1:495||1:497||1:498||1:505||1:507||1:508||1:509||1:510||1:512||1:514||1:516||1:517||1:518||1:519||1:520||1:529||1:530||1:534||1:535||1:540||1:541||1:542||1:543||1:544||1:545||1:546||1:547||1:548||1:553||1:554||1:555||1:556||1:557||1:560||1:566||1:567||1:568||1:569||1:572||1:574||1:575||1:576||1:577||1:578||1:579||1:580||1:581||1:582||1:583||1:584||1:585||1:586||1:587||1:588||1:589||1:590||1:591||1:593||1:595||1:598||1:599||1:601||1:602||1:603||1:604||1:605||1:606||1:607||1:608||1:609||1:610||1:611||1:612||1:613||1:614||1:616||1:619||1:622||1:626||1:627||1:630||1:631||1:632||1:634||1:635||1:636||1:637||1:638||1:639||1:640||1:641||1:642||1:643||1:644||1:645||1:646||1:647||1:648||1:649||1:650||1:652||1:654||1:655||1:657||1:658||1:659||1:660||1:661||1:662||1:663||1:664||1:665||1:667||1:668||1:669||1:670||1:671||1:672||1:673||1:676||1:677||1:678||1:679||1:681||1:683||1:684||1:685||1:686||1:687||1:688||1:689||1:691||1:692||1:693||1:694||1:695||1:704||1:709||1:710||1:711||1:712||1:713||1:714||1:715||1:717||1:718||1:719||1:803||1:804||1:805||1:806||1:807||1:808||1:809||1:810||1:811||1:812||1:813||1:815||1:817||1:818||1:819||1:820||1:821||1:823||1:824||1:825||1:826||1:827||1:828||1:829||1:832||1:833||1:834||1:835||1:836||1:837||1:838||1:839||1:840||1:842||1:843||1:844||1:845||1:846||1:847||1:848||1:849||1:850||1:851||1:852||1:853||1:854||1:856||1:857||1:858||1:859||1:860||1:861||1:862||1:863||1:864||1:865||1:866||1:867||1:868||1:869||1:870||1:871||1:872||1:875||1:877||1:878||1:879||1:880||1:881||1:882||1:883||1:885||1:886||1:887||1:888||1:889||1:890||1:891||1:892||1:894||1:895||1:896||1:897||1:898||1:899||1:900||1:901||1:902||1:903||1:904||1:905||1:906||1:907||1:908||1:909||1:910||1:911||1:912||1:913||1:914||1:915||1:916||1:917||1:918||1:919||1:920||1:921||1:922||1:923||1:924||1:925||1:926||1:927||1:928||1:929||1:930||1:931||1:932||1:933||1:935||1:936||1:937||1:939||1:940||1:941||1:942||1:943||1:944||1:945||1:946||1:947||1:948||1:949||1:950||1:951||1:952||1:953||1:954||1:955||1:956||1:957||1:958||1:959||1:960||1:961||1:962||1:963||1:964||1:965||1:966||1:967||1:968||1:969||1:971||1:973||1:974||1:975||1:976||1:977||1:978||1:979||1:980||1:984||1:985||1:986||1:987||1:989||1:990||1:991||1:992||1:993||1:994||1:995||1:996||1:997||1:998||1:999||1:1000||1:1001||1:1002||1:1003||1:1004||1:1005||1:1007||1:1008||1:1009||1:1010||1:1011||1:1012||1:1013||1:1015||1:1016||1:1017||1:1018||1:1019||1:1020||1:1021||1:1022||1:1023||1:1024||1:1025||1:1026||1:1027||1:1028||1:1029||1:1030||1:1031||1:1032||1:1033||1:1034||1:1035||1:1036||1:1037||1:1038||1:1039||1:1040||1:1041||1:1042||1:1043||1:1044||1:1045||1:1046||1:1047||1:1048||1:1050||1:1051||1:1052||1:1053||1:1054||1:1056||1:1057||1:1058||1:1059||1:1060||1:1061||1:1062||1:1064||1:1065||1:1066||1:1067||1:1068||1:1069||1:1070||1:1071||1:1072||1:1073||1:1075||1:1076||1:1077||1:1078||1:1079||1:1080||1:1081||1:1082||1:1083||1:1084||1:1085||1:1086||1:1088||1:1089||1:1090||1:1091||1:1092||1:1093||1:1095||1:1096||1:1097||1:1098||1:1099||1:1100||1:1101||1:1102||1:1103||1:1105||1:1106||1:1107||1:1108||1:1109||1:1110||1:1111||1:1115||1:1116||1:1117||1:1118||1:1119||1:1120||1:1122||1:1123||1:1124||1:1125||1:1126||1:1127||1:1128||1:1129||1:1130||1:1131||1:1132||1:1133||1:1134||1:1136||1:1137||1:1139||1:1140||1:1141||1:1142||1:1145||1:1146||1:1147||1:1148||1:1149||1:1150||1:1151||1:1152||1:1153||1:1154||1:1155||1:1156||1:1157||1:1158||1:1159||1:1160||1:1161||1:1162||1:1163||1:1164||1:1165||1:1166||1:1167||1:1168||1:1172||1:1173||1:1174||1:1175||1:1177||1:1178||1:1179||1:1180||1:1181||1:1183||1:1184||1:1185||1:1186||1:1187||1:1188||1:1189||1:1190||1:1191||1:1192||1:1193||1:1194||1:1195||1:1196||1:1197||1:1198||1:1199||1:1200||1:1201||1:1202||1:1204||1:1205||1:1206||1:1207||1:1208||1:1209||1:1211||1:1212||1:1213||1:1214||1:1215||1:1216||1:1217||1:1218||1:1219||1:1220||1:1221||1:1222||1:1224||1:1225||1:1226||1:1229||1:1230||1:1231||1:1232||1:1234||1:1235||1:1239||1:1240||1:1241||1:1242||1:1243||1:1244||1:1245||1:1248||1:1249||1:1250||1:1252||1:1253||1:1254||1:1255||1:1256||1:1257||1:1259||1:1261||1:1262||1:1263||1:1264||1:1265||1:1267||1:1268||1:1269||1:1270||1:1271||1:1272||1:1273||1:1274||1:1275||1:1276||1:1277||1:1279||1:1280||1:1281||1:1283||1:1284||1:1285||1:1286||1:1288||1:1289||1:1290||1:1291||1:1292||1:1295||1:1300||1:1301||1:1302||1:1303||1:1304||1:1305||1:1307||1:1308||1:1309||1:1323||1:1324||1:1325||1:1326||1:1327||1:1374||1:1375||1:1376||1:1377||1:1378||1:1379||1:1380||1:1381||1:1382||1:1384||1:1385||1:1386||1:1387||1:1388||1:1390||1:1392||1:1393||1:1394||1:1395||1:1396||1:1397||1:1398||1:1399||1:1400||1:1401||1:1402||1:1405||1:1406||1:1407||1:1408||1:1409||1:1410||1:1411||1:1412||1:1413||1:1414||1:1415||1:1416||1:1417||1:1418||1:1419||1:1420||1:1421||1:1422||1:1423||1:1425||1:1426||1:1427||1:1428||1:1432||1:1433||1:1434||1:1435||1:1436||1:1437||1:1439||1:1440||1:1441||1:1442||1:1443||1:1444||1:1445||1:1446||1:1447||1:1448||1:1450||1:1451||1:1452||1:1453||1:1454||1:1455||1:1456||1:1457||1:1458||1:1459||1:1460||1:1461||1:1462||1:1463||1:1464||1:1465||1:1466||1:1467||1:1468||1:1469||1:1470||1:1471||1:1472||1:1473||1:1474||1:1475||1:1476||1:1478||1:1479||1:1480||1:1481||1:1482||1:1483||1:1485||1:1486||1:1487||1:1488||1:1489||1:1490||1:1491||1:1492||1:1493||1:1494||1:1495||1:1496||1:1499||1:1500||1:1501||1:1502||1:1503||1:1504||1:1505||1:1506||1:1507||1:1508||1:1509||1:1510||1:1511||1:1512||1:1513||1:1514||1:1515||1:1516||1:1517||1:1518||1:1519||1:1520||1:1521||1:1522||1:1523||1:1524||1:1525||1:1526||1:1527||1:1528||1:1529||1:1531||1:1532||1:1533||1:1534||1:1535||1:1536||1:1537||1:1538||1:1539||1:1540||1:1541||1:1542||1:1543||1:1544||1:1545||1:1546||1:1547||1:1548||1:1549||1:1550||1:1551||1:1552||1:1554||1:1555||1:1556||1:1557||1:1558||1:1559||1:1560||1:1562||1:1563||1:1564||1:1565||1:1566||1:1567||1:1568||1:1569||1:1570||1:1571||1:1572||1:1573||1:1574||1:1575||1:1576||1:1577||1:1578||1:1579||1:1580||1:1581||1:1582||1:1583||1:1584||1:1585||1:1586||1:1587||1:1588||1:1589||1:1590||1:1591||1:1592||1:1593||1:1594||1:1595||1:1597||1:1598||1:1599||1:1600||1:1601||1:1602||1:1603||1:1604||1:1605||1:1606||1:1607||1:1608||1:1610||1:1611||1:1612||1:1613||1:1614||1:1615||1:1616||1:1617||1:1618||1:1621||1:1622||1:1623||1:1624||1:1625||1:1626||1:1628||1:1631||1:1634||1:1635||1:1636||1:1637||1:1638||1:1639||1:1640||1:1641||1:1642||1:1643||1:1644||1:1645||1:1646||1:1648||1:1649||1:1650||1:1651||1:1652||1:1654||1:1655||1:1656||1:1657||1:1658||1:1659||1:1660||1:1661||1:1662||1:1663||1:1664||1:1666||1:1667||1:1668||1:1669||1:1670||1:1671||1:1672||1:1673||1:1674||1:1675||1:1676||1:1677||1:1678||1:1679||1:1680||1:1681||1:1682||1:1683||1:1684||1:1685||1:1686||1:1687||1:1688||1:1689||1:1690||1:1691||1:1692||1:1693||1:1694||1:1695||1:1696||1:1697||1:1700||1:1701||1:1702||1:1703||1:1704||1:1705||1:1706||1:1707||1:1708||1:1709||1:1710||1:1711||1:1712||1:1713||1:1714||1:1715||1:1716||1:1717||1:1718||1:1719||1:1720||1:1721||1:1722||1:1723||1:1724||1:1725||1:1726||1:1727||1:1729||1:1730||1:1731||1:1732||1:1733||1:1734||1:1735||1:1736||1:1737||1:1738||1:1739||1:1740||1:1741||1:1742||1:1743||1:1744||1:1745||1:1746||1:1747||1:1750||1:1751||1:1752||1:1753||1:1754||1:1755||1:1756||1:1757||1:1759||1:1762||1:1763||1:1764||1:1765||1:1766||1:1767||1:1769||1:1770||1:1771||1:1772||1:1773||1:1774||1:1775||1:1776||1:1777||1:1778||1:1787||1:1788||1:1789||1:1790||1:1792||1:1802||1:1803||1:1804||1:1805||1:1806||1:1807||1:1808||1:1809||1:1810||1:1811||1:1812||1:1813||1:1814||1:1815||1:1816||1:1817||1:1818||1:1819||1:1820||1:1821||1:1822||1:1823||1:1824||1:1825||1:1826||1:1827||1:1828||1:1829||1:1830||1:1831||1:1832||1:1834||1:1835||1:1838||1:1839||1:1840||1:1841||1:1842||1:1843||1:1844||1:1845||1:1846||1:1847||1:1848||1:1849||1:1850||1:1851||1:1852||1:1853||1:1854||1:1855||1:1856||1:1857||1:1858||1:1859||1:1860||1:1861||1:1862||1:1864||1:1865||1:1866||1:1867||1:1868||1:1869||1:1870||1:1871||1:1872||1:1873||1:1874||1:1875||1:1876||1:1877||1:1878||1:1879||1:1880||1:1881||1:1882||1:1887||1:1888||1:1889||1:1890||1:1891||1:1892||1:1893||1:1894||1:1895||1:1896||1:1897||1:1898||1:1899||1:1900||1:1901||1:1902||1:1903||1:1904||1:1905||1:1906||1:1907||1:1908||1:1909||1:1910||1:1911||1:1912||1:1913||1:1914||1:1915||1:1916||1:1917||1:1918||1:1919||1:1920||1:1921||1:1922||1:1923||1:1924||1:1925||1:1926||1:1927||1:1928||1:1930||1:1931||1:1932||1:1933||1:1936||1:1937||1:1938||1:1939||1:1940||1:1941||1:1942||1:1943||1:1944||1:1946||1:1947||1:1948||1:1949||1:1950||1:1951||1:1952||1:1953||1:1954||1:1955||1:1956||1:1957||1:1958||1:1959||1:1960||1:1961||1:1962||1:1963||1:1964||1:1965||1:1966||1:1967||1:1968||1:1969||1:1970||1:1971||1:1972||1:1973||1:1974||1:1975||1:1976||1:1977||1:1978||1:1979||1:1980||1:1981||1:1982||1:1983||1:1984||1:1985||1:1986||1:1987||1:1988||1:1989||1:1990||1:1991||1:1992||1:1993||1:1994||1:1995||1:1996||1:1997||1:1998||1:1999||1:2000||1:2001||1:2002||1:2003||1:2004||1:2005||1:2006||1:2007||1:2008||1:2009||1:2010||1:2011||1:2012||1:2013||1:2014||1:2015||1:2016||1:2017||1:2018||1:2019||1:2020||1:2021||1:2022||1:2023||1:2024||1:2025||1:2026||1:2027||1:2028||1:2029||1:2030||1:2031||1:2032||1:2033||1:2034||1:2035||1:2036||1:2037||1:2038||1:2039||1:2040||1:2041||1:2042||1:2043||1:2044||1:2045||1:2046||1:2047||1:2049||1:2050||1:2051||1:2052||1:2053||1:2054||1:2055||1:2056||1:2057||1:2058||1:2059||1:2060||1:2061||1:2062||1:2063||1:2065||1:2066||1:2067||1:2068||1:2069||1:2070||1:2071||1:2072||1:2073||1:2074||1:2075||1:2076||1:2077||1:2078||1:2079||1:2080||1:2081||1:2082||1:2083||1:2084||1:2085||1:2086||1:2087||1:2088||1:2089||1:2090||1:2091||1:2092||1:2093||1:2094||1:2095||1:2100||1:2101||1:2103||1:2104||1:2105||1:2106||1:2107||1:2108||1:2109||1:2110||1:2111||1:2112||1:2113||1:2114||1:2115||1:2116||1:2117||1:2118||1:2119||1:2120||1:2121||1:2122||1:2123||1:2124||1:2125||1:2126||1:2127||1:2128||1:2129||1:2130||1:2131||1:2132||1:2133||1:2134||1:2135||1:2136||1:2137||1:2138||1:2139||1:2140||1:2141||1:2142||1:2143||1:2144||1:2145||1:2146||1:2147||1:2148||1:2149||1:2150||1:2151||1:2152||1:2153||1:2154||1:2155||1:2156||1:2157||1:2158||1:2159||1:2176||1:2177||1:2178||1:2179||1:2180||1:2181||1:2183||1:2184||1:2190||1:2191||1:2194||1:2195||1:2196||1:2197||1:2198||1:2199||1:2200||1:2201||1:2202||1:2203||1:2204||1:2205||1:2206||1:2207||1:2208||1:2209||1:2210||1:2211||1:2212||1:2213||1:2214||1:2215||1:2216||1:2217||1:2218||1:2219||1:2220||1:2221||1:2222||1:2223||1:2224||1:2225||1:2226||1:2227||1:2228||1:2229||1:2230||1:2231||1:2232||1:2233||1:2234||1:2235||1:2236||1:2237||1:2238||1:2239||1:2240||1:2241||1:2242||1:2243||1:2244||1:2245||1:2246||1:2247||1:2248||1:2249||1:2250||1:2252||1:2253||1:2255||1:2256||1:2257||1:2258||1:2259||1:2260||1:2261||1:2262||1:2263||1:2264||1:2265||1:2266||1:2267||1:2268||1:2269||1:2270||1:2271||1:2272||1:2273||1:2274||1:2275||1:2276||1:2277||1:2278||1:2279||1:2280||1:2281||1:2282||1:2283||1:2284||1:2285||1:2286||1:2287||1:2288||1:2289||1:2290||1:2291||1:2292||1:2293||1:2294||1:2295||1:2296||1:2297||1:2298||1:2299||1:2300||1:2301||1:2302||1:2303||1:2304||1:2305||1:2306||1:2307||1:2317||1:2318||1:2319||1:2320||1:2321||1:2322||1:2323||1:2324||1:2325||1:2326||1:2327||1:2328||1:2329||1:2330||1:2331||1:2332||1:2333||1:2334||1:2335||1:2337||1:2338||1:2339||1:2340||1:2341||1:2342||1:2343||1:2344||1:2345||1:2346||1:2347||1:2353||1:2354||1:2355||1:2356||1:2357||1:2358||1:2359||1:2360||1:2361||1:2362||1:2363||1:2364||1:2365||1:2366||1:2367||1:2368||1:2369||1:2370||1:2371||1:2372||1:2373||1:2374||1:2375||1:2376||1:2377||1:2378||1:2379||1:2380||1:2381||1:2382||1:2383||1:2386||1:2388||1:2389||1:2390||1:2391||1:2392||1:2393||1:2394||1:2395||1:2396||1:2397||1:2398||1:2399||1:2400||1:2401||1:2402||1:2403||1:2404||1:2405||1:2406||1:2407||1:2408||1:2409||1:2410||1:2411||1:2412||1:2413||1:2414||1:2415||1:2416||1:2417||1:2418||1:2419||1:2420||1:2422||1:2423||1:2424||1:2425||1:2426||1:2427||1:2428||1:2429||1:2430||1:2431||1:2432||1:2433||1:2434||1:2435||1:2436||1:2437||1:2438||1:2439||1:2440||1:2441||1:2446||1:2447||1:2448||1:2449||1:2450||1:2451||1:2452||1:2453||1:2454||1:2455||1:2456||1:2457||1:2458||1:2459||1:2460||1:2461||1:2462||1:2463||1:2464||1:2474||1:2484||1:2485||1:2486||1:2487||1:2488||1:2489||1:2490||1:2508||1:2511||1:2523||1:2545||1:2546||1:2547||1:2548||1:2549||1:2550||1:2551||1:2552||1:2553||1:2554||1:2555||1:2556||1:2557||1:2558||1:2559||1:2560||1:2561||1:2562||1:2563||1:2564||1:2565||1:2566||1:2567||1:2568||1:2569||1:2570||1:2571||1:2572||1:2573||1:2574||1:2575||1:2576||1:2577||1:2578||1:2579||1:2580||1:2581||1:2582||1:2583||1:2584||1:2585||1:2587||1:2588||1:2589||1:2597||1:2598||1:2599||1:2601||1:2603||1:2605||1:2606||1:2608||1:2609||1:2611||1:2612||1:2614||1:2615||1:2617||1:2619||1:2621||1:2624||1:2626||1:2627||1:2629||1:2633||1:2637||1:2639||1:2641||1:2643||1:2644||1:2645||1:2649||1:2650||1:2651||1:2652||1:2654||1:2655||1:2656||1:2657||1:2663||1:2664||1:2665||1:2666||1:2667||1:2668||1:2669||1:2670||1:2671||1:2672||1:2673||1:2674||1:2675||1:2677||1:2678||1:2679||1:2680||1:2681||1:2682||1:2683||1:2684||1:2685||1:2686||1:2687||1:2688||1:2689||1:2690||1:2691||1:2692||1:2693||1:2694||1:2695||1:2696||1:2697||1:2698||1:2699||1:2701||1:2702||1:2703||1:2704||1:2705||1:2707||1:2708||1:2709||1:2711||1:2712||1:2713||1:2714||1:2715||1:2716||1:2717||1:2718||1:2719||1:2720||1:2721||1:2722||1:2723||1:2724||1:2725||1:2726||1:2727||1:2728||1:2729||1:2730||1:2731||1:2732||1:2733||1:2734||1:2735||1:2736||1:2737||1:2738||1:2739||1:2740||1:2741||1:2742||1:2743||1:2744||1:2745||1:2746||1:2747||1:2748||1:2749||1:2750||1:2751||1:2752||1:2753||1:2754||1:2755||1:2756||1:2757||1:2758||1:2759||1:2760||1:2761||1:2762||1:2763||1:2764||1:2765||1:2766||1:2767||1:2768||1:2769||1:2770||1:2771||1:2772||1:2773||1:2774||1:2775||1:2776||1:2777||1:2778||1:2779||1:2780||1:2781||1:2782||1:2783||1:2784||1:2785||1:2786||1:2787||1:2788||1:2789||1:2790||1:2791||1:2792||1:2793||1:2794||1:2795||1:2796||1:2797||1:2798||1:2799||1:2800||1:2801||1:2802||1:2803||1:2804||1:2805||1:2806||1:2807||1:2808||1:2809||1:2810||1:2811||1:2812||1:2813||1:2814||1:2815||1:2816||1:2817||1:2818||1:2819||1:2820||1:2821||1:2822||1:2823||1:2824||1:2825||1:2826||1:2827||1:2828||1:2829||1:2830||1:2831||1:2832||1:2833||1:2834||1:2835||1:2836||1:2837||1:2838||1:2839||1:2840||1:2841||1:2842||1:2843||1:2844||1:2845||1:2846||1:2847||1:2848||1:2849||1:2850||1:2851||1:2852||1:2853||1:2854||1:2855||1:2856||1:2857||1:2858||1:2859||1:2860||1:2861||1:2862||1:2863||1:2864||1:2865||1:2866||1:2867||1:2868||1:2869||1:2870||1:2871||1:2872||1:2873||1:2874||1:2875||1:2876||1:2877||1:2878||1:2879||1:2880||1:2881||1:2882||1:2883||1:2884||1:2885||1:2886||1:2887||1:2888||1:2889||1:2890||1:2891||1:2892||1:2893||1:2894||1:2895||1:2896||1:2897||1:2898||1:2899||1:2900||1:2901||1:2902||1:2903||1:2904||1:2905||1:2906||1:2907||1:2908||1:2909||1:2910||1:2911||1:2912||1:2913||1:2914||1:2915||1:2916||1:2917||1:2918||1:2919||1:2921||1:2922||1:2923||1:2924||1:2926||1:2927||1:2936||1:2942||1:3000||1:3001||1:3002||1:3003||1:3004||1:3005||1:3006||1:3007||1:3008||1:3009||1:3010||1:3011||1:3012||1:3013||1:3014||1:3015||1:3016||1:3017||1:3018||1:3019||1:3020||1:3021||1:3022||1:3023||1:3024||1:3025||1:3026||1:3027||1:3028||1:3029||1:3030||1:3031||1:3032||1:3033||1:3034||1:3035||1:3036||1:3037||1:3038||1:3039||1:3040||1:3041||1:3042||1:3043||1:3044||1:3045||1:3046||1:3047||1:3048||1:3049||1:3050||1:3051||1:3052||1:3053||1:3054||1:3055||1:3056||1:3057||1:3058||1:3061||1:3062||1:3063||1:3064||1:3065||1:3066||1:3067||1:3069||1:3070||1:3071||1:3072||1:3073||1:3074||1:3075||1:3076||1:3077||1:3078||1:3079||1:3080||1:3081||1:3082||1:3083||1:3084||1:3085||1:3086||1:3087||1:3088||1:3089||1:3114||1:3130||1:3131||1:3132||1:3133||1:3134||1:3135||1:3136||1:3137||1:3138||1:3139||1:3140||1:3141||1:3142||1:3143||1:3144||1:3145||1:3146||1:3147||1:3148||1:3149||1:3150||1:3151||1:3152||1:3153||1:3154||1:3155||1:3158||1:3159||1:3171||1:3192||1:3193||1:3194||1:3195||1:3196||1:3199||1:3200||1:3201||1:3218||1:3234||1:3235||1:3238||1:3239||1:3273||1:3274||1:3397||1:3398||1:3409||1:3441||1:3442||1:3453||1:3454||1:3455||1:3456||1:3457||1:3458||1:3459||1:3460||1:3461||1:3462||1:3463||1:3464||1:11968||1:16368||1:17904||1:19678||1:19964||1:20080||1:20221||1:21230||1:21246||1:21255||1:21256||1:21257||1:21266||1:21267||1:21327||1:21375||1:21417||1:21438||1:21442||1:21444||1:21475||1:21492||1:21562||1:21646||1:21818||1:21819||1:21820||1:21821||1:21822||1:21823||1:21824||1:21825||1:21826||1:21827||1:21828||1:21829||1:21830||1:21831||1:21832||1:21833||1:21834||1:21835||1:21836||1:21837||1:21838||1:21839||1:21840||1:21841||1:21842||1:21843||1:21844||1:21845||1:21846||1:21848||1:21849||1:21850||1:21851||1:22061||1:22063||1:22957||1:22958||1:22959||1:22960||1:23179||1:23481||1:23482||1:23492||1:23621||1:23636||1:24015||1:24017||1:24031||1:24032||1:24033||1:24034||1:24225||1:24251||1:24253||1:24254||1:24265||1:24598||1:24885||1:24886||1:25050||1:25054||1:25119||1:25224||1:25256||1:25257||1:25258||1:25259||1:25269||1:25271||1:25277||1:25471||1:25503||1:25504||1:25511||1:25518||1:25519||1:25520||1:25521||1:25522||1:25523||1:25524||1:25525||1:25577||1:25578||1:25579||1:25580||1:25627||1:25652||1:25660||1:25675||1:25765||1:25766||1:25807||1:25829||1:25854||1:25946||1:25947||1:25948||1:25949||1:26020||1:26023||1:26024||1:26075||1:26106||1:26203||1:26211||1:26212||1:26261||1:26264||1:26265||1:26286||1:26287||1:26288||1:26289||1:26319||1:26325||1:26327||1:26335||1:26353||1:26370||1:26371||1:26380||1:26381||1:26382||1:26395||1:26396||1:26398||1:26399||1:26400||1:26401||1:26402||1:26403||1:26404||1:26405||1:26406||1:26407||1:26408||1:26409||1:26410||1:26411||1:26412||1:26413||1:26467||1:26468||1:26469||1:26470||1:26480||1:26482||1:26483||1:26522||1:26526||1:26528||1:26533||1:26553||1:26554||1:26555||1:26556||1:26558||1:26560||1:26561||1:26562||1:26563||1:26576||1:26577||1:26578||1:26579||1:26580||1:26581||1:26582||1:26583||1:26585||1:26589||1:26612||1:26613||1:26614||1:26654||1:26655||1:26656||1:26657||1:26658||1:26659||1:26660||1:26695||1:26696||1:26697||1:26698||1:26712||1:26713||1:26714||1:26715||1:26718||1:26719||1:26720||1:26722||1:26723||1:26725||1:26726||1:26727||1:26728||1:26729||1:26730||1:26731||1:26732||1:26733||1:26734||1:26735||1:26736||1:26737||1:26738||1:26739||1:26740||1:26741||1:26742||1:26743||1:26744||1:26745||1:26746||1:26747||1:26748||1:26749||1:26750||1:26774||1:26775||1:26776||1:26779||1:26780||1:26781||1:26782||1:26811||1:26812||1:26814||1:26834||1:26835||1:26836||1:26837||1:26838||1:26842||1:26910||1:26911||1:26912||1:26913||1:26914||1:26915||1:26916||1:26917||1:26918||1:26919||1:26920||1:26923||1:26924||1:26925||1:26947||1:26948||1:26949||1:26950||1:26951||1:26965||1:26966||1:26968||1:26969||1:26970||1:26971||1:26984||1:26985||1:27017||1:27039||1:27040||1:27041||1:27042||1:27043||1:27044||1:27045||1:27047||1:27085||1:27086||1:27113||1:27144||1:27146||1:27155||1:27180||1:27181||1:27199||1:27200||1:27201||1:27203||1:27204||1:27246||1:27247||1:27248||1:27252||1:27253||1:27254||1:27255||1:27256||1:27257||1:27533||1:27534||1:27535||1:27537||1:27538||1:27565||1:27567||1:27596||1:27599||1:27625||1:27626||1:27627||1:27628||1:27629||1:27630||1:27631||1:27632||1:27633||1:27648||1:27649||1:27680||1:27707||1:27708||1:27726||1:27727||1:27728||1:27774||1:27775||1:27801||1:27802||1:27803||1:27804||1:27805||1:27865||1:27866||1:27899||1:27900||1:27901||1:27902||1:27903||1:27904||1:27907||1:27913||1:27914||1:27915||1:27916||1:27917||1:27918||1:27919||1:27964||1:27965||1:27966||1:27967||1:27968||1:28005||1:28006||1:28007||1:28008||1:28009||1:28010||1:28011||1:28012||1:28026||1:28028||1:28033||1:28034||1:28035||1:28036||1:28042||1:28044||1:28079||1:28080||1:28105||1:28106||1:28107||1:28114||1:28115||1:28116||1:28117||1:28118||1:28119||1:28120||1:28121||1:28122||1:28123||1:28147||1:28148||1:28152||1:28153||1:28154||1:28155||1:28156||1:28192||1:28193||1:28215||1:28233||1:28242||1:28255||1:28285||1:28291||1:28293||1:28294||1:28295||1:28296||1:28297||1:28300||1:28323||1:28324||1:28344||1:28345||1:28346||1:28404||1:28405||1:28406||1:28420||1:28421||1:28428||1:28429||1:28430||1:28445||1:28446||1:28450||1:28493||1:28538||1:28539||1:28540||1:28541||1:28542||1:28543||1:28552||1:28553||1:28554||1:28555||1:28556||1:28557||1:28800||1:28802||1:28803||1:28804||1:28805||1:28806||1:28807||1:28809||1:28810||1:28814||1:28815||1:28852||1:28859||1:28913||1:28918||1:28919||1:28930||1:28938||1:28939||1:28940||1:28945||1:28950||1:28951||1:28952||1:28953||1:28959||1:28960||1:28976||1:28977||1:28980||1:28981||1:28982||1:28983||1:28984||1:28985||1:28986||1:28987||1:28988||1:29030||1:29031||1:29126||1:29127||1:29167||1:29174||1:29216||1:29217||1:29220||1:29259||1:29260||1:29261||1:29262||1:29263||1:29300||1:29349||1:29378||1:29379||1:29380||1:29395||1:29396||1:29397||1:29398||1:29399||1:29454||1:29455||1:29456||1:29457||1:29459||1:29567||1:29568||1:29569||1:29664||1:29665||1:29666||1:29760||1:29761||1:29762||1:29763||1:29764||1:29765||1:29766||1:29767||1:29768||1:29769||1:29770||1:29771||1:29772||1:29773||1:29774||1:29775||1:29776||1:29777||1:29778||1:29779||1:29780||1:29781||1:29782||1:29783||1:29784||1:29785||1:29786||1:29787||1:29788||1:29789||1:29790||1:29791||1:29816||1:29817||1:29824||1:29825||1:29826||1:29827||1:29828||1:29829||1:29830||1:29831||1:29832||1:29833||1:29837||1:29838||1:29839||1:29840||1:29841||1:29842||1:29843||1:29844||1:29845||1:29846||1:29847||1:29848||1:29849||1:29850||1:29851||1:29852||1:29853||1:29854||1:29855||1:29856||1:29857||1:29858||1:29862||1:29863||1:29864||1:29865||1:29867||1:29868||1:29869||1:29870||1:29875||1:29882||1:29884||1:29887||1:29891||1:29894||1:29895||1:29897||1:29981||1:30067||1:30068||1:30069||1:30070||1:30071||1:30072||1:30087||1:30091||1:30191||1:30196||1:30198||1:30234||1:30255||1:30256||1:30257||1:30258||1:30259||1:30260||1:30261||1:30262||1:30288||1:30336||1:30481||1:30482||1:30483||1:30484||1:30510||1:30511||1:30512||1:30513||1:30514||1:30515||1:30516||1:30517||1:30520||1:30521||1:30522||1:30523||1:30524||1:30525||1:30543||1:30544||1:30545||1:30546||1:30547||1:30548||1:30549||1:30550||1:30551||1:30552||1:30566||1:30567||1:30568||1:30569||1:30570||1:30772||1:30777||1:30778||1:30779||1:30780||1:30781||1:30782||1:30783||1:30784||1:30785||1:30786||1:30787||1:30788||1:30914||1:30915||1:30918||1:30919||1:30920||1:30948||1:30949||1:30997||1:30998||1:30999||1:31000||1:31001||1:31020||1:31034||1:31035||1:31036||1:31053||1:31070||1:31084||1:31090||1:31112||1:31113||1:31136||1:31221||1:31222||1:31243||1:31244||1:31260||1:31261||1:31262||1:31293||1:31294||1:31295||1:31315||1:31405||1:31423||1:31442||1:31449||1:31450||1:31452||1:31453||1:31454||1:31455||1:31456||1:31457||1:31458||1:31463||1:31464||1:31465||1:31466||1:31467||1:31468||1:31472||1:31507||1:31530||1:31531||1:31593||1:31600||1:31603||1:31604||1:31605||1:31606||1:31607||1:31639||1:31640||1:31641||1:31642||1:31644||1:31649||1:31680||1:31681||1:31682||1:31683||1:31719||1:31820||1:31824||1:31825||1:31826||1:31827||1:31829||1:31830||1:31831||1:31916||1:31917||1:31918||1:31919||1:31920||1:31921||1:31922||1:31923||1:31924||1:31964||1:31965||1:31966||1:31967||1:31970||1:31971||1:31972||1:31973||1:31975||1:31976||1:31977||1:31978||1:31985||1:31990||1:31991||1:32008||1:32009||1:32010||1:32011||1:32038||1:32039||1:32041||1:32042||1:32043||1:32065||1:32066||1:32067||1:32069||1:32072||1:32073||1:32074||1:32130||1:32176||1:32177||1:32178||1:32179||1:32180||1:32181||1:32192||1:32196||1:32225||1:32244||1:32250||1:32260||1:32309||1:32335||1:32336||1:32366||1:32367||1:32370||1:32374||1:32385||1:32583||1:32584||1:32604||1:32605||1:32606||1:32607||1:32608||1:32645||1:32646||1:32652||1:32653||1:32654||1:32655||1:32656||1:32657||1:32658||1:32659||1:32660||1:32661||1:32662||1:32663||1:32664||1:32665||1:32666||1:32667||1:32670||1:32674||1:32776||1:32823||1:32824||1:32825||1:32826||1:32827||1:32845||1:32846||1:32847||1:32848||1:32849||1:32850||1:32851||1:32852||1:32853||1:32888||1:32889||1:32911||1:32912||1:32913||1:32914||1:32915||1:32916||1:32917||1:32918||1:32919||1:32920||1:32921||1:32922||1:32923||1:32924||1:32925||1:32926||1:32927||1:32928||1:32929||1:32930||1:32931||1:32932||1:32933||1:32934||1:32935||1:32936||1:32937||1:32938||1:32956||1:32957||1:32958||1:32976||1:32977||1:33047||1:33058||1:33059||1:33060||1:33153||1:33207||1:33212||1:33219||1:33220||1:33221||1:33222||1:33223||1:33224||1:33227||1:33228||1:33282||1:33443||1:33444||1:33449||1:33450||1:33452||1:33453||1:33457||1:33519||1:33520||1:33521||1:33522||1:33523||1:33524||1:33547||1:33560||1:33646||1:33647||1:33648||1:33649||1:33650||1:33677||1:33678||1:33740||1:33815||1:33816||1:33822||1:33833||1:33834||1:33835||1:33851||1:33852||1:33885||1:34047||1:34119||1:34120||1:34121||1:34122||1:34125||1:34126||1:34127||1:34136||1:34137||1:34140||1:34144||1:34145||1:34146||1:34236||1:34237||1:34261||1:34262||1:34263||1:34287||1:34292||1:34307||1:34308||1:34309||1:34310||1:34311||1:34312||1:34313||1:34314||1:34315||1:34316||1:34317||1:34318||1:34365||1:34366||1:34367||1:34368||1:34370||1:34452||1:34453||1:34461||1:34462||1:34500||1:34501||1:34622||1:34843||1:34852||1:34864||1:34868||1:34917||1:34931||1:34950||1:34958||1:34959||1:34964||1:34994||1:34995||1:34996||1:34997||1:35030||1:35068||1:35076||1:35312||1:35344||1:35353||1:35386||1:35387||1:35388||1:35389||1:35390||1:35391||1:35392||1:35393||1:35394||1:35549||1:35733||1:35745||1:35746||1:35749||1:35750||1:36064||1:36065||1:36066||1:36107||1:36108||1:36202||1:36611||1:36612||1:36914||1:37045||1:37245||1:37467||1:37521||1:37522||1:37523||1:37552||1:37646||1:37647||1:37730||1:37731||1:37733||1:37814||1:37815||1:37816||1:37834||1:37835||1:38255||1:38256||1:38257||1:38258||1:38331||1:38333||1:38353||1:38354||1:38355||1:38357||1:38359||1:38378||1:38379||1:38380||1:38385||1:38386||1:38387||1:38388||1:38509||1:38510||1:38514||1:38515||1:38516||1:38517||1:38557||1:38558||1:38559||1:38560||1:38561||1:38562||1:38563||1:38564||1:38565||1:38566||1:38580||1:38581||1:38584||1:38585||1:38586||1:38587||1:38588||1:38594||1:38603||1:38606||1:38607||1:38608||1:38610||1:38619||1:38620||1:38621||1:38886||1:38887||1:38888||1:38890||1:38891||1:38950||1:38951||1:38952||1:38953||1:38993||1:39064||1:39080||1:39106||1:39107||1:39159||1:39160||1:39163||1:39164||1:39409||1:39410||1:39411||1:39526||1:39527||1:39528||1:39529||1:39573||1:39574||1:39575||1:39576||1:39577||1:39578||1:39579||1:39580||1:39581||1:39582||1:39583||1:39705||1:39729||1:39737||1:39738||1:39800||1:39801||1:39911||1:40011||1:40015||1:40184||1:40220||1:40221||1:40222||1:40234||1:40235||1:40251||1:40252||1:40260||1:40541||1:40549||1:40550||1:40551||1:40559||1:40762||1:40763||1:40764||1:40816||1:40827||1:40831||1:40832||1:40833||1:40834||1:40835||1:40836||1:40839||1:40840||1:40841||1:40842||1:40866||1:40888||1:40896||1:40907 + Credit Card,Email Addresses,U.S. Phone Numbers,U.S. Social Security Numbers + 25 + off + on + + + off + off + off + off + off + off + off + off + off + off + 128K + 168 + on + 1518 + 22 + 20 + 19600 + 100 + on + on + on + on + + off + off + ips_mode_legacy + on + off + off + + + lan + off + 12557 + + ac-bnfa + on + default + default + lansuppress_5846cf19d6d18 + on + off + off + on + off + 10000 + 10 + 16000 + on + stateful + off + on + on + on + 20 + + + default + all + 256 + no + yes + yes + + + + + + + default + all + default + no + yes + no + 100 + + + on + on + on + on + on + on + on + on + all + all + 10000000 + medium + on + off + 150994944 + 838860 + + + default + all + all + off + off + off + 65535 + on + 1460 + on + off + on + on + on + on + on + on + off + off + 200 + -1 + 0 + 0 + 0 + default + + + 8192 + 4194304 + on + + + default + all + bsd + 60 + 1 + on + 0 + 0 + + + on + off + 1048576 + on + 262144 + on + 131072 + 30 + off + 65536 + 30 + 8388608 + + + default + all + bsd + 30 + 1048576 + off + 0 + 2621 + off + 0 + off + 0 + off + off + off + default + default + none + + + GPLv2_community.rules||emerging-scan.rules + on + balanced + on + 838860 + 0 + 0 + 0 + 0 + 838860 + 0 + 0 + 0 + 0 + 838860 + 838860 + 0 + 0 + 0 + 0 + 1464 + on + on + on + on + on + off + 256 + on + 300 + on + both + default + log_auth + log_alert + 1:105||1:108||1:110||1:115||1:117||1:118||1:119||1:121||1:141||1:144||1:146||1:147||1:152||1:157||1:158||1:161||1:162||1:163||1:185||1:195||1:208||1:209||1:210||1:211||1:212||1:213||1:214||1:215||1:216||1:217||1:218||1:219||1:220||1:221||1:222||1:223||1:224||1:225||1:226||1:227||1:228||1:229||1:230||1:231||1:232||1:233||1:234||1:235||1:236||1:237||1:238||1:239||1:240||1:243||1:244||1:245||1:246||1:247||1:248||1:250||1:251||1:253||1:254||1:255||1:256||1:257||1:258||1:259||1:260||1:261||1:262||1:264||1:265||1:266||1:267||1:271||1:272||1:274||1:276||1:277||1:278||1:279||1:281||1:283||1:286||1:287||1:288||1:289||1:290||1:292||1:300||1:301||1:302||1:303||1:304||1:305||1:306||1:307||1:308||1:309||1:310||1:311||1:313||1:314||1:315||1:316||1:317||1:320||1:321||1:322||1:323||1:324||1:326||1:327||1:328||1:330||1:331||1:332||1:333||1:334||1:335||1:336||1:337||1:353||1:354||1:355||1:356||1:357||1:358||1:359||1:360||1:361||1:362||1:363||1:364||1:365||1:366||1:368||1:369||1:370||1:371||1:372||1:373||1:374||1:375||1:376||1:377||1:378||1:379||1:380||1:381||1:382||1:384||1:385||1:386||1:387||1:388||1:389||1:390||1:391||1:392||1:393||1:394||1:395||1:396||1:397||1:398||1:399||1:400||1:401||1:402||1:403||1:404||1:405||1:406||1:407||1:408||1:409||1:410||1:411||1:412||1:413||1:414||1:415||1:416||1:417||1:418||1:419||1:420||1:421||1:422||1:423||1:424||1:425||1:426||1:427||1:428||1:429||1:430||1:431||1:432||1:433||1:436||1:437||1:438||1:439||1:440||1:441||1:443||1:445||1:446||1:448||1:449||1:450||1:451||1:452||1:453||1:454||1:456||1:457||1:458||1:459||1:460||1:461||1:462||1:463||1:465||1:466||1:467||1:474||1:476||1:480||1:481||1:482||1:483||1:484||1:489||1:490||1:491||1:492||1:493||1:494||1:495||1:497||1:498||1:505||1:507||1:508||1:509||1:510||1:512||1:514||1:516||1:517||1:518||1:519||1:520||1:529||1:530||1:534||1:535||1:540||1:541||1:542||1:543||1:544||1:545||1:546||1:547||1:548||1:553||1:554||1:555||1:556||1:557||1:560||1:566||1:567||1:568||1:569||1:572||1:574||1:575||1:576||1:577||1:578||1:579||1:580||1:581||1:582||1:583||1:584||1:585||1:586||1:587||1:588||1:589||1:590||1:591||1:593||1:595||1:598||1:599||1:601||1:602||1:603||1:604||1:605||1:606||1:607||1:608||1:609||1:610||1:611||1:612||1:613||1:614||1:616||1:619||1:622||1:626||1:627||1:630||1:631||1:632||1:634||1:635||1:636||1:637||1:638||1:639||1:640||1:641||1:642||1:643||1:644||1:645||1:646||1:647||1:648||1:649||1:650||1:652||1:654||1:655||1:657||1:658||1:659||1:660||1:661||1:662||1:663||1:664||1:665||1:667||1:668||1:669||1:670||1:671||1:672||1:673||1:676||1:677||1:678||1:679||1:681||1:683||1:684||1:685||1:686||1:687||1:688||1:689||1:691||1:692||1:693||1:694||1:695||1:704||1:709||1:710||1:711||1:712||1:713||1:714||1:715||1:717||1:718||1:719||1:803||1:804||1:805||1:806||1:807||1:808||1:809||1:810||1:811||1:812||1:813||1:815||1:817||1:818||1:819||1:820||1:821||1:823||1:824||1:825||1:826||1:827||1:828||1:829||1:832||1:833||1:834||1:835||1:836||1:837||1:838||1:839||1:840||1:842||1:843||1:844||1:845||1:846||1:847||1:848||1:849||1:850||1:851||1:852||1:853||1:854||1:856||1:857||1:858||1:859||1:860||1:861||1:862||1:863||1:864||1:865||1:866||1:867||1:868||1:869||1:870||1:871||1:872||1:875||1:877||1:878||1:879||1:880||1:881||1:882||1:883||1:885||1:886||1:887||1:888||1:889||1:890||1:891||1:892||1:894||1:895||1:896||1:897||1:898||1:899||1:900||1:901||1:902||1:903||1:904||1:905||1:906||1:907||1:908||1:909||1:910||1:911||1:912||1:913||1:914||1:915||1:916||1:917||1:918||1:919||1:920||1:921||1:922||1:923||1:924||1:925||1:926||1:927||1:928||1:929||1:930||1:931||1:932||1:933||1:935||1:936||1:937||1:939||1:940||1:941||1:942||1:943||1:944||1:945||1:946||1:947||1:948||1:949||1:950||1:951||1:952||1:953||1:954||1:955||1:956||1:957||1:958||1:959||1:960||1:961||1:962||1:963||1:964||1:965||1:966||1:967||1:968||1:969||1:971||1:973||1:974||1:975||1:976||1:977||1:978||1:979||1:980||1:984||1:985||1:986||1:987||1:989||1:990||1:991||1:992||1:993||1:994||1:995||1:996||1:997||1:998||1:999||1:1000||1:1001||1:1002||1:1003||1:1004||1:1005||1:1007||1:1008||1:1009||1:1010||1:1011||1:1012||1:1013||1:1015||1:1016||1:1017||1:1018||1:1019||1:1020||1:1021||1:1022||1:1023||1:1024||1:1025||1:1026||1:1027||1:1028||1:1029||1:1030||1:1031||1:1032||1:1033||1:1034||1:1035||1:1036||1:1037||1:1038||1:1039||1:1040||1:1041||1:1042||1:1043||1:1044||1:1045||1:1046||1:1047||1:1048||1:1050||1:1051||1:1052||1:1053||1:1054||1:1056||1:1057||1:1058||1:1059||1:1060||1:1061||1:1062||1:1064||1:1065||1:1066||1:1067||1:1068||1:1069||1:1070||1:1071||1:1072||1:1073||1:1075||1:1076||1:1077||1:1078||1:1079||1:1080||1:1081||1:1082||1:1083||1:1084||1:1085||1:1086||1:1088||1:1089||1:1090||1:1091||1:1092||1:1093||1:1095||1:1096||1:1097||1:1098||1:1099||1:1100||1:1101||1:1102||1:1103||1:1105||1:1106||1:1107||1:1108||1:1109||1:1110||1:1111||1:1115||1:1116||1:1117||1:1118||1:1119||1:1120||1:1122||1:1123||1:1124||1:1125||1:1126||1:1127||1:1128||1:1129||1:1130||1:1131||1:1132||1:1133||1:1134||1:1136||1:1137||1:1139||1:1140||1:1141||1:1142||1:1145||1:1146||1:1147||1:1148||1:1149||1:1150||1:1151||1:1152||1:1153||1:1154||1:1155||1:1156||1:1157||1:1158||1:1159||1:1160||1:1161||1:1162||1:1163||1:1164||1:1165||1:1166||1:1167||1:1168||1:1172||1:1173||1:1174||1:1175||1:1177||1:1178||1:1179||1:1180||1:1181||1:1183||1:1184||1:1185||1:1186||1:1187||1:1188||1:1189||1:1190||1:1191||1:1192||1:1193||1:1194||1:1195||1:1196||1:1197||1:1198||1:1199||1:1200||1:1201||1:1202||1:1204||1:1205||1:1206||1:1207||1:1208||1:1209||1:1211||1:1212||1:1213||1:1214||1:1215||1:1216||1:1217||1:1218||1:1219||1:1220||1:1221||1:1222||1:1224||1:1225||1:1226||1:1229||1:1230||1:1231||1:1232||1:1234||1:1235||1:1239||1:1240||1:1241||1:1242||1:1243||1:1244||1:1245||1:1248||1:1249||1:1250||1:1252||1:1253||1:1254||1:1255||1:1256||1:1257||1:1259||1:1261||1:1262||1:1263||1:1264||1:1265||1:1267||1:1268||1:1269||1:1270||1:1271||1:1272||1:1273||1:1274||1:1275||1:1276||1:1277||1:1279||1:1280||1:1281||1:1283||1:1284||1:1285||1:1286||1:1288||1:1289||1:1290||1:1291||1:1292||1:1295||1:1300||1:1301||1:1302||1:1303||1:1304||1:1305||1:1307||1:1308||1:1309||1:1323||1:1324||1:1325||1:1326||1:1327||1:1374||1:1375||1:1376||1:1377||1:1378||1:1379||1:1380||1:1381||1:1382||1:1384||1:1385||1:1386||1:1387||1:1388||1:1390||1:1392||1:1393||1:1394||1:1395||1:1396||1:1397||1:1398||1:1399||1:1400||1:1401||1:1402||1:1405||1:1406||1:1407||1:1408||1:1409||1:1410||1:1411||1:1412||1:1413||1:1414||1:1415||1:1416||1:1417||1:1418||1:1419||1:1420||1:1421||1:1422||1:1423||1:1425||1:1426||1:1427||1:1428||1:1432||1:1433||1:1434||1:1435||1:1436||1:1437||1:1439||1:1440||1:1441||1:1442||1:1443||1:1444||1:1445||1:1446||1:1447||1:1448||1:1450||1:1451||1:1452||1:1453||1:1454||1:1455||1:1456||1:1457||1:1458||1:1459||1:1460||1:1461||1:1462||1:1463||1:1464||1:1465||1:1466||1:1467||1:1468||1:1469||1:1470||1:1471||1:1472||1:1473||1:1474||1:1475||1:1476||1:1478||1:1479||1:1480||1:1481||1:1482||1:1483||1:1485||1:1486||1:1487||1:1488||1:1489||1:1490||1:1491||1:1492||1:1493||1:1494||1:1495||1:1496||1:1499||1:1500||1:1501||1:1502||1:1503||1:1504||1:1505||1:1506||1:1507||1:1508||1:1509||1:1510||1:1511||1:1512||1:1513||1:1514||1:1515||1:1516||1:1517||1:1518||1:1519||1:1520||1:1521||1:1522||1:1523||1:1524||1:1525||1:1526||1:1527||1:1528||1:1529||1:1531||1:1532||1:1533||1:1534||1:1535||1:1536||1:1537||1:1538||1:1539||1:1540||1:1541||1:1542||1:1543||1:1544||1:1545||1:1546||1:1547||1:1548||1:1549||1:1550||1:1551||1:1552||1:1554||1:1555||1:1556||1:1557||1:1558||1:1559||1:1560||1:1562||1:1563||1:1564||1:1565||1:1566||1:1567||1:1568||1:1569||1:1570||1:1571||1:1572||1:1573||1:1574||1:1575||1:1576||1:1577||1:1578||1:1579||1:1580||1:1581||1:1582||1:1583||1:1584||1:1585||1:1586||1:1587||1:1588||1:1589||1:1590||1:1591||1:1592||1:1593||1:1594||1:1595||1:1597||1:1598||1:1599||1:1600||1:1601||1:1602||1:1603||1:1604||1:1605||1:1606||1:1607||1:1608||1:1610||1:1611||1:1612||1:1613||1:1614||1:1615||1:1616||1:1617||1:1618||1:1621||1:1622||1:1623||1:1624||1:1625||1:1626||1:1628||1:1631||1:1634||1:1635||1:1636||1:1637||1:1638||1:1639||1:1640||1:1641||1:1642||1:1643||1:1644||1:1645||1:1646||1:1648||1:1649||1:1650||1:1651||1:1652||1:1654||1:1655||1:1656||1:1657||1:1658||1:1659||1:1660||1:1661||1:1662||1:1663||1:1664||1:1666||1:1667||1:1668||1:1669||1:1670||1:1671||1:1672||1:1673||1:1674||1:1675||1:1676||1:1677||1:1678||1:1679||1:1680||1:1681||1:1682||1:1683||1:1684||1:1685||1:1686||1:1687||1:1688||1:1689||1:1690||1:1691||1:1692||1:1693||1:1694||1:1695||1:1696||1:1697||1:1700||1:1701||1:1702||1:1703||1:1704||1:1705||1:1706||1:1707||1:1708||1:1709||1:1710||1:1711||1:1712||1:1713||1:1714||1:1715||1:1716||1:1717||1:1718||1:1719||1:1720||1:1721||1:1722||1:1723||1:1724||1:1725||1:1726||1:1727||1:1729||1:1730||1:1731||1:1732||1:1733||1:1734||1:1735||1:1736||1:1737||1:1738||1:1739||1:1740||1:1741||1:1742||1:1743||1:1744||1:1745||1:1746||1:1747||1:1750||1:1751||1:1752||1:1753||1:1754||1:1755||1:1756||1:1757||1:1759||1:1762||1:1763||1:1764||1:1765||1:1766||1:1767||1:1769||1:1770||1:1771||1:1772||1:1773||1:1774||1:1775||1:1776||1:1777||1:1778||1:1787||1:1788||1:1789||1:1790||1:1792||1:1802||1:1803||1:1804||1:1805||1:1806||1:1807||1:1808||1:1809||1:1810||1:1811||1:1812||1:1813||1:1814||1:1815||1:1816||1:1817||1:1818||1:1819||1:1820||1:1821||1:1822||1:1823||1:1824||1:1825||1:1826||1:1827||1:1828||1:1829||1:1830||1:1831||1:1832||1:1834||1:1835||1:1838||1:1839||1:1840||1:1841||1:1842||1:1843||1:1844||1:1845||1:1846||1:1847||1:1848||1:1849||1:1850||1:1851||1:1852||1:1853||1:1854||1:1855||1:1856||1:1857||1:1858||1:1859||1:1860||1:1861||1:1862||1:1864||1:1865||1:1866||1:1867||1:1868||1:1869||1:1870||1:1871||1:1872||1:1873||1:1874||1:1875||1:1876||1:1877||1:1878||1:1879||1:1880||1:1881||1:1882||1:1887||1:1888||1:1889||1:1890||1:1891||1:1892||1:1893||1:1894||1:1895||1:1896||1:1897||1:1898||1:1899||1:1900||1:1901||1:1902||1:1903||1:1904||1:1905||1:1906||1:1907||1:1908||1:1909||1:1910||1:1911||1:1912||1:1913||1:1914||1:1915||1:1916||1:1917||1:1918||1:1919||1:1920||1:1921||1:1922||1:1923||1:1924||1:1925||1:1926||1:1927||1:1928||1:1930||1:1931||1:1932||1:1933||1:1936||1:1937||1:1938||1:1939||1:1940||1:1941||1:1942||1:1943||1:1944||1:1946||1:1947||1:1948||1:1949||1:1950||1:1951||1:1952||1:1953||1:1954||1:1955||1:1956||1:1957||1:1958||1:1959||1:1960||1:1961||1:1962||1:1963||1:1964||1:1965||1:1966||1:1967||1:1968||1:1969||1:1970||1:1971||1:1972||1:1973||1:1974||1:1975||1:1976||1:1977||1:1978||1:1979||1:1980||1:1981||1:1982||1:1983||1:1984||1:1985||1:1986||1:1987||1:1988||1:1989||1:1990||1:1991||1:1992||1:1993||1:1994||1:1995||1:1996||1:1997||1:1998||1:1999||1:2000||1:2001||1:2002||1:2003||1:2004||1:2005||1:2006||1:2007||1:2008||1:2009||1:2010||1:2011||1:2012||1:2013||1:2014||1:2015||1:2016||1:2017||1:2018||1:2019||1:2020||1:2021||1:2022||1:2023||1:2024||1:2025||1:2026||1:2027||1:2028||1:2029||1:2030||1:2031||1:2032||1:2033||1:2034||1:2035||1:2036||1:2037||1:2038||1:2039||1:2040||1:2041||1:2042||1:2043||1:2044||1:2045||1:2046||1:2047||1:2049||1:2050||1:2051||1:2052||1:2053||1:2054||1:2055||1:2056||1:2057||1:2058||1:2059||1:2060||1:2061||1:2062||1:2063||1:2065||1:2066||1:2067||1:2068||1:2069||1:2070||1:2071||1:2072||1:2073||1:2074||1:2075||1:2076||1:2077||1:2078||1:2079||1:2080||1:2081||1:2082||1:2083||1:2084||1:2085||1:2086||1:2087||1:2088||1:2089||1:2090||1:2091||1:2092||1:2093||1:2094||1:2095||1:2100||1:2101||1:2103||1:2104||1:2105||1:2106||1:2107||1:2108||1:2109||1:2110||1:2111||1:2112||1:2113||1:2114||1:2115||1:2116||1:2117||1:2118||1:2119||1:2120||1:2121||1:2122||1:2123||1:2124||1:2125||1:2126||1:2127||1:2128||1:2129||1:2130||1:2131||1:2132||1:2133||1:2134||1:2135||1:2136||1:2137||1:2138||1:2139||1:2140||1:2141||1:2142||1:2143||1:2144||1:2145||1:2146||1:2147||1:2148||1:2149||1:2150||1:2151||1:2152||1:2153||1:2154||1:2155||1:2156||1:2157||1:2158||1:2159||1:2176||1:2177||1:2178||1:2179||1:2180||1:2181||1:2183||1:2184||1:2190||1:2191||1:2194||1:2195||1:2196||1:2197||1:2198||1:2199||1:2200||1:2201||1:2202||1:2203||1:2204||1:2205||1:2206||1:2207||1:2208||1:2209||1:2210||1:2211||1:2212||1:2213||1:2214||1:2215||1:2216||1:2217||1:2218||1:2219||1:2220||1:2221||1:2222||1:2223||1:2224||1:2225||1:2226||1:2227||1:2228||1:2229||1:2230||1:2231||1:2232||1:2233||1:2234||1:2235||1:2236||1:2237||1:2238||1:2239||1:2240||1:2241||1:2242||1:2243||1:2244||1:2245||1:2246||1:2247||1:2248||1:2249||1:2250||1:2252||1:2253||1:2255||1:2256||1:2257||1:2258||1:2259||1:2260||1:2261||1:2262||1:2263||1:2264||1:2265||1:2266||1:2267||1:2268||1:2269||1:2270||1:2271||1:2272||1:2273||1:2274||1:2275||1:2276||1:2277||1:2278||1:2279||1:2280||1:2281||1:2282||1:2283||1:2284||1:2285||1:2286||1:2287||1:2288||1:2289||1:2290||1:2291||1:2292||1:2293||1:2294||1:2295||1:2296||1:2297||1:2298||1:2299||1:2300||1:2301||1:2302||1:2303||1:2304||1:2305||1:2306||1:2307||1:2317||1:2318||1:2319||1:2320||1:2321||1:2322||1:2323||1:2324||1:2325||1:2326||1:2327||1:2328||1:2329||1:2330||1:2331||1:2332||1:2333||1:2334||1:2335||1:2337||1:2338||1:2339||1:2340||1:2341||1:2342||1:2343||1:2344||1:2345||1:2346||1:2347||1:2353||1:2354||1:2355||1:2356||1:2357||1:2358||1:2359||1:2360||1:2361||1:2362||1:2363||1:2364||1:2365||1:2366||1:2367||1:2368||1:2369||1:2370||1:2371||1:2372||1:2373||1:2374||1:2375||1:2376||1:2377||1:2378||1:2379||1:2380||1:2381||1:2382||1:2383||1:2386||1:2388||1:2389||1:2390||1:2391||1:2392||1:2393||1:2394||1:2395||1:2396||1:2397||1:2398||1:2399||1:2400||1:2401||1:2402||1:2403||1:2404||1:2405||1:2406||1:2407||1:2408||1:2409||1:2410||1:2411||1:2412||1:2413||1:2414||1:2415||1:2416||1:2417||1:2418||1:2419||1:2420||1:2422||1:2423||1:2424||1:2425||1:2426||1:2427||1:2428||1:2429||1:2430||1:2431||1:2432||1:2433||1:2434||1:2435||1:2436||1:2437||1:2438||1:2439||1:2440||1:2441||1:2446||1:2447||1:2448||1:2449||1:2450||1:2451||1:2452||1:2453||1:2454||1:2455||1:2456||1:2457||1:2458||1:2459||1:2460||1:2461||1:2462||1:2463||1:2464||1:2474||1:2484||1:2485||1:2486||1:2487||1:2488||1:2489||1:2490||1:2508||1:2511||1:2523||1:2545||1:2546||1:2547||1:2548||1:2549||1:2550||1:2551||1:2552||1:2553||1:2554||1:2555||1:2556||1:2557||1:2558||1:2559||1:2560||1:2561||1:2562||1:2563||1:2564||1:2565||1:2566||1:2567||1:2568||1:2569||1:2570||1:2571||1:2572||1:2573||1:2574||1:2575||1:2576||1:2577||1:2578||1:2579||1:2580||1:2581||1:2582||1:2583||1:2584||1:2585||1:2587||1:2588||1:2589||1:2597||1:2598||1:2599||1:2601||1:2603||1:2605||1:2606||1:2608||1:2609||1:2611||1:2612||1:2614||1:2615||1:2617||1:2619||1:2621||1:2624||1:2626||1:2627||1:2629||1:2633||1:2637||1:2639||1:2641||1:2643||1:2644||1:2645||1:2649||1:2650||1:2651||1:2652||1:2654||1:2655||1:2656||1:2657||1:2663||1:2664||1:2665||1:2666||1:2667||1:2668||1:2669||1:2670||1:2671||1:2672||1:2673||1:2674||1:2675||1:2677||1:2678||1:2679||1:2680||1:2681||1:2682||1:2683||1:2684||1:2685||1:2686||1:2687||1:2688||1:2689||1:2690||1:2691||1:2692||1:2693||1:2694||1:2695||1:2696||1:2697||1:2698||1:2699||1:2701||1:2702||1:2703||1:2704||1:2705||1:2707||1:2708||1:2709||1:2711||1:2712||1:2713||1:2714||1:2715||1:2716||1:2717||1:2718||1:2719||1:2720||1:2721||1:2722||1:2723||1:2724||1:2725||1:2726||1:2727||1:2728||1:2729||1:2730||1:2731||1:2732||1:2733||1:2734||1:2735||1:2736||1:2737||1:2738||1:2739||1:2740||1:2741||1:2742||1:2743||1:2744||1:2745||1:2746||1:2747||1:2748||1:2749||1:2750||1:2751||1:2752||1:2753||1:2754||1:2755||1:2756||1:2757||1:2758||1:2759||1:2760||1:2761||1:2762||1:2763||1:2764||1:2765||1:2766||1:2767||1:2768||1:2769||1:2770||1:2771||1:2772||1:2773||1:2774||1:2775||1:2776||1:2777||1:2778||1:2779||1:2780||1:2781||1:2782||1:2783||1:2784||1:2785||1:2786||1:2787||1:2788||1:2789||1:2790||1:2791||1:2792||1:2793||1:2794||1:2795||1:2796||1:2797||1:2798||1:2799||1:2800||1:2801||1:2802||1:2803||1:2804||1:2805||1:2806||1:2807||1:2808||1:2809||1:2810||1:2811||1:2812||1:2813||1:2814||1:2815||1:2816||1:2817||1:2818||1:2819||1:2820||1:2821||1:2822||1:2823||1:2824||1:2825||1:2826||1:2827||1:2828||1:2829||1:2830||1:2831||1:2832||1:2833||1:2834||1:2835||1:2836||1:2837||1:2838||1:2839||1:2840||1:2841||1:2842||1:2843||1:2844||1:2845||1:2846||1:2847||1:2848||1:2849||1:2850||1:2851||1:2852||1:2853||1:2854||1:2855||1:2856||1:2857||1:2858||1:2859||1:2860||1:2861||1:2862||1:2863||1:2864||1:2865||1:2866||1:2867||1:2868||1:2869||1:2870||1:2871||1:2872||1:2873||1:2874||1:2875||1:2876||1:2877||1:2878||1:2879||1:2880||1:2881||1:2882||1:2883||1:2884||1:2885||1:2886||1:2887||1:2888||1:2889||1:2890||1:2891||1:2892||1:2893||1:2894||1:2895||1:2896||1:2897||1:2898||1:2899||1:2900||1:2901||1:2902||1:2903||1:2904||1:2905||1:2906||1:2907||1:2908||1:2909||1:2910||1:2911||1:2912||1:2913||1:2914||1:2915||1:2916||1:2917||1:2918||1:2919||1:2921||1:2922||1:2923||1:2924||1:2926||1:2927||1:2936||1:2942||1:3000||1:3001||1:3002||1:3003||1:3004||1:3005||1:3006||1:3007||1:3008||1:3009||1:3010||1:3011||1:3012||1:3013||1:3014||1:3015||1:3016||1:3017||1:3018||1:3019||1:3020||1:3021||1:3022||1:3023||1:3024||1:3025||1:3026||1:3027||1:3028||1:3029||1:3030||1:3031||1:3032||1:3033||1:3034||1:3035||1:3036||1:3037||1:3038||1:3039||1:3040||1:3041||1:3042||1:3043||1:3044||1:3045||1:3046||1:3047||1:3048||1:3049||1:3050||1:3051||1:3052||1:3053||1:3054||1:3055||1:3056||1:3057||1:3058||1:3061||1:3062||1:3063||1:3064||1:3065||1:3066||1:3067||1:3069||1:3070||1:3071||1:3072||1:3073||1:3074||1:3075||1:3076||1:3077||1:3078||1:3079||1:3080||1:3081||1:3082||1:3083||1:3084||1:3085||1:3086||1:3087||1:3088||1:3089||1:3114||1:3130||1:3131||1:3132||1:3133||1:3134||1:3135||1:3136||1:3137||1:3138||1:3139||1:3140||1:3141||1:3142||1:3143||1:3144||1:3145||1:3146||1:3147||1:3148||1:3149||1:3150||1:3151||1:3152||1:3153||1:3154||1:3155||1:3158||1:3159||1:3171||1:3192||1:3193||1:3194||1:3195||1:3196||1:3199||1:3200||1:3201||1:3218||1:3234||1:3235||1:3238||1:3239||1:3273||1:3274||1:3397||1:3398||1:3409||1:3441||1:3442||1:3453||1:3454||1:3455||1:3456||1:3457||1:3458||1:3459||1:3460||1:3461||1:3462||1:3463||1:3464||1:11968||1:16368||1:17904||1:19678||1:19964||1:20080||1:20221||1:21230||1:21246||1:21255||1:21256||1:21257||1:21266||1:21267||1:21327||1:21375||1:21417||1:21438||1:21442||1:21444||1:21475||1:21492||1:21562||1:21646||1:21818||1:21819||1:21820||1:21821||1:21822||1:21823||1:21824||1:21825||1:21826||1:21827||1:21828||1:21829||1:21830||1:21831||1:21832||1:21833||1:21834||1:21835||1:21836||1:21837||1:21838||1:21839||1:21840||1:21841||1:21842||1:21843||1:21844||1:21845||1:21846||1:21848||1:21849||1:21850||1:21851||1:22061||1:22063||1:22957||1:22958||1:22959||1:22960||1:23179||1:23481||1:23482||1:23492||1:23621||1:23636||1:24015||1:24017||1:24031||1:24032||1:24033||1:24034||1:24225||1:24251||1:24253||1:24254||1:24265||1:24598||1:24885||1:24886||1:25050||1:25054||1:25119||1:25224||1:25256||1:25257||1:25258||1:25259||1:25269||1:25271||1:25277||1:25471||1:25503||1:25504||1:25511||1:25518||1:25519||1:25520||1:25521||1:25522||1:25523||1:25524||1:25525||1:25577||1:25578||1:25579||1:25580||1:25627||1:25652||1:25660||1:25675||1:25765||1:25766||1:25807||1:25829||1:25854||1:25946||1:25947||1:25948||1:25949||1:26020||1:26023||1:26024||1:26075||1:26106||1:26203||1:26211||1:26212||1:26261||1:26264||1:26265||1:26286||1:26287||1:26288||1:26289||1:26319||1:26325||1:26327||1:26335||1:26353||1:26370||1:26371||1:26380||1:26381||1:26382||1:26395||1:26396||1:26398||1:26399||1:26400||1:26401||1:26402||1:26403||1:26404||1:26405||1:26406||1:26407||1:26408||1:26409||1:26410||1:26411||1:26412||1:26413||1:26467||1:26468||1:26469||1:26470||1:26480||1:26482||1:26483||1:26522||1:26526||1:26528||1:26533||1:26553||1:26554||1:26555||1:26556||1:26558||1:26560||1:26561||1:26562||1:26563||1:26576||1:26577||1:26578||1:26579||1:26580||1:26581||1:26582||1:26583||1:26585||1:26589||1:26612||1:26613||1:26614||1:26654||1:26655||1:26656||1:26657||1:26658||1:26659||1:26660||1:26695||1:26696||1:26697||1:26698||1:26712||1:26713||1:26714||1:26715||1:26718||1:26719||1:26720||1:26722||1:26723||1:26725||1:26726||1:26727||1:26728||1:26729||1:26730||1:26731||1:26732||1:26733||1:26734||1:26735||1:26736||1:26737||1:26738||1:26739||1:26740||1:26741||1:26742||1:26743||1:26744||1:26745||1:26746||1:26747||1:26748||1:26749||1:26750||1:26774||1:26775||1:26776||1:26779||1:26780||1:26781||1:26782||1:26811||1:26812||1:26814||1:26834||1:26835||1:26836||1:26837||1:26838||1:26842||1:26910||1:26911||1:26912||1:26913||1:26914||1:26915||1:26916||1:26917||1:26918||1:26919||1:26920||1:26923||1:26924||1:26925||1:26947||1:26948||1:26949||1:26950||1:26951||1:26965||1:26966||1:26968||1:26969||1:26970||1:26971||1:26984||1:26985||1:27017||1:27039||1:27040||1:27041||1:27042||1:27043||1:27044||1:27045||1:27047||1:27085||1:27086||1:27113||1:27144||1:27146||1:27155||1:27180||1:27181||1:27199||1:27200||1:27201||1:27203||1:27204||1:27246||1:27247||1:27248||1:27252||1:27253||1:27254||1:27255||1:27256||1:27257||1:27533||1:27534||1:27535||1:27537||1:27538||1:27565||1:27567||1:27596||1:27599||1:27625||1:27626||1:27627||1:27628||1:27629||1:27630||1:27631||1:27632||1:27633||1:27648||1:27649||1:27680||1:27707||1:27708||1:27726||1:27727||1:27728||1:27774||1:27775||1:27801||1:27802||1:27803||1:27804||1:27805||1:27865||1:27866||1:27899||1:27900||1:27901||1:27902||1:27903||1:27904||1:27907||1:27913||1:27914||1:27915||1:27916||1:27917||1:27918||1:27919||1:27964||1:27965||1:27966||1:27967||1:27968||1:28005||1:28006||1:28007||1:28008||1:28009||1:28010||1:28011||1:28012||1:28026||1:28028||1:28033||1:28034||1:28035||1:28036||1:28042||1:28044||1:28079||1:28080||1:28105||1:28106||1:28107||1:28114||1:28115||1:28116||1:28117||1:28118||1:28119||1:28120||1:28121||1:28122||1:28123||1:28147||1:28148||1:28152||1:28153||1:28154||1:28155||1:28156||1:28192||1:28193||1:28215||1:28233||1:28242||1:28255||1:28285||1:28291||1:28293||1:28294||1:28295||1:28296||1:28297||1:28300||1:28323||1:28324||1:28344||1:28345||1:28346||1:28404||1:28405||1:28406||1:28420||1:28421||1:28428||1:28429||1:28430||1:28445||1:28446||1:28450||1:28493||1:28538||1:28539||1:28540||1:28541||1:28542||1:28543||1:28552||1:28553||1:28554||1:28555||1:28556||1:28557||1:28800||1:28802||1:28803||1:28804||1:28805||1:28806||1:28807||1:28809||1:28810||1:28814||1:28815||1:28852||1:28859||1:28913||1:28918||1:28919||1:28930||1:28938||1:28939||1:28940||1:28945||1:28950||1:28951||1:28952||1:28953||1:28959||1:28960||1:28976||1:28977||1:28980||1:28981||1:28982||1:28983||1:28984||1:28985||1:28986||1:28987||1:28988||1:29030||1:29031||1:29126||1:29127||1:29167||1:29174||1:29216||1:29217||1:29220||1:29259||1:29260||1:29261||1:29262||1:29263||1:29300||1:29349||1:29378||1:29379||1:29380||1:29395||1:29396||1:29397||1:29398||1:29399||1:29454||1:29455||1:29456||1:29457||1:29459||1:29567||1:29568||1:29569||1:29664||1:29665||1:29666||1:29760||1:29761||1:29762||1:29763||1:29764||1:29765||1:29766||1:29767||1:29768||1:29769||1:29770||1:29771||1:29772||1:29773||1:29774||1:29775||1:29776||1:29777||1:29778||1:29779||1:29780||1:29781||1:29782||1:29783||1:29784||1:29785||1:29786||1:29787||1:29788||1:29789||1:29790||1:29791||1:29816||1:29817||1:29824||1:29825||1:29826||1:29827||1:29828||1:29829||1:29830||1:29831||1:29832||1:29833||1:29837||1:29838||1:29839||1:29840||1:29841||1:29842||1:29843||1:29844||1:29845||1:29846||1:29847||1:29848||1:29849||1:29850||1:29851||1:29852||1:29853||1:29854||1:29855||1:29856||1:29857||1:29858||1:29862||1:29863||1:29864||1:29865||1:29867||1:29868||1:29869||1:29870||1:29875||1:29882||1:29884||1:29887||1:29891||1:29894||1:29895||1:29897||1:29981||1:30067||1:30068||1:30069||1:30070||1:30071||1:30072||1:30087||1:30091||1:30191||1:30196||1:30198||1:30234||1:30255||1:30256||1:30257||1:30258||1:30259||1:30260||1:30261||1:30262||1:30288||1:30336||1:30481||1:30482||1:30483||1:30484||1:30510||1:30511||1:30512||1:30513||1:30514||1:30515||1:30516||1:30517||1:30520||1:30521||1:30522||1:30523||1:30524||1:30525||1:30543||1:30544||1:30545||1:30546||1:30547||1:30548||1:30549||1:30550||1:30551||1:30552||1:30566||1:30567||1:30568||1:30569||1:30570||1:30772||1:30777||1:30778||1:30779||1:30780||1:30781||1:30782||1:30783||1:30784||1:30785||1:30786||1:30787||1:30788||1:30914||1:30915||1:30918||1:30919||1:30920||1:30948||1:30949||1:30997||1:30998||1:30999||1:31000||1:31001||1:31020||1:31034||1:31035||1:31036||1:31053||1:31070||1:31084||1:31090||1:31112||1:31113||1:31136||1:31221||1:31222||1:31243||1:31244||1:31260||1:31261||1:31262||1:31293||1:31294||1:31295||1:31315||1:31405||1:31423||1:31442||1:31449||1:31450||1:31452||1:31453||1:31454||1:31455||1:31456||1:31457||1:31458||1:31463||1:31464||1:31465||1:31466||1:31467||1:31468||1:31472||1:31507||1:31530||1:31531||1:31593||1:31600||1:31603||1:31604||1:31605||1:31606||1:31607||1:31639||1:31640||1:31641||1:31642||1:31644||1:31649||1:31680||1:31681||1:31682||1:31683||1:31719||1:31820||1:31824||1:31825||1:31826||1:31827||1:31829||1:31830||1:31831||1:31916||1:31917||1:31918||1:31919||1:31920||1:31921||1:31922||1:31923||1:31924||1:31964||1:31965||1:31966||1:31967||1:31970||1:31971||1:31972||1:31973||1:31975||1:31976||1:31977||1:31978||1:31985||1:31990||1:31991||1:32008||1:32009||1:32010||1:32011||1:32038||1:32039||1:32041||1:32042||1:32043||1:32065||1:32066||1:32067||1:32069||1:32072||1:32073||1:32074||1:32130||1:32176||1:32177||1:32178||1:32179||1:32180||1:32181||1:32192||1:32196||1:32225||1:32244||1:32250||1:32260||1:32309||1:32335||1:32336||1:32366||1:32367||1:32370||1:32374||1:32385||1:32583||1:32584||1:32604||1:32605||1:32606||1:32607||1:32608||1:32645||1:32646||1:32652||1:32653||1:32654||1:32655||1:32656||1:32657||1:32658||1:32659||1:32660||1:32661||1:32662||1:32663||1:32664||1:32665||1:32666||1:32667||1:32670||1:32674||1:32776||1:32823||1:32824||1:32825||1:32826||1:32827||1:32845||1:32846||1:32847||1:32848||1:32849||1:32850||1:32851||1:32852||1:32853||1:32888||1:32889||1:32911||1:32912||1:32913||1:32914||1:32915||1:32916||1:32917||1:32918||1:32919||1:32920||1:32921||1:32922||1:32923||1:32924||1:32925||1:32926||1:32927||1:32928||1:32929||1:32930||1:32931||1:32932||1:32933||1:32934||1:32935||1:32936||1:32937||1:32938||1:32956||1:32957||1:32958||1:32976||1:32977||1:33047||1:33058||1:33059||1:33060||1:33153||1:33207||1:33212||1:33219||1:33220||1:33221||1:33222||1:33223||1:33224||1:33227||1:33228||1:33282||1:33443||1:33444||1:33449||1:33450||1:33452||1:33453||1:33457||1:33519||1:33520||1:33521||1:33522||1:33523||1:33524||1:33547||1:33560||1:33646||1:33647||1:33648||1:33649||1:33650||1:33677||1:33678||1:33740||1:33815||1:33816||1:33822||1:33833||1:33834||1:33835||1:33851||1:33852||1:33885||1:34047||1:34119||1:34120||1:34121||1:34122||1:34125||1:34126||1:34127||1:34136||1:34137||1:34140||1:34144||1:34145||1:34146||1:34236||1:34237||1:34261||1:34262||1:34263||1:34287||1:34292||1:34307||1:34308||1:34309||1:34310||1:34311||1:34312||1:34313||1:34314||1:34315||1:34316||1:34317||1:34318||1:34365||1:34366||1:34367||1:34368||1:34370||1:34452||1:34453||1:34461||1:34462||1:34500||1:34501||1:34622||1:34843||1:34852||1:34864||1:34868||1:34917||1:34931||1:34950||1:34958||1:34959||1:34964||1:34994||1:34995||1:34996||1:34997||1:35030||1:35068||1:35076||1:35312||1:35344||1:35353||1:35386||1:35387||1:35388||1:35389||1:35390||1:35391||1:35392||1:35393||1:35394||1:35549||1:35733||1:35745||1:35746||1:35749||1:35750||1:36064||1:36065||1:36066||1:36107||1:36108||1:36202||1:36611||1:36612||1:36914||1:37045||1:37245||1:37467||1:37521||1:37522||1:37523||1:37552||1:37646||1:37647||1:37730||1:37731||1:37733||1:37814||1:37815||1:37816||1:37834||1:37835||1:38255||1:38256||1:38257||1:38258||1:38331||1:38333||1:38353||1:38354||1:38355||1:38357||1:38359||1:38378||1:38379||1:38380||1:38385||1:38386||1:38387||1:38388||1:38509||1:38510||1:38514||1:38515||1:38516||1:38517||1:38557||1:38558||1:38559||1:38560||1:38561||1:38562||1:38563||1:38564||1:38565||1:38566||1:38580||1:38581||1:38584||1:38585||1:38586||1:38587||1:38588||1:38594||1:38603||1:38606||1:38607||1:38608||1:38610||1:38619||1:38620||1:38621||1:38886||1:38887||1:38888||1:38890||1:38891||1:38950||1:38951||1:38952||1:38953||1:38993||1:39064||1:39080||1:39106||1:39107||1:39159||1:39160||1:39163||1:39164||1:39409||1:39410||1:39411||1:39526||1:39527||1:39528||1:39529||1:39573||1:39574||1:39575||1:39576||1:39577||1:39578||1:39579||1:39580||1:39581||1:39582||1:39583||1:39705||1:39729||1:39737||1:39738||1:39800||1:39801||1:39911||1:40011||1:40015||1:40184||1:40220||1:40221||1:40222||1:40234||1:40235||1:40251||1:40252||1:40260||1:40541||1:40549||1:40550||1:40551||1:40559||1:40762||1:40763||1:40764||1:40816||1:40827||1:40831||1:40832||1:40833||1:40834||1:40835||1:40836||1:40839||1:40840||1:40841||1:40842||1:40866||1:40888||1:40896||1:40907 + Credit Card,Email Addresses,U.S. Phone Numbers,U.S. Social Security Numbers + 25 + off + on + + + off + off + off + off + off + off + off + off + off + off + 128K + 168 + on + 1518 + 22 + 20 + 19600 + 100 + on + on + on + on + ips_mode_legacy + on + off + off + + + on + on + on + off + off + on + 70989b8edbe83f6b6a35afc81fa7fe4976b6a61f + + 15m_b + on + 1000 + 6h_up + 00:26 + on + snort_alerts:col1:open:0 + off + on + 500 + 336 + 1000 + 168 + 0 + 336 + 250 + 336 + 500 + 168 + off + on + off + off + + on + 250 + + + + passlist_21324 + 30913 + yes + yes + yes + yes + yes +
+ snort_allow +
+ +
+
+ + + 5846cf19d6d18 + lansuppress_5846cf19d6d18 + + IyhodHRwX2luc3BlY3QpIE5PIENPTlRFTlQtTEVOR1RIIE9SIFRSQU5TRkVSLUVOQ09ESU5HIElOIEhUVFAgUkVTUE9OU0UKc3VwcHJlc3MgZ2VuX2lkIDEyMCwgc2lnX2lkIDMK + + + 58497c0db0e4e + wansuppress_58497c0db0e4e + + IyhodHRwX2luc3BlY3QpIE5PIENPTlRFTlQtTEVOR1RIIE9SIFRSQU5TRkVSLUVOQ09ESU5HIElOIEhUVFAgUkVTUE9OU0UKc3VwcHJlc3MgZ2VuX2lkIDEyMCwgc2lnX2lkIDMKCiMoc3BwX2ZyYWczKSBGcmFnbWVudGF0aW9uIG92ZXJsYXAKc3VwcHJlc3MgZ2VuX2lkIDEyMywgc2lnX2lkIDgsIHRyYWNrIGJ5X3NyYywgaXAgMjEyLjkzLjQuNDIKCiMoSU1BUCkgVW5rbm93biBJTUFQNCBjb21tYW5kCnN1cHByZXNzIGdlbl9pZCAxNDEsIHNpZ19pZCAxLCB0cmFjayBieV9zcmMsIGlwIDIxMi45My40LjQyCgojKGh0dHBfaW5zcGVjdCkgQkFSRSBCWVRFIFVOSUNPREUgRU5DT0RJTkcKc3VwcHJlc3MgZ2VuX2lkIDExOSwgc2lnX2lkIDQsIHRyYWNrIGJ5X2RzdCwgaXAgNzcuMTgwLjIwOC4xNjUKCiMoaHR0cF9pbnNwZWN0KSBCQVJFIEJZVEUgVU5JQ09ERSBFTkNPRElORwpzdXBwcmVzcyBnZW5faWQgMTE5LCBzaWdfaWQgNCwgdHJhY2sgYnlfZHN0LCBpcCA3Ny4xODAuMjA4LjE2NQoKI0VUIFNDQU4gTVMgVGVybWluYWwgU2VydmVyIHRhZmZpYyBvbiBOb24tc3RhbmRhcmQgUG9ydApzdXBwcmVzcyBnZW5faWQgMSwgc2lnX2lkIDIwMjM3NTMsIHRyYWNrIGJ5X3NyYywgaXAgMjEyLjkzLjQuNDIKCiNFVCBTQ0FOIE1TIFRlcm1pbmFsIFNlcnZlciBUcmFmZmljIG9uIE5vbi1zdGFuZGFyZCBQb3J0CnN1cHByZXNzIGdlbl9pZCAxLCBzaWdfaWQgMjAyMzc1MywgdHJhY2sgYnlfc3JjLCBpcCAxODUuMTQ1LjY2LjI0MgoKI0VUIFNDQU4gTVMgVGVybWluYWwgU2VydmVyIFRyYWZmaWMgb24gTm9uLXN0YW5kYXJkIFBvcnQKc3VwcHJlc3MgZ2VuX2lkIDEsIHNpZ19pZCAyMDIzNzUzLCB0cmFjayBieV9zcmMsIGlwIDkyLjIwOC4yMDYuMjA5CgojRVQgU0NBTiBNUyBUZXJtaW5hbCBTZXJ2ZXIgVHJhZmZpYyBvbiBOb24tc3RhbmRhcmQgUG9ydApzdXBwcmVzcyBnZW5faWQgMSwgc2lnX2lkIDIwMjM3NTMK + + + off + + + enablesid-sample.conf + 1542369761 + IyBleGFtcGxlIGVuYWJsZXNpZC5jb25mCgojIEV4YW1wbGUgb2YgbW9kaWZ5aW5nIHN0YXRlIGZvciBpbmRpdmlkdWFsIHJ1bGVzCiMgMToxMDM0LDE6OTgzNywxOjEyNzAsMTozMzkwLDE6NzEwLDE6MTI0OSwzOjEzMDEwCgojIEV4YW1wbGUgb2YgbW9kaWZ5aW5nIHN0YXRlIGZvciBydWxlIHJhbmdlcwojIDE6MjIwLTE6MzI2NCwzOjEzMDEwLTM6MTMwMTMKCiMgQ29tbWVudHMgYXJlIGFsbG93ZWQgaW4gdGhpcyBmaWxlLCBhbmQgY2FuIGFsc28gYmUgb24gdGhlIHNhbWUgbGluZQojIEFzIHRoZSBtb2RpZnkgc3RhdGUgc3ludGF4LCBhcyBsb25nIGFzIGl0IGlzIGEgdHJhaWxpbmcgY29tbWVudAojIDE6MTAxMSAjIEkgRGlzYWJsZWQgdGhpcyBydWxlIGJlY2F1c2UgSSBjb3VsZCEKCiMgRXhhbXBsZSBvZiBtb2RpZnlpbmcgc3RhdGUgZm9yIE1TIGFuZCBjdmUgcnVsZXMsIG5vdGUgdGhlIHVzZSBvZiB0aGUgOiAKIyBpbiBjdmUuIFRoaXMgd2lsbCBtb2RpZnkgTVMwOS0wMDgsIGN2ZSAyMDA5LTAyMzMsIGJ1Z3RyYXEgMjEzMDEsCiMgYW5kIGFsbCBNUzAwIGFuZCBhbGwgY3ZlIDIwMDAgcmVsYXRlZCBzaWRzISAgVGhlc2Ugc3VwcG9ydCByZWd1bGFyIGV4cHJlc3Npb24KIyBtYXRjaGluZyBvbmx5IGFmdGVyIHlvdSBoYXZlIHNwZWNpZmllZCB3aGF0IHlvdSBhcmUgbG9va2luZyBmb3IsIGkuZS4gCiMgTVMwMC08cmVnZXg+IG9yIGN2ZTo8cmVnZXg+LCB0aGUgZmlyc3Qgc2VjdGlvbiBDQU5OT1QgY29udGFpbiBhIHJlZ3VsYXIKIyBleHByZXNzaW9uIChNU1xkezJ9LVxkKykgd2lsbCBOT1Qgd29yaywgdXNlIHRoZSBwY3JlOiBrZXl3b3JkIChiZWxvdykKIyBmb3IgdGhpcy4KIyBNUzA5LTAwOCxjdmU6MjAwOS0wMjMzLGJ1Z3RyYXE6MjEzMDEsTVMwMC1cZCssY3ZlOjIwMDAtXGQrCgojIEV4YW1wbGUgb2YgdXNpbmcgdGhlIHBjcmU6IGtleXdvcmQgdG8gbW9kaWZ5IHJ1bGVzdGF0ZS4gIHRoZSBwY3JlIGtleXdvcmQgCiMgYWxsb3dzIGZvciBmdWxsIHVzZSBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4LCB5b3UgZG8gbm90IG5lZWQgdG8gZGVzaWduYXRlCiMgd2l0aCAvIGFuZCBhbGwgcGNyZSBzZWFyY2hlcyBhcmUgdHJlYXRlZCBhcyBjYXNlIGluc2Vuc2l0aXZlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiAKIyBhYm91dCByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4OiBodHRwOi8vd3d3LnJlZ3VsYXItZXhwcmVzc2lvbnMuaW5mby8KIyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbW9kaWZpZXMgc3RhdGUgZm9yIGFsbCBNUzA3IHRocm91Z2ggTVMxMCAKIyBwY3JlOk1TKDBbNy05XXwxMCktXGQrCiMgcGNyZToiSm9vbWxhIgoKIyBFeGFtcGxlIG9mIG1vZGlmeWluZyBzdGF0ZSBmb3Igc3BlY2lmaWMgY2F0ZWdvcmllcyBlbnRpcmVseS4KIyAic25vcnRfIiBsaW1pdHMgdG8gU25vcnQgU3Vic2NyaWJlciBydWxlcywgImVtZXJnaW5nLSIgbGltaXRzIHRvIAojIEVtZXJnaW5nIFRocmVhdHMgT3BlbiBydWxlcywgImV0cHJvLSIgbGltaXRzIHRvIEVULVBSTyBydWxlcy4KIyAic2hlbGxjb2RlIiB3aXRoIG5vIHByZWZpeCB3b3VsZCBtYXRjaCBpbiBhbnkgdmVuZG9yIHNldC4KIyBzbm9ydF93ZWItaWlzLGVtZXJnaW5nLXNoZWxsY29kZSxldHByby1pbWFwLHNoZWxsY29kZQoKIyBBbnkgb2YgdGhlIGFib3ZlIHZhbHVlcyBjYW4gYmUgb24gYSBzaW5nbGUgbGluZSBvciBtdWx0aXBsZSBsaW5lcywgd2hlbiAKIyBvbiBhIHNpbmdsZSBsaW5lIHRoZXkgc2ltcGx5IG5lZWQgdG8gYmUgc2VwYXJhdGVkIGJ5IGEgLAojIDE6OTgzNywxOjIyMC0xOjMyNjQsMzoxMzAxMC0zOjEzMDEzLHBjcmU6TVMoMFswLTddKS1cZCssTVMwOS0wMDgsY3ZlOjIwMDktMDIzMwoK + + + modifysid-sample.conf + 1542369761 + IyBleGFtcGxlIG1vZGlmeXNpZC5jb25mCiMKIyBmb3JtYXR0aW5nIGlzIHNpbXBsZQojIDxzaWQgb3Igc2lkIGxpc3Q+ICJ3aGF0IEknbSByZXBsYWNpbmciICJ3aGF0IEknbSByZXBsYWNpbmcgaXQgd2l0aCIKIwojIE5vdGUgdGhhdCB0aGlzIHdpbGwgb25seSB3b3JrIHdpdGggR0lEOjEgcnVsZXMsIHNpbXBseSBiZWNhdXNlIG1vZGlmeWluZwojIEdJRDozIFNPIHN0dWIgcnVsZXMgd291bGQgbm90IGFjdHVhbGx5IGFmZmVjdCB0aGUgcnVsZS4KIwojIElmIHlvdSBhcmUgYXR0ZW1wdGluZyB0byBjaGFuZ2UgcnVsZXN0YXRlIChlbmFibGUsZGlzYWJsZSkgZnJvbSBoZXJlCiMgdGhlbiB5b3UgYXJlIGRvaW5nIGl0IHdyb25nLiBEbyB0aGlzIGZyb20gd2l0aGluIHRoZSByZXNwZWN0aXZlIAojIHJ1bGVzdGF0ZSBtb2RpZmljYXRpb24gY29uZmlndXJhdGlvbiBmaWxlcy4KCiMgdGhlIGZvbGxvd2luZyBhcHBsaWVzIHRvIHNpZCAxMDAxMCBvbmx5IGFuZCByZXByZXNlbnRzIHdoYXQgd291bGQgbm9ybWFsbHkKIyBiZSBzL3RvX2NsaWVudC9mcm9tX3NlcnZlci8KIyAxMDAxMCAidG9fY2xpZW50IiAiZnJvbV9zZXJ2ZXIiCgojIHRoZSBmb2xsb3dpbmcgd291bGQgcmVwbGFjZSBIVFRQX1BPUlRTIHdpdGggSFRUUFNfUE9SVFMgZm9yIEFMTCBHSUQ6MQojIHJ1bGVzCiMgIkhUVFBfUE9SVFMiICJIVFRQU19QT1JUUyIKCiMgbXVsdGlwbGUgc2lkcyBjYW4gYmUgc3BlY2lmaWVkIGFzIG5vdGVkIGJlbG93OgojIDMwMiw0MjksMTgyMSAiXCRFWFRFUk5BTF9ORVQiICJcJEhPTUVfTkVUIgoK + + + disablesid-sample.conf + 1542369761 + IyBleGFtcGxlIGRpc2FibGVzaWQuY29uZgoKIyBFeGFtcGxlIG9mIG1vZGlmeWluZyBzdGF0ZSBmb3IgaW5kaXZpZHVhbCBydWxlcwojIDE6MTAzNCwxOjk4MzcsMToxMjcwLDE6MzM5MCwxOjcxMCwxOjEyNDksMzoxMzAxMAoKIyBFeGFtcGxlIG9mIG1vZGlmeWluZyBzdGF0ZSBmb3IgcnVsZSByYW5nZXMKIyAxOjIyMC0xOjMyNjQsMzoxMzAxMC0zOjEzMDEzCgojIENvbW1lbnRzIGFyZSBhbGxvd2VkIGluIHRoaXMgZmlsZSwgYW5kIGNhbiBhbHNvIGJlIG9uIHRoZSBzYW1lIGxpbmUKIyBBcyB0aGUgbW9kaWZ5IHN0YXRlIHN5bnRheCwgYXMgbG9uZyBhcyBpdCBpcyBhIHRyYWlsaW5nIGNvbW1lbnQKIyAxOjEwMTEgIyBJIERpc2FibGVkIHRoaXMgcnVsZSBiZWNhdXNlIEkgY291bGQhCgojIEV4YW1wbGUgb2YgbW9kaWZ5aW5nIHN0YXRlIGZvciBNUyBhbmQgY3ZlIHJ1bGVzLCBub3RlIHRoZSB1c2Ugb2YgdGhlIDogCiMgaW4gY3ZlLiBUaGlzIHdpbGwgbW9kaWZ5IE1TMDktMDA4LCBjdmUgMjAwOS0wMjMzLCBidWd0cmFxIDIxMzAxLAojIGFuZCBhbGwgTVMwMCBhbmQgYWxsIGN2ZSAyMDAwIHJlbGF0ZWQgc2lkcyEgIFRoZXNlIHN1cHBvcnQgcmVndWxhciBleHByZXNzaW9uCiMgbWF0Y2hpbmcgb25seSBhZnRlciB5b3UgaGF2ZSBzcGVjaWZpZWQgd2hhdCB5b3UgYXJlIGxvb2tpbmcgZm9yLCBpLmUuIAojIE1TMDAtPHJlZ2V4PiBvciBjdmU6PHJlZ2V4PiwgdGhlIGZpcnN0IHNlY3Rpb24gQ0FOTk9UIGNvbnRhaW4gYSByZWd1bGFyCiMgZXhwcmVzc2lvbiAoTVNcZHsyfS1cZCspIHdpbGwgTk9UIHdvcmssIHVzZSB0aGUgcGNyZToga2V5d29yZCAoYmVsb3cpCiMgZm9yIHRoaXMuCiMgTVMwOS0wMDgsY3ZlOjIwMDktMDIzMyxidWd0cmFxOjIxMzAxLE1TMDAtXGQrLGN2ZToyMDAwLVxkKwoKIyBFeGFtcGxlIG9mIHVzaW5nIHRoZSBwY3JlOiBrZXl3b3JkIHRvIG1vZGlmeSBydWxlc3RhdGUuICB0aGUgcGNyZSBrZXl3b3JkIAojIGFsbG93cyBmb3IgZnVsbCB1c2Ugb2YgcmVndWxhciBleHByZXNzaW9uIHN5bnRheCwgeW91IGRvIG5vdCBuZWVkIHRvIGRlc2lnbmF0ZQojIHdpdGggLyBhbmQgYWxsIHBjcmUgc2VhcmNoZXMgYXJlIHRyZWF0ZWQgYXMgY2FzZSBpbnNlbnNpdGl2ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gCiMgYWJvdXQgcmVndWxhciBleHByZXNzaW9uIHN5bnRheDogaHR0cDovL3d3dy5yZWd1bGFyLWV4cHJlc3Npb25zLmluZm8vCiMgVGhlIGZvbGxvd2luZyBleGFtcGxlIG1vZGlmaWVzIHN0YXRlIGZvciBhbGwgTVMwNyB0aHJvdWdoIE1TMTAgCiMgcGNyZTpNUygwWzctOV18MTApLVxkKwojIHBjcmU6Ikpvb21sYSIKCiMgRXhhbXBsZSBvZiBtb2RpZnlpbmcgc3RhdGUgZm9yIHNwZWNpZmljIGNhdGVnb3JpZXMgZW50aXJlbHkuCiMgInNub3J0XyIgbGltaXRzIHRvIFNub3J0IFN1YnNjcmliZXIgcnVsZXMsICJlbWVyZ2luZy0iIGxpbWl0cyB0byAKIyBFbWVyZ2luZyBUaHJlYXRzIE9wZW4gcnVsZXMsICJldHByby0iIGxpbWl0cyB0byBFVC1QUk8gcnVsZXMuCiMgInNoZWxsY29kZSIgd2l0aCBubyBwcmVmaXggd291bGQgbWF0Y2ggaW4gYW55IHZlbmRvciBzZXQuCiMgc25vcnRfd2ViLWlpcyxlbWVyZ2luZy1zaGVsbGNvZGUsZXRwcm8taW1hcCxzaGVsbGNvZGUKCiMgQW55IG9mIHRoZSBhYm92ZSB2YWx1ZXMgY2FuIGJlIG9uIGEgc2luZ2xlIGxpbmUgb3IgbXVsdGlwbGUgbGluZXMsIHdoZW4gCiMgb24gYSBzaW5nbGUgbGluZSB0aGV5IHNpbXBseSBuZWVkIHRvIGJlIHNlcGFyYXRlZCBieSBhICwKIyAxOjk4MzcsMToyMjAtMTozMjY0LDM6MTMwMTAtMzoxMzAxMyxwY3JlOk1TKDBbMC03XSktXGQrLE1TMDktMDA4LGN2ZToyMDA5LTAyMzMKCiMgVGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBmb3Igc2FtcGxlL2V4YW1wbGUgcHVycG9zZXMgb25seSBhbmQKIyBzaG91bGQgbm90IGFjdGl2ZWx5IGJlIHVzZWQsIHlvdSBuZWVkIHRvIG1vZGlmeSB0aGlzIGZpbGUgdG8gZml0IHlvdXIgCiMgZW52aXJvbm1lbnQuCgo= + + + dropsid-sample.conf + 1612566489 + IyBOb3RlOiBUaGlzIGZpbGUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgcnVsZXMgeW91IHdpc2ggdG8gYmUgc2V0IHRvIGhhdmUKIyBhbiBhY3Rpb24gb2YgZHJvcCByYXRoZXIgdGhhbiBhbGVydC4KCiMgRXhhbXBsZSBvZiBtb2RpZnlpbmcgYWN0aW9uIGZvciBpbmRpdmlkdWFsIHJ1bGVzCiMgMToxMDM0LDE6OTgzNywxOjEyNzAsMTozMzkwLDE6NzEwLDE6MTI0OSwzOjEzMDEwCgojIEV4YW1wbGUgb2YgbW9kaWZ5aW5nIGFjdGlvbiBmb3IgcnVsZSByYW5nZXMKIyAxOjIyMC0xOjMyNjQsMzoxMzAxMC0zOjEzMDEzCgojIENvbW1lbnRzIGFyZSBhbGxvd2VkIGluIHRoaXMgZmlsZSwgYW5kIGNhbiBhbHNvIGJlIG9uIHRoZSBzYW1lIGxpbmUKIyBhcyB0aGUgbW9kaWZ5IGFjdGlvbiBzeW50YXgsIGFzIGxvbmcgYXMgaXQgaXMgYSB0cmFpbGluZyBjb21tZW50CiMgMToxMDExICMgSSBNb2RpZmllZCB0aGlzIHJ1bGUgYWN0aW9uIGJlY2F1c2UgSSBjb3VsZCEKCiMgRXhhbXBsZSBvZiBtb2RpZnlpbmcgYWN0aW9uIGZvciBNUyBhbmQgY3ZlIHJ1bGVzLCBub3RlIHRoZSB1c2Ugb2YgdGhlIDogCiMgaW4gY3ZlLiBUaGlzIHdpbGwgbW9kaWZ5IE1TMDktMDA4LCBjdmUgMjAwOS0wMjMzLCBidWd0cmFxIDIxMzAxLAojIGFuZCBhbGwgTVMwMCBhbmQgYWxsIGN2ZSAyMDAwIHJlbGF0ZWQgc2lkcyEgIFRoZXNlIHN1cHBvcnQgcmVndWxhciBleHByZXNzaW9uCiMgbWF0Y2hpbmcgb25seSBhZnRlciB5b3UgaGF2ZSBzcGVjaWZpZWQgd2hhdCB5b3UgYXJlIGxvb2tpbmcgZm9yLCBpLmUuIAojIE1TMDAtPHJlZ2V4PiBvciBjdmU6PHJlZ2V4PiwgdGhlIGZpcnN0IHNlY3Rpb24gQ0FOTk9UIGNvbnRhaW4gYSByZWd1bGFyCiMgZXhwcmVzc2lvbiAoTVNcZHsyfS1cZCspIHdpbGwgTk9UIHdvcmssIHVzZSB0aGUgcGNyZToga2V5d29yZCAoYmVsb3cpCiMgZm9yIHRoaXMuCiMgTVMwOS0wMDgsY3ZlOjIwMDktMDIzMyxidWd0cmFxOjIxMzAxLE1TMDAtXGQrLGN2ZToyMDAwLVxkKwoKIyBFeGFtcGxlIG9mIHVzaW5nIHRoZSBwY3JlOiBrZXl3b3JkIHRvIG1vZGlmeSBydWxlIGFjdGlvbi4gIHRoZSBwY3JlIGtleXdvcmQgCiMgYWxsb3dzIGZvciBmdWxsIHVzZSBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4LCB5b3UgZG8gbm90IG5lZWQgdG8gZGVzaWduYXRlCiMgd2l0aCAvIGFuZCBhbGwgcGNyZSBzZWFyY2hlcyBhcmUgdHJlYXRlZCBhcyBjYXNlIGluc2Vuc2l0aXZlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiAKIyBhYm91dCByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4OiBodHRwOi8vd3d3LnJlZ3VsYXItZXhwcmVzc2lvbnMuaW5mby8KIyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbW9kaWZpZXMgYWN0aW9uIGZvciBhbGwgTVMwNyB0aHJvdWdoIE1TMTAgCiMgcGNyZTpNUygwWzctOV18MTApLVxkKwoKIyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbW9kaWZpZXMgYWN0aW9uIGZvciBTbm9ydCBWUlQgcnVsZXMgdGFnZ2VkIHdpdGggSVBTIAojIFBvbGljeSBTZWN1cml0eSBhbmQgaXBzIGRyb3AuICBOb3RlIHRoZSBiZXR0ZXIgd2F5IHRvIGFjY29tcGxpc2ggdGhpcyBpcwojIGJ5IHNldHRpbmcgdGhlIG9wdGlvbiAiSVBTIFBvbGljeSBNb2RlIiB0byAicG9saWN5IiBvbiB0aGUgQ0FURUdPUklFUyB0YWIuCiMgLS0tLS0tLS0tLS0tLS0tLS0KIyBwY3JlOiJwY3JlOnNlY3VyaXR5LWlwc1xzKmRyb3AiCgojIEV4YW1wbGUgb2YgbW9kaWZ5aW5nIGFjdGlvbiBmb3Igc3BlY2lmaWMgY2F0ZWdvcmllcyBlbnRpcmVseQojIFZSVC13ZWItaWlzLEVULXNoZWxsY29kZSxFVC1lbWVyZ2luZ3RocmVhdHMtc210cCxDdXN0b20tc2hlbGxjb2RlLEN1c3RvbS1lbWVyZ2luZ3RocmVhdHMtc210cAoKIyBBbnkgb2YgdGhlIGFib3ZlIHZhbHVlcyBjYW4gYmUgb24gYSBzaW5nbGUgbGluZSBvciBtdWx0aXBsZSBsaW5lcywgd2hlbiAKIyBvbiBhIHNpbmdsZSBsaW5lIHRoZXkgc2ltcGx5IG5lZWQgdG8gYmUgc2VwYXJhdGVkIGJ5IGEgLAojIDE6OTgzNywxOjIyMC0xOjMyNjQsMzoxMzAxMC0zOjEzMDEzLHBjcmU6TVMoMFswLTddKS1cZCssTVMwOS0wMDgsY3ZlOjIwMDktMDIzMwoKIyBUaGUgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGZvciBzYW1wbGUvZXhhbXBsZSBwdXJwb3NlcyBvbmx5IGFuZAojIHNob3VsZCBub3QgYWN0aXZlbHkgYmUgdXNlZCwgeW91IG5lZWQgdG8gbW9kaWZ5IHRoaXMgZmlsZSB0byBmaXQgeW91ciAKIyBlbnZpcm9ubWVudC4K + + + rejectsid-sample.conf + 1612566490 + IyBOb3RlOiBUaGlzIGZpbGUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgcnVsZXMgeW91IHdpc2ggdG8gYmUgc2V0IHRvIGhhdmUKIyBhbiBhY3Rpb24gb2YgcmVqZWN0IHJhdGhlciB0aGFuIGFsZXJ0LgoKIyBFeGFtcGxlIG9mIG1vZGlmeWluZyBhY3Rpb24gZm9yIGluZGl2aWR1YWwgcnVsZXMKIyAxOjEwMzQsMTo5ODM3LDE6MTI3MCwxOjMzOTAsMTo3MTAsMToxMjQ5LDM6MTMwMTAKCiMgRXhhbXBsZSBvZiBtb2RpZnlpbmcgYWN0aW9uIGZvciBydWxlIHJhbmdlcwojIDE6MjIwLTE6MzI2NCwzOjEzMDEwLTM6MTMwMTMKCiMgQ29tbWVudHMgYXJlIGFsbG93ZWQgaW4gdGhpcyBmaWxlLCBhbmQgY2FuIGFsc28gYmUgb24gdGhlIHNhbWUgbGluZQojIGFzIHRoZSBtb2RpZnkgYWN0aW9uIHN5bnRheCwgYXMgbG9uZyBhcyBpdCBpcyBhIHRyYWlsaW5nIGNvbW1lbnQKIyAxOjEwMTEgIyBJIE1vZGlmaWVkIHRoaXMgcnVsZSBhY3Rpb24gdG8gcmVqZWN0IGJlY2F1c2UgSSBjb3VsZCEKCiMgRXhhbXBsZSBvZiBtb2RpZnlpbmcgYWN0aW9uIGZvciBNUyBhbmQgY3ZlIHJ1bGVzLCBub3RlIHRoZSB1c2Ugb2YgdGhlIDogCiMgaW4gY3ZlLiBUaGlzIHdpbGwgbW9kaWZ5IE1TMDktMDA4LCBjdmUgMjAwOS0wMjMzLCBidWd0cmFxIDIxMzAxLAojIGFuZCBhbGwgTVMwMCBhbmQgYWxsIGN2ZSAyMDAwIHJlbGF0ZWQgc2lkcyEgIFRoZXNlIHN1cHBvcnQgcmVndWxhciBleHByZXNzaW9uCiMgbWF0Y2hpbmcgb25seSBhZnRlciB5b3UgaGF2ZSBzcGVjaWZpZWQgd2hhdCB5b3UgYXJlIGxvb2tpbmcgZm9yLCBpLmUuIAojIE1TMDAtPHJlZ2V4PiBvciBjdmU6PHJlZ2V4PiwgdGhlIGZpcnN0IHNlY3Rpb24gQ0FOTk9UIGNvbnRhaW4gYSByZWd1bGFyCiMgZXhwcmVzc2lvbiAoTVNcZHsyfS1cZCspIHdpbGwgTk9UIHdvcmssIHVzZSB0aGUgcGNyZToga2V5d29yZCAoYmVsb3cpCiMgZm9yIHRoaXMuCiMgTVMwOS0wMDgsY3ZlOjIwMDktMDIzMyxidWd0cmFxOjIxMzAxLE1TMDAtXGQrLGN2ZToyMDAwLVxkKwoKIyBFeGFtcGxlIG9mIHVzaW5nIHRoZSBwY3JlOiBrZXl3b3JkIHRvIG1vZGlmeSBydWxlIGFjdGlvbi4gIHRoZSBwY3JlIGtleXdvcmQgCiMgYWxsb3dzIGZvciBmdWxsIHVzZSBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4LCB5b3UgZG8gbm90IG5lZWQgdG8gZGVzaWduYXRlCiMgd2l0aCAvIGFuZCBhbGwgcGNyZSBzZWFyY2hlcyBhcmUgdHJlYXRlZCBhcyBjYXNlIGluc2Vuc2l0aXZlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiAKIyBhYm91dCByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4OiBodHRwOi8vd3d3LnJlZ3VsYXItZXhwcmVzc2lvbnMuaW5mby8KIyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbW9kaWZpZXMgYWN0aW9uIGZvciBhbGwgTVMwNyB0aHJvdWdoIE1TMTAgCiMgcGNyZTpNUygwWzctOV18MTApLVxkKwoKIyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbW9kaWZpZXMgYWN0aW9uIHRvIHJlamVjdCBmb3IgU25vcnQgVlJUIHJ1bGVzIHRhZ2dlZCB3aXRoIAojIElQUyBQb2xpY3kgU2VjdXJpdHkgYW5kIGlwcyBkcm9wLgojIC0tLS0tLS0tLS0tLS0tLS0tCiMgcGNyZToicGNyZTpzZWN1cml0eS1pcHNccypkcm9wIgoKIyBFeGFtcGxlIG9mIG1vZGlmeWluZyBhY3Rpb24gZm9yIHNwZWNpZmljIGNhdGVnb3JpZXMgZW50aXJlbHkKIyBWUlQtd2ViLWlpcyxFVC1zaGVsbGNvZGUsRVQtZW1lcmdpbmd0aHJlYXRzLXNtdHAsQ3VzdG9tLXNoZWxsY29kZSxDdXN0b20tZW1lcmdpbmd0aHJlYXRzLXNtdHAKCiMgQW55IG9mIHRoZSBhYm92ZSB2YWx1ZXMgY2FuIGJlIG9uIGEgc2luZ2xlIGxpbmUgb3IgbXVsdGlwbGUgbGluZXMsIHdoZW4gCiMgb24gYSBzaW5nbGUgbGluZSB0aGV5IHNpbXBseSBuZWVkIHRvIGJlIHNlcGFyYXRlZCBieSBhICwKIyAxOjk4MzcsMToyMjAtMTozMjY0LDM6MTMwMTAtMzoxMzAxMyxwY3JlOk1TKDBbMC03XSktXGQrLE1TMDktMDA4LGN2ZToyMDA5LTAyMzMKCiMgVGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBmb3Igc2FtcGxlL2V4YW1wbGUgcHVycG9zZXMgb25seSBhbmQKIyBzaG91bGQgbm90IGFjdGl2ZWx5IGJlIHVzZWQsIHlvdSBuZWVkIHRvIG1vZGlmeSB0aGlzIGZpbGUgdG8gZml0IHlvdXIgCiMgZW52aXJvbm1lbnQuCg== + + + 2 + 500 + 336 +
+ + + srvweb02 + 10.0.0.10 + 444 + + + + https://ftp.egonetix.de:444/wiki/ + + + + + + + http.host + == + + + + + + srvsubsonic + 10.0.0.12 + 446 + + + + https://ftp.egonetix.de:446/login.view? + + + + + + + http.host + == + + + + + + owa + 10.0.0.21 + 443 + + + + https://owa.egonetix.de/webapp + + + + + + + http.host + == + + + + + + owncloud + 10.0.0.21 + 402 + + + + https://owncloud.egonetix.de:402/owncloud/ + + + + + + + http.host + == + + + + + + + + on + + 127.0.0.1:81 + + ondisk + 4096 + + + + ip + + on + never + yes + on + on + set + 6h + 1 + 60s + + + + + + + + + + + + on + wan + block + lan + reject + + + + + + + KR,CN,IN,RU,TR,VN,UA,BR,VE,PK + Deny_Inbound + + + + + + on + wan + + + 800 + on + 10 + 4 + 864 + 10 + 1 + + 10.0.0.21 + + + + + 213.174.32.97 + + + + 80.237.133.35 + + + + 80.241.60.215 + + + + + + on + 10.0.0.24 + 10.0.0.24 + srvgateway01 + 10.0.0.1 + 10050 + 120 + 3 + 5 + 100 + 3 + + + + + OpenVPN Client Export Utility + openvpn-client-export + + 1.9.5 + openvpn-client-export.xml + + + Client Export + OpenVPN + /vpn_openvpn_export.php + + + /usr/local/pkg/openvpn-client-export.inc + + + Service Watchdog + Service_Watchdog + + 1.8.7_4 + servicewatchdog.xml + /usr/local/pkg/servicewatchdog.inc + + + snort + https://docs.netgate.com/pfsense/en/latest/packages/snort/index.html + http://www.snort.org + + 4.1.6_26 + /snort.xml + Please visit Services - Snort - Interfaces tab first and select your desired rules. Afterwards visit the Updates tab to download your configured rulesets. + /usr/local/pkg/snort/snort.inc + + + pfBlockerNG-devel + + https://docs.netgate.com/pfsense/en/latest/packages/pfblocker.html + 3.2.10 + pfblockerng.xml + /usr/local/pkg/pfblockerng/pfblockerng.inc + + + Zabbix Agent 6 + zabbix-agent6 + + http://www.zabbix.com/product.php + 1.0.9 + zabbixagent.xml + + zabbix-agent/zabbix_agentd.log + zabbix:zabbix + 664 + + + + + /pkg_edit.php?xml=zabbixagent.xml&id=0 + + + + /usr/local/pkg/zabbix-agent.inc + + + plugin_certificates + + + + + WireGuard + + https://github.com/pfsense/FreeBSD-ports/commits/devel/net/pfSense-pkg-WireGuard + 0.2.9_5 + wireguard.xml + /usr/local/pkg/wireguard/includes/wg.inc + + + + openvpn + server + 2 + 1 + + + + zabbix_agentd + zabbix_agentd.sh + zabbix_agentd + + + + wireguard + wireguardd + php_wg + + + + + Zabbix Agent LTS +
Services
+ /pkg_edit.php?xml=zabbix-agent-lts.xml&id=0 +
+ + WireGuard +
VPN
+ /wg/vpn_wg_tunnels.php +
+ + WireGuard +
Status
+ /wg/status_wireguard.php +
+ + Service Watchdog + +
Services
+ /services_servicewatchdog.php +
+ + Zabbix Agent 6 +
Services
+ /pkg_edit.php?xml=zabbixagent.xml&id=0 +
+ + Snort + Set up snort specific settings +
Services
+ /snort/snort_interfaces.php +
+ + pfBlockerNG +
Firewall
+ /pfblockerng/pfblockerng_general.php +
+ + zabbix_agentd_lts + zabbix_agentd_lts.sh + zabbix_agentd + + + + wireguard + wireguardd + php_wg + + + + zabbix_agentd + zabbix_agentd.sh + zabbix_agentd + + + + snort + snort.sh + snort + + + + pfb_dnsbl + pfb_dnsbl.sh + lighttpd_pfb + + + + pfb_filter + pfb_filter.sh + php_pfb + + + + + on + 10.0.0.48 + 10.0.0.48 + gwnue01 + 0.0.0.0 + 10050 + 120 + 5 + 5 + 100 + 3 + unencrypted + unencrypted + none + + none + none + + + QWxsb3dSb290PTENClVzZXJQYXJhbWV0ZXI9cGZzZW5zZS5zdGF0ZXMubWF4LGdyZXAgImxpbWl0IHN0YXRlcyIgL3RtcC9ydWxlcy5saW1pdHMgfCBjdXQgLWY0IC1kICcgJw0KVXNlclBhcmFtZXRlcj1wZnNlbnNlLnN0YXRlcy5jdXJyZW50LGdyZXAgImN1cnJlbnQgZW50cmllcyIgL3RtcC9wZmN0bF9zaV9vdXQgfCB0ciAtcyAnICcgfCBjdXQgLWY0IC1kICcgJw0KVXNlclBhcmFtZXRlcj1wZnNlbnNlLm1idWYuY3VycmVudCxuZXRzdGF0IC1tIHwgZ3JlcCAibWJ1ZiBjbHVzdGVycyIgfCBjdXQgLWYxIC1kICcgJyB8IGN1dCAtZCAnLycgLWYxDQpVc2VyUGFyYW1ldGVyPXBmc2Vuc2UubWJ1Zi5jYWNoZSxuZXRzdGF0IC1tIHwgZ3JlcCAibWJ1ZiBjbHVzdGVycyIgfCBjdXQgLWYxIC1kICcgJyB8IGN1dCAtZCAnLycgLWYyDQpVc2VyUGFyYW1ldGVyPXBmc2Vuc2UubWJ1Zi5tYXgsbmV0c3RhdCAtbSB8IGdyZXAgIm1idWYgY2x1c3RlcnMiIHwgY3V0IC1mMSAtZCAnICcgfCBjdXQgLWQgJy8nIC1mNA0KVXNlclBhcmFtZXRlcj1wZnNlbnNlLmRpc2NvdmVyeVsqXSwvdXNyL2xvY2FsL2Jpbi9waHAgL3Jvb3Qvc2NyaXB0cy9wZnNlbnNlX3pieC5waHAgZGlzY292ZXJ5ICQxDQpVc2VyUGFyYW1ldGVyPXBmc2Vuc2UudmFsdWVbKl0sL3Vzci9sb2NhbC9iaW4vcGhwIC9yb290L3NjcmlwdHMvcGZzZW5zZV96YngucGhwICQxICQyICQz + + + + + heap LFUDA + 90 + 95 + + + + 100 + ufs + 16 + /var/squid/cache + 0 + 4 + 64 + 256 + heap GDSF + + + + + + + none + + + + + wan + + owa.egonetix.de + on + on + 80 + portal.egonetix.de + on + 443 + owa.egonetix.de + 58b6d8ddd9982 + + on + + none + none + modern + 2048 + + on + 10.0.0.21 + on + on + on + on + on + + + + + on + srvweb02 + 10.0.0.10 + 443 + HTTPS + + + + on + srvdc01 + 10.0.0.21 + 443 + HTTPS + + + + + + on + blog + + srvweb02 + + https://blog.egonetix.de/blog/ + + + + on + owa + + srvdc01 + + https://owa.egonetix.de + + + + + + on + on + lan + 3128 + + on + + + + on + lan + + + + + splicewhitelist + lan + + modern + 2048 + none + + + + + /var/squid/logs + + + srvgateway01 + monitor@egonetix.de + en + on + + strip + + + + + + + + + + on + both + disabled + + + + 1 + europe + + + + + + + + + 2 + serveraddr + + auto + + + yes + + + + + + http + + + none + + + + + + + 1 + serveraddr + + auto + + + yes + + + + + + http + + + none + + + + + + + + 2 + serveraddr + + auto + + + yes + + + + + + http + + + none + + + + + + + + + + enable + egonetix.de + webroot + /usr/local/www/.well-known/acme-challenge/ + + + + + + + + + + + 157 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_index> + + + + + gw-nue01 + + active + gw-nue01 + 2048 + + + + + + + + LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQ0KTUlJSkp3SUJBQUtDQWdFQTZ4SU5IZG5wbURrdkhQZDZJNXFvUEtNTEU4dHJ3cG14dnFqRVNEWWRVVTRoMHNpMg0KSGkyWUtvWFdjc0JFTnRMdlRLQm94SmNEcFVPRW5YZW9VaDNEVUVkOTBMdm5ZRU5MSHhmV0NjTml4Zk9JOVJ5ag0KeFFwaDIrVUIxM202OUR3RFVaRU11NjFqWlN1L2tEaFFkdHhrUjgwZFNyQm5lVERsdnNaemJHZVFmWlk1ck5OOA0KUGpmeml1R3VNN1RzMWM0aXdnKyt6ZEpCc1BPclh0VlpxdTQzU3UvcWhpMjhlSWNKNXNrZERONkZteFR0NHBubQ0KaW5jc2Y5OVJ5MHpXSmwvT2J1MXdNd3VRTGJpT0MwTHd0M296VlpISXRvb1JUSHpaWVVrM3F3SFFKZkZtQVdOVw0KTUtNbEdwSU9EUlpNVUYvYUpvQ2tKeXlSZk5hQ04wd1dqSVR1SW1obXdCRFNtcjJORkVhSUtMdURrQm9CV3Q2Rw0KUW5qL0Nnd3dZOGJsWTNVUlJ0dVFwQTVidEFnM1Q1aHNtR1NQNVZGN3ZkbTZrVFoxSzc4dzRybUFQVDlsaGx0WA0KUGJoVUlCVkl0QXZzbnNlVEY2YjBpdENBbnZFc3J5YS9QYm5UUDBkUzZmRCtJNFhwYjJGdmxKRHQ5U2VJaFpQKw0KdDFMbno2V3NMd1dSNjdKdVdRNFhER2J4QU5HY0NjZ3J0cldWdUFBclU0Q2xTVEJGSkdoQzNvQXR6OGgrTUZBZg0KSk8vbXRkRFpmbEwvSkFSRzJmbjdvT0xSOFluYS9RNXR6QmkwVHNHS0lkV2p1WUozS2UwWW1MWjVhaGRxOWtoYg0KK1htRDJPU2hobHRiMk9mNVA5aExScmJacTk3Uk9uZ3VGUEE0L2F3NUdYV0o2YnFnb2N5YUVnWCtnNmtDQXdFQQ0KQVFLQ0FnQlNIOHhWVVh3Nm9qL0RidkpNM2d0SW8rMkt6TmFvOWVrVEl3THY5M2ZtbjlWUlBxM2hmU3hjTHNYcw0KOFI3anlHMng1NWl5bGMvQVBRWm52UlloR2lUU055Zk5kTmd3MlZHMVd5NTcycmIzVVUzWDFGbWl6UzNERlE2Lw0KcU5lWDNCK01yNUF6UVRBb2VGQkVvbWY2SHFVcU1JNjdPVVh0SVJnaXZsSTAzVG10cG40ZjB3TGsrY2NzRGd3Kw0KSkVkWnF0cVowY1puUWIyUmhJK3FZZjhocUhmSXhtaTQxK0d3ZWYwTGs5ZUNWM3QxNHFuNU1LdEtWTGhITkUzdg0KS0xqb1R6QmZzTFF5SVNnTjBSeE84dVFHTmJzWmVnVVZRTWNxWWJQUU9UUXBta2lOK1BnYUpBcElrN2F5d2JRRw0KL25OSzRUSGxvYXUzdytwUUl1RDdVS25RRGVEam1RaG9sOXVVQ1FRYUN3bFJOdUFKSzZscHRKM21QVzVoSjJMNg0KRG9LZW5xcHpENFBWZVl5ZHF5aDVoK2haZlJ2S3Q5UUIwaHhMOFg3OGx6KzI1b1RuZzlBb3RlZHl3K2R2NE54NQ0KUVMwVzhZeHJkZFFBVWx1T0l1VFlqYXBoU05tamt0SXRMeWp4akIwUGxHWjgwTXNWWVBsRGpLUEM1cXdYS2M4ag0KdnV1Y2ZSYUdKdDF2U3AyenV6Rm5ib08xQlBYVWNXYnNWMWRYZDJFdVh2Q2xFbkF5VktIQkpwRDlVY1l2Y1NSTQ0KUVN0bU5YNWdtelZkaEU5bUpBaUY3eU1nTUd3amNhemhvN2VERDJpTUZPVXhmQWVRYUYvdkZMRTlxc29iYUJPSw0KWlp5WVE3ajBaWDJRZG83TWg3clVCdGF5eUl5UjRrUnNDUlYrSjZEdVR5RTdiSDc0d1FLQ0FRRUErUnhQSFNXaA0KS1JoSXkvaEg3Nm9nTzdoL1pOYWhIL2JUZFYwNlVETnZaZStJMWlPLzVOYVRSWW9OdzZZWWVveHhLVTMwWFdPTA0KNTkrRVpWR21Eb1Y0dGlIQnhucUlYeDUvdlgvUi9lRzBrZHI4SlNBMXEzQUlyM1JKN0taUXcvUkJSVUhBZk9RNA0KTHhOOWJPbVhMSlRpZi9ta0pJME9YZ2RyRFQ4aG5pVjYvOWRHYy9SR0s5MWF1cytwV0pWSUtTY2w3dzB6UUlSTw0KcXpUeWk1ZGVzU3V3eUE2SmdJQ2ovQXFUVVh0c0ZtYjVaeFFiNS9LNXdBTmsxcGdSWkFvQmJvSkRSSG1nZkg5Mw0KeUIvTklDOGppY0k2bkhnOGtXSGg3MURDRnNCNVF4OEl5aXZVUGo1N0NOVFpoK1JUaDZtZ3NoOGhWZkZKMk1wLw0KQVVoOHgyZ21UOWxOM3dLQ0FRRUE4WkpXMUlCTC8rRzFUaWlFcWFxUTFVK1lhVkpOMndtcEJKN29nZ0N6R3dRMA0KaElzUm9Za3BjSDZ4R2FFWVJicGdjQnYzN2lPRlBnRURPOXZiME1ZRDhsNmtJakFuNU5BbWJBcHN1YlkwMHh3aw0KeU50cmI0Z1ZlQkpBaG5QKzBGd1VscXBMOXluVlIwbVBYZ0VPZkEyQ2dpOGU2TlVobURoQlNYWmgzVks3QldLZQ0KdE80Y01JNDJBRE0yWlhIbHhuT25SazB6YVdtZnA2d2dyOGN1NmNpa1oyODZxalM3bVhweHFwNVM3NVZtaU1DMw0KczdDY0VnWnRXdWJiVE9lbFBHVDhxaVNCS2FIRUVNd05sQUpBdnBmckpJbWhWVXZTTERFN0dIMk9zUjJIcVBoRA0KdWJGUU1nMWZ4ZS85cEFKS0NCVHA4alVMdjh0U2JTVVh5QVNLeG56UGR3S0NBUUJTYndyREUydTBSS1A2VTB2Qw0KeEdKc1FNNXZXUkx5bCtRN3gwRC92eldTM3VSQ01JeFV0cWovYndMRkJwYTlIdkpuZjdOb29BTnhGS2NrUEJPZQ0KWkk2Z2ZxVTMvOTVXMDZuajFJTng1eG13MW0xdi82dWk4cXo5R3BkSDUzVjhrcnh5cGFLRDhhV2g5bW9mKzJDYQ0KVVI1dXlQYUhYZUl1UFhnd1p2N0I3WmM1U0V5NUhGR0lQSFRFc3VsUU5mNHVHQlZXZU9ESDdjQjJxVXZGNDY1ag0KSkprWWFxOFh4Zm45OHFYelpjdEwwb0dmbWFqdVpZVVFSRTgvTUEwNU5KSnF0bEo2TzJGZk1YTTYxME15N2tadA0KVk1lK2RZOWRjSzJxV3VnUFRWd1RXUmE0aUM1dzlvNFNTeFU5QWRLZVp3U1ZUUFhrRWJlbE5NVTRjSHRTSldYZw0KTUlHekFvSUJBQ0VER3BLWHBjc21FUnpKTkxmcTh6ZnpWS1N2OXF2RU9qRERkb3F0aGN4ZldyM3lNMHFiNytuTA0KcG5BV0w3YjNyVTRreEZEcTBiNlRiTm0xUmVqVjVwd3Npc21SUXlKbHY1cHNJa2VPdXRGT3UwZ25sQnI5d2RGUw0KelRhU2kzUDE0V3BsZzFRWGgybmloNUVWRytHZ0J3Rzdac0h5dmxDSy80RUdpSUV5V1JSM1ViRHdDVElwZlAreA0KLy9FRkM1MS9HSkRtNCt1MzMzV09kRGtSUXp2M2kyQUhOMEVqUzYvQnA5N2xHL2hadGxWaDRMalJuY0pvMW5EaA0KczM1aStaV3pSMFFKRVEyYmFhdlI5dGtQSmNIbUNPQkpYcDdGYWNkWVF2Y3AwV0lxNHVzWVlranlEaitJekZuRQ0KWGlrWGx2NWJ2VXk0S3c3ZXZqamtKTWZVdHhKQTVDa0NnZ0VBRUZKVUhaejJVODh4RDc3cUJIcnE2aEZSWC8yYg0KeUdzVVdvL2NJSTRyNGZLNDVCUDRWMVJLSnl5NG5TaG5RenlXTG5QbHZQS2E2YlZ6ZzFaQnc3SjJMNFVJbWdscQ0Kb2drbzJoWGcvc3RaQnlBRTBpd0FqelkrTWJwZVd6RjhTRTNMTUpaUHdad1ZRRFR4VG80T1FsbTN0d1ZvNkljZQ0KTU9JWVVOSTA4VFFCUnRMZy9BWTJOd0ExZ29kVkJGK1NqWkhmMmVORUc4TXR5M2Vua2QwZUt0MyttMGsvU2dFeQ0KdXVxVzZ5OWhEYnhGb1NWOW5xTnc3aWxKd09aT0VtS3NubENyOFFyajQ4cjh5TlBtdEFhSlV5UE05bUFpT0l1TQ0KOWFxTnFPREhWTllib3hFYklPajgwMUhzMXJkS1JpcjdKK2RjcTlMVFl2anUyYXlwSnAwemhYeUZyQT09DQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ0K + gw-nue01 + + + letsencrypt-staging + + + + yes + + + + + service wireguardd start + earlyshellcmd + + + + + + on + on + eccmts42* + eccmts42* + lan + wan + 1 + lanonly + + 172.20.20.0/24 + + + + + + on + on + + + + + + on + on + wan + block + lan + reject + order_0 + + + + + 10.10.30.1 + 8081 + 8443 + + on + czMuYW1hem9uYXdzLmNvbQ0KczMtMS5hbWF6b25hd3MuY29tICMgQ05BTUUgZm9yIChzMy5hbWF6 +b25hd3MuY29tKQ0KLmdpdGh1Yi5jb20NCi5naXRodWJ1c2VyY29udGVudC5jb20gDQpnaXRodWIu +bWFwLmZhc3RseS5uZXQgIyBDTkFNRSBmb3IgKHJhdy5naXRodWJ1c2VyY29udGVudC5jb20pDQou +Z2l0bGFiLmNvbQ0KLnNvdXJjZWZvcmdlLm5ldA0KLmZscy1uYS5hbWF6b24uY29tICMgYWxleGENCi5jb250cm9sLmtvY2hhdmEuY29tICMgYWxleGEgMg0KLmRldmljZS1tZXRyaWNzLXVzLTIuYW1h +em9uLmNvbSAjIGFsZXhhIDMNCi5hbWF6b24tYWRzeXN0ZW0uY29tICMgYW1hem9uIGFwcCBhZHMNCi5weC5tb2F0YWRzLmNvbSAjIGFtYXpvbiBhcHAgMg0KLndpbGRjYXJkLm1vYXRhZHMuY29tLmVk +Z2VrZXkubmV0ICMgQ05BTUUgZm9yIChweC5tb2F0YWRzLmNvbSkNCi5lMTMxMzYuZy5ha2FtYWll +ZGdlLm5ldCAjIENOQU1FIGZvciAocHgubW9hdGFkcy5jb20pDQouc2VjdXJlLWdsLmltcndvcmxk +d2lkZS5jb20gIyBhbWF6b24gYXBwIDMNCi5waXhlbC5hZHNhZmVwcm90ZWN0ZWQuY29tICMgYW1h +em9uIGFwcCA0DQouYW55Y2FzdC5waXhlbC5hZHNhZmVwcm90ZWN0ZWQuY29tICMgQ05BTUUgZm9y +IChwaXhlbC5hZHNhZmVwcm90ZWN0ZWQuY29tKQ0KLmJzLnNlcnZpbmctc3lzLmNvbSAjIGFtYXpv +biBhcHAgNQ0KLmJzLmV5ZWJsYXN0ZXIuYWthZG5zLm5ldCAjIENOQU1FIGZvciAoYnMuc2Vydmlu +Zy1zeXMuY29tKQ0KLmJzbGEuZXllYmxhc3Rlci5ha2FkbnMubmV0ICMgQ05BTUUgZm9yIChicy5z +ZXJ2aW5nLXN5cy5jb20pDQouYWRzYWZlcHJvdGVjdGVkLmNvbSAjIGFtYXpvbiBhcHAgNg0KLmFu +eWNhc3Quc3RhdGljLmFkc2FmZXByb3RlY3RlZC5jb20gIyBDTkFNRSBmb3IgKHN0YXRpYy5hZHNhZmVwcm90ZWN0ZWQuY29tKQ0KZ29vZ2xlLmNvbQ0Kd3d3Lmdvb2dsZS5jb20NCnlvdXR1YmUuY29t +DQp3d3cueW91dHViZS5jb20NCnlvdXR1YmUtdWkubC5nb29nbGUuY29tICMgQ05BTUUgZm9yICh5 +b3V0dWJlLmNvbSkNCnN0YWNrb3ZlcmZsb3cuY29tDQp3d3cuc3RhY2tvdmVyZmxvdy5jb20NCmRy +b3Bib3guY29tDQp3d3cuZHJvcGJveC5jb20NCnd3dy5kcm9wYm94LWRucy5jb20gIyBDTkFNRSBmb3IgKGRyb3Bib3guY29tKQ0KLmFkc2FmZXByb3RlY3RlZC5jb20NCmNvbnRyb2wua29jaGF2YS5j +b20NCnNlY3VyZS1nbC5pbXJ3b3JsZHdpZGUuY29tDQpwYnMudHdpbWcuY29tICMgdHdpdHRlciBpbWFnZXMNCnd3dy5wYnMudHdpbWcuY29tICMgdHdpdHRlciBpbWFnZXMNCmNzMTk2LndhYy5lZGdl +Y2FzdGNkbi5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczItd2FjLmFwci04MzE1 +LmVkZ2VjYXN0ZG5zLm5ldCAjIENOQU1FIGZvciAocGJzLnR3aW1nLmNvbSkNCmNzMi13YWMtdXMuODMxNS5lY2Rucy5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczQ1LndhYy5lZGdl +Y2FzdGNkbi5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczItd2FjLmFwci04MzE1LmVkZ2VjYXN0ZG5zLm5ldCAjIENOQU1FIGZvciAocGJzLnR3aW1nLmNvbSkNCmNzMi13YWMtdXMu +ODMxNS5lY2Rucy5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczQ1LndhYy5lZGdl +Y2FzdGNkbi5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQoucGZzZW5zZS5vcmcNCi5u +ZXRnYXRlLmNvbQ0K + + + + + ADs_Basic + + + auto + + https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts +
StevenBlack_ADs
+
+ unbound + EveryDay + enabled + default + 1 +
+
+ + + PRI1 + + + auto + + https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt +
Abuse_Feodo_C2
+
+ + auto + + https://sslbl.abuse.ch/blacklist/sslipblacklist.txt +
Abuse_SSLBL
+
+ + auto + + https://cinsarmy.com/list/ci-badguys.txt +
CINS_army
+
+ + auto + + https://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt +
ET_Block
+
+ + auto + + https://rules.emergingthreats.net/blockrules/compromised-ips.txt +
ET_Comp
+
+ + auto + + https://isc.sans.edu/block.txt +
ISC_Block
+
+ + auto + + https://www.spamhaus.org/drop/drop.txt +
Spamhaus_Drop
+
+ + auto + + https://www.spamhaus.org/drop/edrop.txt +
Spamhaus_eDrop
+
+ + auto + + https://talosintelligence.com/documents/ip-blacklist +
Talos_BL
+
+ Deny_Outbound + 01hour + enabled + 1 +
+
+ + + + Disable + Disable + Disable + adblock.doh.mullvad.net + + + + + + tun_wg0 + yes + + 51820 + eHxFuqOLMrTt35jozTjmnpge8jqJZz90RwgXo8JNGGc= + dwQ/ZByIZdFVawJ31WEH9AKEoc6sjYmw7AFG5LYLygE= + 1420 + + + + + + +
172.20.0.0
+ 16 + +
+ +
10.69.69.2
+ 32 + +
+
+ yes + tun_wg0 + + + pQr6y8pJLiVII+SbuZVaPT6tTMF+bYnQ9g5aBK1AaBw= + +
+
+ + on + yes + 300 + no + all + no + no + +
+
+ + + ldap + + + srvdc01 + + + 5305c7d8877fa + + + + 2048 + 3650 + DE + + + + + on + + + wan + UDP + 1194 + + on + on + 4096 + AES-128-CBC + none + 10.10.20.0/24 + 10.0.0.0/24 + on + on + on + on + on + egonetix.local + 10.0.0.6 + 10.0.0.1 + 0 + 10.0.0.6 + + + on + on + + + + + + 53bbbfe6c587c + + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUdXekNDQkVPZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREI4TVFzd0NRWURWUVFHRXdKRVJURVAKTUEwR0ExVUVDQk1HUW1WeWJHbHVNUTh3RFFZRFZRUUhFd1pDWlhKc2FXNHhFVEFQQmdOVkJBb1RDRVZuYjI1bApkR2w0TVNJd0lBWUpLb1pJaHZjTkFRa0JGaE50YjI1cGRHOXlRR1ZuYjI1bGRHbDRMbVJsTVJRd0VnWURWUVFECkV3dHBiblJsY201aGJDMWpZVEFlRncweU5EQTNNRFl4T0RNM016UmFGdzB6TkRBM01EUXhPRE0zTXpSYU1Id3gKQ3pBSkJnTlZCQVlUQWtSRk1ROHdEUVlEVlFRSUV3WkNaWEpzYVc0eER6QU5CZ05WQkFjVEJrSmxjbXhwYmpFUgpNQThHQTFVRUNoTUlSV2R2Ym1WMGFYZ3hJakFnQmdrcWhraUc5dzBCQ1FFV0UyMXZibWwwYjNKQVpXZHZibVYwCmFYZ3VaR1V4RkRBU0JnTlZCQU1UQzJsdWRHVnlibUZzTFdOaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0MKQWc4QU1JSUNDZ0tDQWdFQTRhdVlYbEpGdnpmSHJrb3FIZ2xvUmRqMWcrNlhCeTNMOFJqSWdYRERmQlR2UytjQwptL0h5NjlFSk13T0U5QjVpRGNRb3hLWkVwZGlKNGRSQmpRL3dBWm8wUUE0Uy9IZHp2THFmc1JrUS80ek54OGVtCmQvaDRqcEJlZ1BHMTVWeFk5djdGeDNvUTE1QTI3R2tZRTFUMzFkWEl2Rmh1NjUyZnZhVmt4WW80R1lhUW40NHAKUU44RVBNZTRXOXFocENuTnNDMFV0SE1oNnBIRmc2RFpNUlRLWDdpMUgxKzRhYkNmY0k4RjJlUmZCbGdYQ1haTAoxTmRId3JHNmR2VnBEdHpBT1J0N0lqTkpEeEdwZng2ZVByVmY4T2tFb3lPYmw4NTJPcitTTXQ2YzdNZVFPZ2QvCkk0ZWtlYi9EUEhiOGNlczJrd1EyQ3FUTDUvVW9iZUtBQWpucFJzTzBscFB1WmsvQTZmS29ObWF4b2lwYVBSR0cKTmVSNDRvd2JoWTdOSnJNWWlXOHpxdTQrZy9rdTdrdmdXNWVZWjhFUWdld21YVnVEaDZSeHZoODJhS0tMak4wcAprQ2M2cHB0Y1Nsc091eGxHNlVJQ1U4dERtQXlpZHRVVUczcVVjU2c2eHZyMDNUVThKbnhya3V2akZpTGxjLzBUCmQ2aU1YcHVja3Z3YnIyVXlHTXhoVW9lYU1aZWs2T1V6cEJKZ25BYWhHak1uOTB2WkRoc1lISVVrM2E2Zm9oUVQKSlpNZjBXTWZKR3gyZEZlalk3YmFvTU8rRXIyZ0l5enZTREdFYW51UUdxTUo4UkxXNlhEVmV0VTBtVUdGK2l5WAo3bGtzYkhwNzFxcjlTa2hUZUgrUHRzRk1qN0VvRDdmdW1IbU5qdDRFbC9Mc1pKcnBKVXZtZ0tmYnY0VUNBd0VBCkFhT0I1ekNCNURBZEJnTlZIUTRFRmdRVXpvK0VxZktVMWdTODNlMWYwejRYRlZQV051OHdnYWNHQTFVZEl3U0IKbnpDQm5JQVV6bytFcWZLVTFnUzgzZTFmMHo0WEZWUFdOdStoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pFUlRFUApNQTBHQTFVRUNCTUdRbVZ5YkdsdU1ROHdEUVlEVlFRSEV3WkNaWEpzYVc0eEVUQVBCZ05WQkFvVENFVm5iMjVsCmRHbDRNU0l3SUFZSktvWklodmNOQVFrQkZoTnRiMjVwZEc5eVFHVm5iMjVsZEdsNExtUmxNUlF3RWdZRFZRUUQKRXd0cGJuUmxjbTVoYkMxallZSUJBREFNQmdOVkhSTUVCVEFEQVFIL01Bc0dBMVVkRHdRRUF3SUJCakFOQmdrcQpoa2lHOXcwQkFRc0ZBQU9DQWdFQVJoTkFSaEtZamZ6UzdJQjd4clUyaDY4dFMvOHRvUkRUeVZseDZ1YnpRanlnCnBlSUYvNFhZMVhVb0tMNHRLK2Fkd2NaNU80Z1NrT0lWcTg2REpiK1lvVVlMWExyR0RmV1NzVXhMNTRKbzVWVzEKM0xzRUJNSE5HcytJQjdkcXY1RWdJRjR1SEt1clZTN24zVVYwTWFVU1lvR1NpbE9OcnRxUEtLeitzS0Z4VU5ZTwpIMlVzS3lxdkNIQjJLWmRqL2RqSEpKNStZZkNVMXFQV3VaOUgxR296d3Rzd3JCcGUyWDBKRDJRb0ZENjcwL3FuClB1dERKMXZwTTkxUC9JOHVUSlovSkh3a0NLYmRmUHh2VmlXS1lXaWhNbFYzZW8wWXU0UjRKN1dYcG9SYmFDQy8KVVJKcUJucmY1ZjdNczc1RWF0YnFIR1ZQeWNwSmlPYndyRmQvN2pKM01WMFpwK0FwUmxhYWZFZ0dqTExDV2VWOQpYZEFjNWgveGt5dC9xdlZOTWpaQmNoNmdnMFVYV2grckoyZVBNdjJlWitDN3NvbmxoS3BHaTdTYVo3bExrVDBNCis5NWxJMGR1enZVZkU0ZGxKMVhSY3IwaVpueGNWYWhKUkpoYU1OR3RhcEdSeU5XeWNRTEJQdXBjemZhamFBNmsKZytqMFhVeFRGTTZ0TG9UNCtSSFBCdWpRdXhjeHJBeVlwd29na0NEbFpFN0FOamxJRGkrMVFkK0xQYklGRkFFYwozc0pPMnFJaFlwVGNreGRsZUJGN3ZDQlVQWHVSb0RKckVqcXc3WkZVMy9VK2NIUGRqU2VPTzZYNmtzSis2bUxnCmRqZkRvQzNVWENLZWhsdGI1djAxeW1DSFUvWjdsNHZUc1llSVh3YmV2RENmMUVjTEFRZzBnY0JGNjdha3l3ST0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpSUUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1M4d2dna3JBZ0VBQW9JQ0FRRGhxNWhlVWtXL044ZXUKU2lvZUNXaEYyUFdEN3BjSExjdnhHTWlCY01OOEZPOUw1d0tiOGZMcjBRa3pBNFQwSG1JTnhDakVwa1NsMkluaAoxRUdORC9BQm1qUkFEaEw4ZDNPOHVwK3hHUkQvak0zSHg2WjMrSGlPa0Y2QThiWGxYRmoyL3NYSGVoRFhrRGJzCmFSZ1RWUGZWMWNpOFdHN3JuWis5cFdURmlqZ1pocENmamlsQTN3UTh4N2hiMnFHa0tjMndMUlMwY3lIcWtjV0QKb05reEZNcGZ1TFVmWDdocHNKOXdqd1haNUY4R1dCY0pka3ZVMTBmQ3NicDI5V2tPM01BNUczc2lNMGtQRWFsLwpIcDQrdFYvdzZRU2pJNXVYem5ZNnY1SXkzcHpzeDVBNkIzOGpoNlI1djhNOGR2eHg2emFUQkRZS3BNdm45U2h0CjRvQUNPZWxHdzdTV2srNW1UOERwOHFnMlpyR2lLbG85RVlZMTVIamlqQnVGanMwbXN4aUpiek9xN2o2RCtTN3UKUytCYmw1aG53UkNCN0NaZFc0T0hwSEcrSHpab29vdU0zU21RSnpxbW0xeEtXdzY3R1VicFFnSlR5ME9ZREtKMgoxUlFiZXBSeEtEckcrdlRkTlR3bWZHdVM2K01XSXVWei9STjNxSXhlbTV5Uy9CdXZaVElZekdGU2g1b3hsNlRvCjVUT2tFbUNjQnFFYU15ZjNTOWtPR3hnY2hTVGRycCtpRkJNbGt4L1JZeDhrYkhaMFY2Tmp0dHFndzc0U3ZhQWoKTE85SU1ZUnFlNUFhb3dueEV0YnBjTlY2MVRTWlFZWDZMSmZ1V1N4c2VudldxdjFLU0ZONGY0KzJ3VXlQc1NnUAp0KzZZZVkyTzNnU1g4dXhrbXVrbFMrYUFwOXUvaFFJREFRQUJBb0lDQVFEYXhDcFZaWlJQcHBkZ2ttejU2VXk0ClNYYllpdmJGOHROOXlmUzE1c2JiQnNCajZISlRFdDNYVlRHQnpxdVlxOHVLWk5yUXFBNXNaOXBpbmcxZDNsRmcKZkVpaXdBSVAxUXpSckdrYW1aNHMzaWF1d1JEVHhIKzZWS0lJaGtrN0s2Ymk2bUI0M0JCdnFGSldKQnMrd21QdgpXK3ZaQ2pHZEg1UzNtQnAwbFdXRStUcENNdUl6RFA5aW5JcFFJVVlKaXF6bldReDFVaGRTK2pWclFRYkwyY2ZGCnU1MTU2S1V4Y0JOZ1hvWGhrTTI5cksvSWNIRmF4OGU5S2VZRlpDcVFTZGZlaEpGOXVoSGRGZFltY1Z3ZWxsMkgKZ1owSk9YK2dUbm0yd2ZmTWNKblh3QzVFMHZlaFRlRllWVm5DeCtZNTJUZHlsZVo5c3Z3b3hUU0lNY2ErWWIyTgpGZ05PNGRmTmYrNkJWVDJUT1pTL1lGMjZ5cHdVbThCVTJNSElBeFdoQzlPYTBrdVZOUE5nMGhRS0srVmhtejBsCm85bklkME1pSDl0VWJBUWc1N3l3MXR1MGU0RDh4dUc1U2NkRGxoUUpwNnFmWXg2N1NCWHpuZm1HamV5SFZWTDAKUnRqV2pJOXpjOWpmd3pJdkttNWcwcmNILzNlVGI3bkZnZ2FGSVpBTXIvSGl3NEhIUnNydGZYN3lqOUFuVmo3dAo1M1hOVXNwYUkvZStMT3EwNkNXUnQ1VWgvTVA3YXVGN2xpSVFlWEJGZis4YVhVVUl6UCt5bGkwcXJaMTZJeVkrCjhWZDJkSDRKR08zVlNhUlllVy9kN3o1R2YxZHg3Z0FlNjBKekJoNkpyQUdtWUZuTTd0TGhsc1RXYU5OL3JuaWYKUHZSWDRtbCswNmdhaXZRMURWSVZnUUtDQVFFQTl3RGp1OGROMXhNSmdqcHBZbnN0QXlMdlF2ZTl5OGxXekpOTgppTkFrWktYbVFQVnc5MXBZMEZtYnpGeERJUzlzM3UvdHZTY3cvN0NaVTl2YU54SitqNFB6Y0UzZFJ0SzlBVEZPCnpaZ2RFS09ZVVpUcWVyeVhKTFJBc3BvKzFTZG9pUEhKMlk3bDBxRCtIWkhZNWZGNFNkSjRiRUoyMGxWQUdiQUYKU3JOem5aYkJMbGtQMTQwNDJHcnpWSkxFZFhDak9DbmErOXpUdHpqQ2xpOFp4OGdXQTlUejQ4N0FzdXpZYUZrVApaZWhjMFhHcmx6cUtqT3RYdUpYSkxCMkg3Z1VsOUdtNkFWSDRTYUdoayswYmpsSUlsSmJHWnBHZUtjUVczWVVDCjRKVXVHYTdkTzdEN0lZQklrbDE4b3hMdnVVTkY5WERZUnFUb2F0MGl3OVRMWE5NekRRS0NBUUVBNmVQS2E0NU4KQ0dieitaeklWRjN4U2RsTzFrZ1J4K3BUU0cwMzVCWDVuUEJ0T2Z1NTQ4WHNvZWcrWGY0ZUttOTg4MCtzaUpDNgpaTEx6czJiakNYY3hhZTljVjNyZ3F2OVNzVk81Ry82LzlvbFdobWxqYTVGeStPNGxGWTJlQ1hYVDNIYktSZUdPCjNSbTdtMTEvTEtjWE1lWjRaNUtSTE0vTWQrb3I0N1RNNTZ2RmhQZUF1Um1iWDk4U0JKb0N2WVRCV2ZlUy9vY1gKKzRQV25SbDhZc1VpdGxwVkpWVFJRY0hFVXZiSHdYeXNPZzBPMWd5Nm02L09CLzJ5RTN1eTRpQ3AzTktoUDVkVApwWUxwV1pLaCswWldWUnQ0a3Z6WXozdGRyTENQY3RraEhzRG1YY1ZQVTJacFNKTTh0eHZlNWpLNnpJekNISjE4CktydDU1M25RUEdzQVdRS0NBUUVBcE9iQ0l6WWU0SXlFRjU0NWh4Ym02U1lraUJmdmJTTEF3UmxDZFNsSWNxMVQKT0dEa0J5OFpCaGdjN0dWWUo4cUtxNWVRcDJ5SHlOdzBzUWlnK1kxdVV3L3JzVGs2bGpMUkhmKzJOWW50TlpPUwplRHlzQWo3dnhRQldCU2IyOWNVMmc5NndQSCtyTFdCdjVudmRTejVYYVNtTFhmTk5jb1Nabzh5ZzY4czhUNlE2CjJsOTVOUlhDTXJITU85VTBOWmQ2VUYrWkkvYThuYURXUC8rMy9XbTJVTjZWNkt1NmVIbW96SmxUV3dDekh0ejkKaXB2NXJiVGN2bzI1WGF0bGVXR1Vna1VuZWdRb2Q3ZmhzR2xtc1RCUkxDb3cwSDg5RVhNcE5NQzlPQVJBWDhNZgpUZCtNK1VPMHI0cWNVQjZ2VG9iOEtLMHFwcGNuMTFoRkFtcUpUakp0N1FLQ0FRRUFsOVFPUDluRk9kSVRTSk0xCkhFZExiZVFLSUdIeVlQTkZFdndMVHgzUXhzYndNTGF2Q2lRZW8wK3V4TGRFZjhtVnRDQ2hZSm1LMWZtdzUyRy8KdWhKTTJuYk9XOTloWHIrVnY1VVkwZ3FDTkprY3VPNUs0cll0aTFpVWJEUmRSY2plT2Z4Ry9Dd2E0SDVtNGNsRQoyQWl6cnVuc2VWZVV0Q0ZFbXdkQmJIU2VtemxQWkN5Q3ZDWGFUZGJ4ekZqcHRIc3NSS25KR3o4NUcwV1BHTFpGCm41eFhGMGIyaE9CVllybFZKNElaVkFvSmh6bVl5dXpDYW5RcWE5ZU5OTWFVN2VQRVFKdmVudmd1RFlBNDJMT3UKUVA1ODVveUpyZWxER1JUOVR5L2lQdXlpYW1OUVo4akE0T1BYTG95ZDJrUFdZMXJGRmltOWpIUFMrYTV2eVFxegpXYlVnS1FLQ0FRRUFnYmk2VUQ2b0tVM1JwNm9uUkZpM3Z1cjUxZ2RPUjVneDBaMjJZcUl0RHJqUzVJZGVEMzF4CkRYelE5Uy9NeldvM2NQZndQbHlwRkFhL0VaV29EWlhrV1hVR0gzRysxOS9BYi9kSDU5cXZZVWVNRHFjL2hXd1IKT1ZnMFExT2NnNVlRcTIwVHYvZkpIWWtLeXkzYm8wcDZjTjlvOUN0UWZRVHQ3ZjJRVnlWdE56R1dHd3RKT0VjZQpZWkxHNFhoSjVLQXY5WlQrbU9DcldneU1NTkxRdURXb09jb0h2bWdwZmpYUEVjNEtyZWI5OW9vOWpXM3FGWS9DCjJpUVBJTFpaYlZjenFETXpqd1hXWktXWk4zekZzaWszOFRncFNsenlLV3R4UEJxZ2wzZ2d4TFZKZkViZHd4TFAKSDR4ZlhjeHZEVlIwWE5STzErN1JPbnJQYmk0aHphMFAzZz09Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + 3 + ca + + + 588f087d75083 + + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlFeHpDQ0E2K2dBd0lCQWdJSkFJUWdLaVFSbUlTeU1BMEdDU3FHU0liM0RRRUJCUVVBTUlHZE1Rc3dDUVlEDQpWUVFHRXdKUVFURUxNQWtHQTFVRUNCTUNVRUV4RHpBTkJnTlZCQWNUQmxCaGJtRnRZVEVRTUE0R0ExVUVDaE1IDQpUbTl5WkZaUVRqRVFNQTRHQTFVRUN4TUhUbTl5WkZaUVRqRVpNQmNHQTFVRUF4TVFibXcwTnk1dWIzSmtkbkJ1DQpMbU52YlRFUU1BNEdBMVVFS1JNSFRtOXlaRlpRVGpFZk1CMEdDU3FHU0liM0RRRUpBUllRWTJWeWRFQnViM0prDQpkbkJ1TG1OdmJUQWVGdzB4TmpFeU1UVXhNekk1TVRsYUZ3MHlOakV5TVRNeE16STVNVGxhTUlHZE1Rc3dDUVlEDQpWUVFHRXdKUVFURUxNQWtHQTFVRUNCTUNVRUV4RHpBTkJnTlZCQWNUQmxCaGJtRnRZVEVRTUE0R0ExVUVDaE1IDQpUbTl5WkZaUVRqRVFNQTRHQTFVRUN4TUhUbTl5WkZaUVRqRVpNQmNHQTFVRUF4TVFibXcwTnk1dWIzSmtkbkJ1DQpMbU52YlRFUU1BNEdBMVVFS1JNSFRtOXlaRlpRVGpFZk1CMEdDU3FHU0liM0RRRUpBUllRWTJWeWRFQnViM0prDQpkbkJ1TG1OdmJUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5LbkREN3lBcmRGDQpzR21mSzF3SGVHTVFZaExDSktRa21IS3ArRHB5TXJocUpGTldsa2wxTGJadStxUnVjMWV5T3VGQnFPZEFVQ0tZDQoxQjhVUmRoZkhWTWNzK0lsTE5HNTB0ZkNnQ1htV0dMZFEzZ09rNWsybUE4WkJsb0p5SVZuQzI2K0NqMEFraTBqDQovTi9FNW9uZDYvMlZLa0cyQVI3azlUQjJxUHlNS2xFeGdhM285bkd4ai9UWUEvSk5OTVUzZjZJemNzeDMvQmlxDQpvWXB5L2g3Q2txcmxnNmRjY0JHeDZRZFBFSVlBbENaSFdkZGtOcldBOHIwaDFIemROdU9PNXdmQ1lMclJqRUNiDQpOb1dBalNURzJFVTEyQk50c1l1MEcvRUd4eDJmRjRGMjdITE43SGgwRUV4NlpoN1ZLb3Rub3pQend1RUFrQUJBDQoxbDkyd0NBV00rMENBd0VBQWFPQ0FRWXdnZ0VDTUIwR0ExVWREZ1FXQkJUQU1zTzZGSGhzTDJhbEE1dXpReGVtDQpTUjRDc2pDQjBnWURWUjBqQklIS01JSEhnQlRBTXNPNkZIaHNMMmFsQTV1elF4ZW1TUjRDc3FHQm82U0JvRENCDQpuVEVMTUFrR0ExVUVCaE1DVUVFeEN6QUpCZ05WQkFnVEFsQkJNUTh3RFFZRFZRUUhFd1pRWVc1aGJXRXhFREFPDQpCZ05WQkFvVEIwNXZjbVJXVUU0eEVEQU9CZ05WQkFzVEIwNXZjbVJXVUU0eEdUQVhCZ05WQkFNVEVHNXNORGN1DQpibTl5Wkhad2JpNWpiMjB4RURBT0JnTlZCQ2tUQjA1dmNtUldVRTR4SHpBZEJna3Foa2lHOXcwQkNRRVdFR05sDQpjblJBYm05eVpIWndiaTVqYjIyQ0NRQ0VJQ29rRVppRXNqQU1CZ05WSFJNRUJUQURBUUgvTUEwR0NTcUdTSWIzDQpEUUVCQlFVQUE0SUJBUUJ4N1Q4UlFlNStNcWpMd0N2cG1LRDRJSTEzMGNwV2VqTzhHTkZhbWpSSFRMdG84RnlzDQpiS1pIVlgwSnFtRzJwcy83eXBicE52dFZjWVJ3Uk5PZm1zN3dEcjF0bXlnclJnOEt5ZG5wNWt2TkR5WXpHV2pKDQpUZnVheDlqY2h0NFVxeHgxaERXbFkvREYvK2k2K1JuNCswT3RIU2JibHMzUmFtdE9VUi9ydlZMazlOOExPOEo1DQp5TkZRSDJGNFNENkVxYk1WMVI2OWRES2UvOVRDRkcxQ2JjWmc2c2xEMmN3YmFNTzdXVG16WXBWdGtGUDFyT1g3DQpCV0wwYUFUNC9xMGp3am9hcTMxTG5tMmQxQ3U3ek9ncnZMaTM5THQwc1JaNlNxajVldm5KMlNNcnVvQmVxVWlDDQoyNjB0YW14VEZuQTBOckNvNTc4SkFaQzFrOVVGMy9HV3dWS1oNCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= + + + + 664ca7c2efc5b + + disabled + enabled + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZSVENDQXkyZ0F3SUJBZ0lJYm5Ia080Rlh4TEV3RFFZSktvWklodmNOQVFFTEJRQXdIREVhTUJnR0ExVUUKQXhNUmIzQmxiblp3YmlCemFYUmxNbk5wZEdVd0hoY05NalF3TlRJeE1UTTFOVEU1V2hjTk16UXdOVEU1TVRNMQpOVEU1V2pBY01Sb3dHQVlEVlFRREV4RnZjR1Z1ZG5CdUlITnBkR1V5YzJsMFpUQ0NBaUl3RFFZSktvWklodmNOCkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFNK0cwNmsvbzY0VjhsYVpRUFVoWCtmNlRmbnROL2hndHp0cnRPYmIKMWFEQzhXbU1tOUVOZU1UQzVDajBaekRWQ2ZCWFo0Ym53WkFFR2VlWFpuaWh6TUprRUtLVEFJaEJzVWJIRytCcApKblljSXEyUm1UblVRcWRjZ2p1cURBemlMT3BiUEhyckxYWGpEVEZHaSt4T2syekRiVzdFMXhpMFJQK3BvT1F4CnQ5V1dTTm15R1VOMFpBMWlIdWJuUTc1VHpPTFYvWEwzWXJ5anJvcUFNcnh5UXk1eWJvb2xlcWE4WVNlQU5wdVgKV0twVm5uTE5VOHVrVmx2NDYrTXR6cnVLOVIrU2xpY01XaGpXMkgyQ2dIQkwza29hMktZb1Z2VDE5SkVBdXlrbQpiV0VlR1ErK0NsOWJVY1hLL1ZlU0NuQXFjMnlVeS9iVUZXcHpiSUVqdHF3djdxaG1TT215Y1U1UElvT0Yvb0lNCi8xYWo5Yk9xbVRwUGl6eXFIbVI3VU9jaWNIUDR4WTVxS3l0YmsvV3FLVDRicTlCZCtmSGFUWngwS3dyTjhwZTAKbktFUnIrWW1BdEhYK0tZUFhVVWVuc3JUZUxIYjNnTVB2WEVLVWJGTnJPTGlkcUE1TlFjVTBDeUloRnQ4bE55aApzQlh4YzZoYm11dlRxQ3FGT2MwRVM2c0h2U1d5ZVRHODZhZGpjQVBLNTdIQ1M1MG5KWGlLMWVja2c4N3JrU0lGCmp6aS84am5hQ2lEdnVJYnZYdDBUVFVmby9aZVFFa21IQmNjQVJIV0dkVmxDa2pMdkxSMmJJMkJBaUZxaGdWSUUKYmZ1RTJraklvQ0p0dG5CSTd2bXZZRWF2SGJZV09UYWwwSEVKVmJiMFB1dldnbUU1dktVc0oyMFIyL2x3bUl5WgptNkd2QWdNQkFBR2pnWW93Z1ljd0hRWURWUjBPQkJZRUZNYkV3RUREOFpyMXU1ZWtscVBlMHFVbzhMQURNRXNHCkExVWRJd1JFTUVLQUZNYkV3RUREOFpyMXU1ZWtscVBlMHFVbzhMQURvU0NrSGpBY01Sb3dHQVlEVlFRREV4RnYKY0dWdWRuQnVJSE5wZEdVeWMybDBaWUlJYm5Ia080Rlh4TEV3REFZRFZSMFRCQVV3QXdFQi96QUxCZ05WSFE4RQpCQU1DQVFZd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFIZCtoSGUvMGYrWjhCMHRXaWp6MGx2Uld6NjQzWVlSCmppOTA0dCtmdEEvMHdSSGczWkJWMmJDMDFKdVptSjhzNVpYcTVUY3lndmtQUndFMVYzaWYrZjZjTE5aQ3daaU0KVkJ2dkRhOVJqOENtUXJ1WnhrSUEwUlZEQjJMVFBsMWlyank5azhWUzZ5RmFMUWh1emROZ3pBeGJad0UzSTVIKwpRNFcwZ1lmbDJhS0NGbkxqTG5yVjlMSGtQYi9ucGZkazVRZUpIbnMrcFNRaWVVRkRMTGpycFN4SXBUcXpmRTNFCjcyR2RFVUdXMUNhT2FTbXh4cmorc3lyaXdWc3A1YU1QVm5oU01KeXpObFZPYk0rTlh6dFpiOGUwTnlid3BJdDMKRG5hanJnT2Z6N2RCb0FheU5lc3p6NDFhTk93d2ZGY0ZxWlU4OHUyamJ0WXloWFBSaU1tOEh0dWtWMEpBaVpKUQo0RGpnSTF6RlpWcmhGaXQ5QTYzQlZLTU1SZHBxNExqeElXemlNTnF4Z2t3ZVlrQi9TOFdQQU5pYUpnaEhJWmxoCnVwM2Uwb1NTUWxha0xVdXNTU2xpTmdyNWpQbW9kVG1Jc0VFcDcyTC9lcU9uVlgrNis1b0YyU1pVZXNxMWwwNm0KUGZpeDFiZ3FRYUdwYTlyaVU3NEF0U3VMNWI0OHNsaSs2YU5XaTl2cjhUZVAxQ1hKNWZuTU96bzN2NXh6MjA0SwpOUTE4WVVDYmlqWVpIczFFSTRnZ2RKbDlhNFZ1TXl0Y0pwWW52b3l2bkVuVjdiV3pyUFdmcmNqcStkU0ZjVDBMCkMzSm00QzhRaWtoUmlaelhvWFZxS3dHbSt5Zk8rcHA5SlV4M1J4MTdoM0FqaDZkcjVSakM0cTJzKzltbHl3TWsKN2hNN254ZVp1NGswCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRFBodE9wUDZPdUZmSlcKbVVEMUlWL24razM1N1RmNFlMYzdhN1RtMjlXZ3d2RnBqSnZSRFhqRXd1UW85R2N3MVFud1YyZUc1OEdRQkJubgpsMlo0b2N6Q1pCQ2lrd0NJUWJGR3h4dmdhU1oySENLdGtaazUxRUtuWElJN3Fnd000aXpxV3p4NjZ5MTE0dzB4ClJvdnNUcE5zdzIxdXhOY1l0RVQvcWFEa01iZlZsa2pac2hsRGRHUU5ZaDdtNTBPK1U4emkxZjF5OTJLOG82NksKZ0RLOGNrTXVjbTZLSlhxbXZHRW5nRGFibDFpcVZaNXl6VlBMcEZaYitPdmpMYzY3aXZVZmtwWW5ERm9ZMXRoOQpnb0J3Uzk1S0d0aW1LRmIwOWZTUkFMc3BKbTFoSGhrUHZncGZXMUhGeXYxWGtncHdLbk5zbE12MjFCVnFjMnlCCkk3YXNMKzZvWmtqcHNuRk9UeUtEaGY2Q0RQOVdvL1d6cXBrNlQ0czhxaDVrZTFEbkluQnorTVdPYWlzclc1UDEKcWlrK0c2dlFYZm54MmsyY2RDc0t6ZktYdEp5aEVhL21KZ0xSMS9pbUQxMUZIcDdLMDNpeDI5NERENzF4Q2xHeApUYXppNG5hZ09UVUhGTkFzaUlSYmZKVGNvYkFWOFhPb1c1cnIwNmdxaFRuTkJFdXJCNzBsc25reHZPbW5ZM0FECnl1ZXh3a3VkSnlWNGl0WG5KSVBPNjVFaUJZODR2L0k1MmdvZzc3aUc3MTdkRTAxSDZQMlhrQkpKaHdYSEFFUjEKaG5WWlFwSXk3eTBkbXlOZ1FJaGFvWUZTQkczN2hOcEl5S0FpYmJad1NPNzVyMkJHcngyMkZqazJwZEJ4Q1ZXMgo5RDdyMW9KaE9ieWxMQ2R0RWR2NWNKaU1tWnVocndJREFRQUJBb0lDQUdhVGJJU1FOYTNqSUMwb3hDQkY5bHM1CjhCZjBab0ZwQUxpb3RMcVZkNkxtS0tCMHhVSFFLRjBOUGV4Mlhaa1gvRGtsWXNFZVJhRVRQZUNvaDVoaDFVMVMKVzV5WUQ1L0o1TCtveEFFb3lEK0NDYXdFTnhvTDdrUStLQXNvc3BzZG9ualdUdThzMW9RYURkZkkySG1kbnlZWAo5THZYSk1DTHZqMG1rYVdwWTRYNXFobWNlL3RKQ1BsS2doNjh1ZEhXSndRS0pLUVNYbVlDZTgvdXJPVlRqeHhpCnFIdTFLY3BIZTdna0dobk85WjhBQWZrWnYyejlWa2hRb2Z2aEZQbkRKZ1VNbGhaSDl6S200MHdxV0tUcEF6OWEKeExKZ1p4YmVpWnV3b2xJbE1kUmFwYVdQMkIycERDSzVnbjZwNjJua3ViZTJWcGl5M01FSXUxMmJrdnZLRjJxVgpaYWhpaWhiNHpFUjk3clYzVUdJd1RPWFZPalIxc09PQ21JeGZ3UU9DTXdiMHFuUlpLSW5uYVdkaURyREMrcXpqClFqek9KVzJIUjZnb0JlVTZsay9TUVBydXVEYTUvTEdENUpTdy9KaWNmMmRzVkN2UkpRTHBjdnpBY0hnZEFWNGwKblFuWHd5c21oRlhqVGVFQUgxV3h0aG42WjRCME1mNEprZzlLQ0RIdDkxMGk5SjF0MkJxZDI1MC82azFLeGtneApQU252ZHRJSGVLVkp0NEpwTTV3ZkJNU1FXZC9uaDY2WVhrUDg2QkxabkVpTmNoNU50WFM0NVJWV0V0NkpyaFFkCjYzY0VMQkF0OUlnNGFLc0RGZ3FHMi9SZzhxTzhEamd3RDFwaTFKdDFqai9tRndFK2NHT0ZmdmVnYmV1d2IydloKZmwrb0hReGNnSnUxWFUwdmUwTEZBb0lCQVFEK2cwZ1U0dGEwNnNEaC9jNTlCWG9PVTFFSFRKNlg0bUdyU0NNNgpRWWZqdzB1U0JoVEtjMHoyWU1zOEkxNzdNditkUHE5QmQyMFJiT3k5bWNlRUwzRVd4emN5VGxQVUUyZHpNeVlkCnFsa0lCSG05MU53NnE1L2M2dkl4OUdacUdKdkUwUFRDYmNzT2J4WHd3Vmt4ZzY4MGZxM2JacHJnVGRleDNrNEwKUmk5UEtyUmhWQmUzOHhpY1NUamZTNkcwdG1QWXVyalA3WlhEbnZ6ZndOTC9XZ0NwVjRDTUdJQmh3TkRrVHFoVwo5aGQvOVloYTRoaEZpMFg3ZzF6K09NVWJDbWVpNWpMcnF1djY3Mlgwa2NvVVUyUEI3NnNxTUpuU0tBQXhXaVdKCjZSRXA4Wjk4UnNtbk1GSnp0S01iSGZ2bVFiUlQ1MnowckpqR3huVWtsQXZ2cklTZEFvSUJBUURRdlVLUERCRU8KYWovSHU5ZExlYjY4OFRnRlhIQ3A1dWdrVk5hcm5Wb2ZReTBDMlY5ZHF0Z3FFWXQ1QnV1T2Y5dWZxMGEwRlhBWgpxdklaV3hGSDU4em01WWRaYjloR2szOXVwY0dRYjZvZEN1WWhzcTJKamprTVlsalZvdjU3enlBVVFHc1loQXduCkVtMXFNWlFLdi96cFBQR3RZSVdSNlZiSzFsL0VpZlpuTU1CSmptVlJXZnpFQnpFLzhiUTB0SW4rY3hHNWpOVzcKakxXOFFmTkNUUDhDV0t6bFp1SWI5UGZFUVZDMDFSbEgvaURUUm1DcWlWeWdsR1ZKZlpZaE5oS2E2TkI5amtGYQpsZkIvMWN6UUcrQktVZEFUUVVqdDIxS05tUW1SWmdLZTdRVXJROGxmQXR1TXV4Q2k4RXRpRm9MM1VlL1BxYXhtClF4ZzU0V3JwdXQrN0FvSUJBUUM4aHo3RHlleEZnNGR4WC9LdkJYbU9Wd1UwcFBydGcxSFo4TXUzZ1lkSm5nYkMKbWlLWWZLUkw5Uk5XN3RTU3V3cEJ6b2MvdFZsamlRNHN2RmJnZ2N3QmxYdzdsVzNmTUtoMjJ6S20wdUswWDZ4VwpnL0RHdlE3a05GMUh4OFI5WHRFMEQ1emUwVG1TN1pLUkRvZ2xkMmczT0lkTWVFck5VSnd3TTM0WU45c2ZoNENxCmdBSTV6cWN5VGNNRkZSOHBuOW1DVjM1Qzk3anllVGpUL2gvTjZ6dUdOVDBSaWF5L3ZIYUFTQXZHcnZCbFp0bWsKaU1wMTZWN2pta0V1UjVzcUZxRUNPQWNNTDBZeVVWZHl2UE8xN3JkOGx5NXhTQ01KVzN3WkVxK3Y0cWRHTEtkNQpCVzZtbTlMWHhyenpmMWh6RGNTb1NrdVpTcWk0eFpWTWpTWHlXaGE1QW9JQkFIaCtkOWhwUjhOQmMvWFJLZE9JCndLRUN3YXJlbEs2Tyt6eFZ1T0d4NEY4aGdPOGZHWnpSVFJ6anFkWkFOMk8zek1pYnJ5R3ZLbG0yd3kvOTBMam8KUnZDV1dJNDVNT2gwcGwveDBRMldWK1dSOEF4TnZ6MGpXeTBaN0Z2T1RnYWNKdEZwNmlocHVUWW92ZjVLQmtJNgpWejB3RC9aY1BGNWhDdGZsN2J4ZlExeUgyTWZkS2dGTzU4a2t1YnBHeFJhVGpRRFQzY3gxVHIrSDF6U0lBV3NwClZSOCtudmVCYjA1aUYxQXp2K25UQlZmNGkyeEtPT3pZaEI2eDZ0SUVhOUJhRFYxY3ZWVnM4NjdkMU1tR1drZGIKZ0JxR3BZMG41M2hlWFlZZGJGZUJRa3dKV0MyRVlNNjJzSlBKUEM1Q2RkRjJXejEzRCs2WTdFclB1a0ZYTFVjawp0NWNDZ2dFQU56Y0VsWVpQRGJQUVZXSXV0d1ZsWG5tRFA2UUhXa0Nmd1Jra0d0MjJPWjRZaEcxZWFrNE5DZHBKCkZoK3hva0dFMTBaN2xpSklxSU1NZGpWZjZJaVlyVGhYMCtDMlNmZjJqeWE2STF0STlyMncyVkNPVktQc0tLalUKelhXK3RBMWg5ZGRjeW1EdDlmNUxLS090MjkzT2FNd0hKdWQ2T1ZDSWcyWitrTEdUN1VZMzZvSThmZlhLRU1WbwpIczU4NmNMQ1ZDUHNTSzNDWmZmNzNhQkJvRUR6QS9OenNCUGlBK2tseHZKaWlkSFg3bTN5UkFrczNZVytUakRwCkZZZWk4MmE3Q24xWkVnNk1VTlppdDVJQjBXVHhaRW0ySWwzY1kzQzNGZFdKSHJrK3A3UHpKaGt5WndHYTJWZ2sKOVJxakR5cDl5MzZrN0dhTWpPRUo4T0J0WVRPYUpRPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= + 1 + + + 53bbc691af94a + + 53bbbfe6c587c + internal + 9999 + 9999 + + + + opt1 + 10.69.69.1 + WirusguardusGW + 1 + inet + + + 10.69.69.2 + + + wan + + WAN_DHCP6 + 1 + inet6 + + + + + wan + dynamic + WAN_DHCP + 1 + inet + + + + + + + + lo0 + + single + 32 + 10.10.30.1 + ipalias + 68dcdf841335b + + + + + egonetix.lan + 10.0.0.21 + + + + + 53038dda9a6b6 + + all + all + transparent + c2VydmVyOmluY2x1ZGU6IC92YXIvdW5ib3VuZC9wZmJfZG5zYmwuKmNvbmY= + + + + + + + + + lan + + downstream +
172.20.20.0/24
+ +
+
+ kea + + + WireGuard + + + + + + + ssh_host_rsa_key + bZe3rsTajkRzfcXLhQt5F7xA3nvTamVSy3vvvn7OHUw4G2C0s+KqIvnPP3+PE2XV+o/ns/9xPDViA/E/uvj99+MfwFRVTWdVjmV1nq1Edk+fUGW1Q43n65UIsrqLqY4OjAz2jJjCJ294RiQcThVcsoK8AnCVTE5yZqdt5TuHuvEiYSd4WfLdI7qJu+6WtDkwTVK5uzGG15jaqjVtC361KG3XGgkQWfFeJbiJBQbcC2nWOdOR6qWUuDe4cEWnfut1M3YqICYRR+gvltBVgd++ZDX6bTIbOK+UUx6vo4trDCUN45h6QMlr3ZwifbJIreyT2simtLWbg0XkjcrTul0bg0Jox46PC4gBe5Tp8ld52WKs0OW9GS/L0oHZsxC5kPJe2hmJpoqCmnpm5DZbjTxeq8Rm4Jn7BjR9aHCcoG1LPYt1vYwLXja6X8aJTDr3L1nDLOx+XG+WsYNgd0lT1Zt8QAltHQE35h34ULE1GIbLVfGnZH1TKjuuhxkNritfo5mXYR8Maq2W+EFUPfSJ+zkYBz9elY3bwWcqICuuppGdN3aP5mtMukFcdQ5/s0ooTniOTMFsRIvMiNWBXNxnwfjGgw81lLmacFOmIADk2ToNMdaMBHiZloEFd/lTYor5i3zTGJnaiek0UF+FHG0qlw97W0UL10vQBN08eTJADzzr5ZVhZpjspX7xjvDFkAltgaUTjnxZsnwwMaZrUreiVwm5S2dZIs1dxTnKwTMVYFtQ8z1MqMKDFMSXre0exOMKsl0mCpVHbfiiQbVqPtUP94onhLkL7vMc5FzSPHuJLMC6/yLMYgzY+j6JFNzZSEqMd5tBb9xwmKq5J+pjg6O+t+58oGvDXfCo2FTXiG+RPAASijKoMhE6ZCgada+HY2YkOXuM4ruXgzRrx7ZHaktMelc8f6JUCKGDCf3sOeiMex3gmcrqVlMQY/785BaWoN94o2EJLMha2bYPT9lpWWgB2oHCeFHUgXDv0QTrxyiac/z4wNOcZGIizYtM1705MX8LnxHhN+RKGEin2Akylh6RUSJRJyLXGjI1qra/5/e52mwvQOBqC/ZzOUVtiZdrF7hkVzVsKn0Wo7eK/DBiROIwKRDW4lHJkVfwQI+z9OnQN7SZmTOgLHT3nIXFyYjcEacwxdLXc58PC6sbQ8sl3jzedFKQp3EwGVXhFfGdhaBldPU6MrkvAKqQsFi/Gls1t8JnfZSQe8oqduwHJy++LvX6vN66QvVFZuE3oUH5EKtmG3of7Icqv0DyBOF1sRgrMdJ2MX4kUYJqbJCWYnbOFFv3qwwNS9HgRzzv4uuSar04WY4bipaNO3WAXt8rnSMjy1IzljBGCgvMuz5976Yc+1s4ee14S1tdBNeMPmVMhBCuqylCT1xKYZgqwB9IzffE6Wchm1jhHGejVG0irwuabr02eoyWSblypNMXTUUvuV1809jLD8E0phQhGoA2xxquGkhS79zPNSYFScGIvDFlGBqXs9As1oaRivARyhxTjNn8l1xXZHEouF/Kn4Efn/e208dvGVzMen7zc9ehgDOmIUpmVjx3mMQKM7okav/Q4o9vO3TS/rxDK6636JAEdEY9Z1OAqBAUJLKDOSv6tJVoJXK2WRbX7g8R4bumCOrDRW7J3dfE4F7ZnmbAMAsoAM5vpQifpdqzGTTaCJ5olqqj455Pnh3fZuBZZCoa7jZwQcB4gY6DOV1Y0oaMO1eMlAfSy7ls7eV/9KUWH/ceRl0tcnBxsY2FDweir9FQjYje41kE/ZDzzr/25IF9y01t5HgIVO0iEhBidJMs0Iz8W4Y6LM/+u6shOgscg45fE2vsRGXg33jhjo6ToA3Zi3yqetOCEyBplt7Y9XhBzrD/n8Iv+7VUV4hak3bs9Ig30eR2yrp2cvvc1Yk733WrQVj9i6cR+M4JyBX+dnzEonad2m0MuXFBHf1y4Uz/IbIaa+JeSofERixUspFVn+9nmfFjrPZhEoDcQ/lgb4cIawPw5zNK4tAvYT/0UijTz1gW/VOgZgJSPSx99kVYcr3sXdhCt0z6yxES6Hkq8R9hAo19S00k48qTlJFhToiXNnpvsprBjMad/YDyuFtXu6eZmIerYts9UdIkAqRhYtxrCoX201xx9gPRgEXoj1sO7niCNF9X1LBtRUMrR+x/KAz/xrUOB6rv0pEBixhAdFHuje/vZBI6WzUNvZrenxXzteq4KSqJ4V6Y/CDo9/pXYDb46fTTKvxy2tKXxe0ByGi8ojS18rHzWlMS6bLuFyryx0ct1pAJ4/5bJ+wpdD0qrL4MdQpphuHmn7vPtIHfcQI2t+Ckt88nNI5hOZxARlX4S5dAis+/0j49X5LkltonavCB8YP6m2Z/Df78iSqXAjl0wLjG3csfewtrbGg2rx3NpgFXdZ1usHerLMt9X2qpUOZxZfGExA0qJkywb2k5O5STNcBWLzovT5yxUXV88wuk9900SF6b9NkYRctyugNtvvrJ+qxiUnN0Z+eNyUcQ97qKGw7wXb+vyFx7wc9im4fnDfEaVD17//vcOovLQekKpDKpO7iMvpBP9Y4SzpTy7CqPbaSFgLSWEjv9bWmKz6N8o19ozxo5eLpSNgT+aglqgZJ/iQR/KAEOnSE/u4S0Rd4SFSlAvwNgtkPJEAOkdX+oypj1xznOg3VMW8N8Xgq/ncMPsmZDlN8827cJ/YMgTSZbrhJPREcT6A1J9C9b0BM9sUS8mUr2B/+6e6Bo4+Xes+z6QpITGid7lfCXkHJL1XQE/pB4TzUmEjhb9/3miiNUe5etB8QbT/eDMx1CDgq+tn7QNDtwCamRCsoa8fFe36/iINmSJNiv//pA5hTPgJ87+zc2pbDDa1eHn880e5LC5vwi+cW3PY7cKmFzSieuiJcGu8CEnDpH3UfIAfzr6lwT/pAWNqARRHKCTQnnHliVwrJPyFeVyLHWUfSySW7EGoT6+IO5FGfRuICwgwPoJpLFbFN95FvYJcQ4VCW1MsTkJS/TsI6rZ0xmlnM5PWhZRDgejK3S4HJ+z5KOogQFSpKMAo+Y8OZ6Bem3RkETSU8CpUvzIYyYX+XdJGQ186yLoezeIXkM06WO+aIujKxsAQwwoXeGYPq8spUV5bc6oe5ozGiV5ftV+5h0vp+Jv8quMXdTN/gXciy2Om78lka/4wWsRCL6v+gbpBEJYWba3xOxrVaqxM4OFaGd0SOdped24Yq1dGpIHZGuY3+qUURt7I8JVHHVo1yoy6cNmiV/CKI7OxtxnnctVo/z7WbHg4Q4vn4OOqWiHp/1Vgkv/iG7/wL/e3KIlvD/nyL/Aw== + + + ssh_host_rsa_key.pub + FcdHkptAAEDRvU8xe8omg1hMlZsMEkkEIXaIKBGbJp/e47959RGqf08o/QI/ibR9phJ5ZJTyf2XgAfFHCXgSOZleBTqmLnrZinsoq9xbffDl6JBrVwcmZdyIoLkolS1DWVBZkKOkpSl6Y/J36w2rG/merc7tm4wPs/ADJexaazuHUvPz0p/L5ZBmaDNXRKOO6IzQA4GGYt/MXJojmUczKNvloY2XULdducqm+VhlnWAHNzzbPE72LE5RGTjRBfSnYyIOFwelNLVg56XcC/tMp7TXa5KWTWAncw7fgMOXE5oXpld0L4jtCLvQKuBLIcDogk3A3ZJYAUJWGEnMzYBzp8K9gBAG7HqdWsIeTBV6c9NUnlWPyh5J10OPTc3Ks91WDuq4Rh5SFKs7oNb4mgaLqcaM0RTy5jXg6t7N99m/b1q4Cxkelyp+LrLdvpg4tS5utXTka86oJ5qBJubJRTS2CPO0OCB6XxON/qRdQr6VmEW57YkvWhq1YsoT+Ju3KrFwkhslzrx0NZ64nUucWS3VsPaSSt/rBdgc7rfhZh2GR49rh3BBrg2ZLfXafi2JQNSNVqMyFhRmOnGC6iO3FkbBov07beJZtu+RsS0lpQjlPlofq4QZPxMpwx3Io6sRZ05WJHsTjbZCW0aR9jS5uvNe0KHJJcix+Rx+PlElj/gtu5eHPgxkbOWeDgYgtyMJMozFEmUrjul5OsyJybU98W94OMEtUlQeOvCzPtOsSz6JI6H2tjxe2lr3zUHY8u3Kwxbfvr+/pmGY/6JprdK52NKDIP8U1dAX83v/06b9r38= + + + ssh_host_ed25519_key + nZHNboJAFIX3PIV7Y7SD2LLoYmYYGeRHEEGZHSN1EIFYFASfvk6TJt10029xcpN7cnJy72TyBBHT8kZrn3hhSEf+xorhloxsksjlROEqKnntPVL80rD9+ZYVBEqQqXW8iuRIeKW3LIA/ICnuXertcQDixnZKMHjbqF9LE8ZF8mosjiCY7k70TZwt3OZzR1yveZOXl+4BkUZICuJj1Iin3xY8HWcnE3S1kojfqf8NVWRpZOmWxrmnRr5ta8XMcUFv9H1qNjORUDKmPGwzI3ebT3vhFVf/MmWGnlrHAQfCXlDRYmUYzNbcVVMX0nOwaVish63sR+tVx9UNPKgrwMByxvZZ/rGFvVPFNQdamZnl3Kn6nAuC4V0Jlkgc3pXvexPP+PsXXw== + + + ssh_host_ed25519_key.pub + Ky7O0E1NMTI1NbRUcAQCZ2O/qkRnw5woF09DvxBXU5CYp7dfVnFAgX6Ui2WiZ1qlc2C6t5lHeqlzZaV7qXt4rr6vo0d2YFBRVJhlcKlCUX5+iUNxUVl6YklqeWKlgaFeanp+XmpJZoVeTmIeFwA= + + +
diff --git a/config-gw-st01.egonetix.lan-20251010104656.xml b/config-gw-st01.egonetix.lan-20251010104656.xml new file mode 100644 index 0000000..954b19b --- /dev/null +++ b/config-gw-st01.egonetix.lan-20251010104656.xml @@ -0,0 +1,3237 @@ + + + 24.0 + + + normal + gw-st01 + egonetix.lan + + all + + system + 1998 + + + admins + + system + 1999 + 0 + page-all + + + admin + + system + admins + $2y$10$r8clEe7.5B.t7GRHNjb1vOWnAKyP8INuYqGWWKVwYKDB1SArBzB0y + 0 + user-shell-access + + 2 + + + pfSense.css + + 2000 + 2000 + 2.pfsense.pool.ntp.org + + https + + 5fe731bc7be97 + 2 + pfSense-dark.css + 1e3f75; + + + 2 + + yes + + + + 400000 + hadp + hadp + hadp + + monthly + + + + en_US + Europe/Berlin + none + + enabled + + + 115200 + serial + + + + + + aesni + amdtemp + 0 + + + /usr/local/etc/pfSense/pkg/repos/pfSense-repo-2_8_1.conf + + + yes + + + cron + 0 + * + * + * + 3 + 20 + 0 + yes + + + none + none + 185.222.222.222 + 45.11.45.11 + service wireguardd start + + + + igb0 + + + + 192.168.178.3 + 24 + WANGW + + + + igb1 + 172.20.20.1 + 24 + track6 + 64 + + + wan + 0 + + + + + tun_wg1 + + + 1300 + 1260 + 10.69.69.2 + 30 + wirenuenbesch + + + + igb2 + + + 172.20.70.1 + 24 + + + + tun_wg0 + + + 1420 + 1380 + 10.5.0.2 + 32 + WireguardOpenvpnGW + + + + + 10.0.0.0/24 + wirenuenbesch + + + + 12.1.0.0/24 + wirenuenbesch + + + + + + + 172.20.20.150 + 172.20.20.184 + + + + + + + egonetix.lan + egonetix.lan + + + + + + + 172.20.20.4 + + 172.20.20.4 + pxelinux.0 + + + + + + 4e:8e:a3:c0:49:06 + + 172.20.20.10 + srv-wmw-ha01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 5c:80:b6:96:bd:6f + + 172.20.20.21 + kollekka-w10-02 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + 30:05:05:61:7b:d7 + + 172.20.20.23 + mmpc + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 30:e3:7a:f6:35:42 + mmpc + 172.20.20.24 + mmpc + + + + + + + + + + + + + + + + + f4:4d:30:6b:a8:0d + + 172.20.20.24 + mmpc + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + d4:f0:57:30:fe:26 + + 172.20.20.25 + switch + + + + + + + + + + + + + + + + + d8:94:03:88:55:bb + + 172.20.20.26 + HPE + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + e2:3a:07:91:be:be + + 172.20.20.27 + kathisipad + + + + + + + + + + + + + + + + + + + + + + + + + + 00:c0:ee:2e:90:75 + + 172.20.20.50 + MFP1 + + + + + + + + + + + + + + + + + 00:1a:22:08:87:a7 + + 172.20.20.51 + homematic + + + + + + + + + + + + + + + + + f4:92:bf:c6:00:b2 + + 172.20.20.91 + WG-AP01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 78:8a:20:8c:bb:d9 + + 172.20.20.92 + HWR-AP01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 00:04:13:b6:0a:5b + + 172.20.20.94 + DECT01 + + + + + + + + + + + + + + + + + dc:9f:db:e8:2c:33 + + 172.20.20.95 + WS-AP01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 90:06:28:cf:68:21 + + 172.20.20.120 + Katha-Pult + + + + + + + + + + + + + + + + + 48:88:ca:a8:3c:12 + + 172.20.20.121 + Lenovo-Tab + + + + + + + + + + + + + + + + + 8c:1a:bf:91:e8:7f + + 172.20.20.122 + sg5neo + + + + + + + + + + + + + + + + + 5c:f8:21:ab:ea:43 + + 172.20.20.123 + Schlafzimmer + + + + + + + + + + + + + + + + + 04:c4:61:df:35:ce + + 172.20.20.124 + BoschNyon + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + c4:f3:12:13:ff:61 + + 172.20.20.125 + hugo + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + ee:63:14:b9:62:17 + + 172.20.20.126 + Iphone + + + + + + + + + + + + + + + + + + + + + + + + + + f0:79:59:37:9f:80 + + 172.20.20.127 + z97ws + + + + + + + + + + + + + + + + + + + + + + + + + + f0:79:59:37:9f:81 + + 172.20.20.127 + ws97z + + + + + + + + + + + + + + + + + + + + + + + + + + 7a:f2:70:ef:88:2a + + 172.20.20.185 + Wohnzimmer + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 00:a0:98:6f:e9:97 + + 172.20.20.200 + srvborg01 + + + + + + + + + + + + + + + + + 00:a0:98:0d:21:51 + + 172.20.20.201 + srvpbshome01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + + + + + + + + + 10.0.0.21 + 172.20.20.1 + 10.0.0.21 + + + + 172.20.70.100 + 172.20.70.254 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 02:ed:8a:67:24:33 + + 172.20.70.10 + srv-wmw-ha01 + + + + + + + + + + + + + hmac-md5 + + + + + + + + + + + + + 14:2b:2f:a1:2c:18 + + 172.20.70.30 + m5stack-atom-echo-a12c18 + + + + + + + + + + + + + + + + + + + + + + + + + 84.200.69.80 + 84.200.70.40 + 46.182.19.48 + + + + + + + ::1000 + ::2000 + + assist + medium + + + + + + zabbix + + + + + + + + + + 161 + + 162 + + lan + + + + + + 1 + + 200 + + ipv4 + bzip2 + rfc3164 + + 10.0.0.48:514 + + + + + + + + + + + + + + + + enabled + + + + advanced + + + 172.20.0.0/16 + + + + + + opt1 + + + + + 10.0.0.0/24 + + + + + + + + + + + + wan + + 127.0.0.0/8 + + 500 + wanip + + + + + + + + + + + + + wan + + 127.0.0.0/8 + + + wanip + + + + + + + + + + + + + wan + + ::1/128 + + 500 + wanip + + + + + + + + + + + + + wan + + ::1/128 + + + wanip + + + + + + + + + + + + + + 172.20.20.0/24 + + + + opt3ip + + opt3 + + + + inet + + + + + + + + + + + + + + + 172.20.70.0/24 + + + + opt3ip + + opt3 + + + + inet + + + + + + + + + + + + + + wan + + 172.20.20.0/24 + + 500 + wanip + + + + + + + + + + + + + wan + + 172.20.20.0/24 + + + wanip + + + + + + + + + + + + + + 172.20.70.0/24 + + + + wanip + + wan + + + + + + + + + + + + + + + + + 10.250.0.0/24 + + + + wanip + + wan + + + + + + + + + + + + + + + + + + 10.250.0.0/24 + + + + opt3ip + + opt3 + + + + + + + + + + + + + + + + + + + + inet + reject + + + + + +
pfB_PRI1_v4
+
+ + + + + + lan + 1770009462 +
+ + + 1685626236 + match + wan + inet + + + out + yes + yes + + + + + + + + + + + + + + + gwg01 + WANupQ + WANdownQ + + + + + + + + + + + + 1748717731 + pass + wan + inet + + + + + + + + + + tcp + + wanip + + + + 853 + + + + + + + + + + + + + + 1750757436 + pass + lan + inet + + + + + + + + + + +
12.1.0.0
+ + + lan + + + + + + + + + + +
+ + + 1748717976 + block + lan + inet + + + + + + + + + + tcp/udp + + + + +
10.0.0.21
+ + 53 +
+ + + + + + + + + + +
+ + + 1684521486 + pass + lan + inet + + + + + + + + + + +
172.20.20.23
+ + + + + + WAN_PPPOE + + + + + + + + + +
+ + + 1733090411 + pass + lan + inet + + + + + + + + + + +
172.20.20.27
+ + + + + + WAN_PPPOE + + + + + + + + + +
+ + + 1715453533 + pass + lan + inet + + + + + + + + + + +
172.20.20.4
+ + + + + + wireguard + + + + + + + + + +
+ + + 1697655274 + pass + lan + inet + + + + + + + + + + +
172.20.20.24
+ + + + + + WAN_PPPOE + + + + + + + + + +
+ + + 1683015935 + pass + lan + inet + + + + + + + + + + +
172.20.20.21
+ + + + + + WAN_PPPOE + + + + + + + + +
+ + + 1697123359 + pass + lan + inet + + + + + + + + + + +
172.20.20.197
+ + + + + + WAN_PPPOE + + + + + + + + + +
+ + + 1749802162 + pass + lan + inet + + + + + + + + + + +
172.20.20.152
+ + + + + + WAN_PPPOE + + + + + + + + + +
+ + + 1749802879 + pass + lan + inet + + + + + + + + + + udp + + lan + + + + 1194 + + + WAN_PPPOE + + + + + + + + + + + + 1749803624 + pass + lan + inet + + + + + + + + + + udp + + lan + + + + 1195 + + + WAN_PPPOE + + + + + + + + + + + + 1749803574 + pass + lan + inet + + + + + + + + + + udp + + lan + + + + 1300 + + + WAN_PPPOE + + + + + + + + + + + + 0100000101 + pass + lan + inet + + + + + + + + + + + lan + + + + + + + + + + + + pass + inet6 + + lan + 0100000102 + + lan + + + + + + + + 1750253154 + pass + WireGuard + inet46 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1608992762 + pass + openvpn + inet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1748422762 + pass + opt1 + inet + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1706195803 + pass + opt2 + inet + + + + + + + + + + + opt2 + + + lan + + + + + + + + + + + + + + + 1749802291 + pass + opt3 + inet + + + + + + + + + + tcp + + opt3ip + + + + 853 + + + + + + + + + + + + + + + + + + +
+ + + + + + + pfB_PRI1_v4 + https://127.0.0.1:443/pfblockerng/pfblockerng.php?pfb=pfB_PRI1_v4 + 32 +
+ + urltable + +
+ + hetzner + network +
10.0.0.0/24
+ + +
+
+ + + + 1,31 + 0-5 + * + * + * + root + /usr/bin/nice -n20 adjkerntz -a + + + 1 + 3 + 1 + * + * + root + /usr/bin/nice -n20 /etc/rc.update_bogons.sh + + + 1 + 1 + * + * + * + root + /usr/bin/nice -n20 /etc/rc.dyndns.update + + + */60 + * + * + * + * + root + /usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 virusprot + + + 30 + 12 + * + * + * + root + /usr/bin/nice -n20 /etc/rc.update_urltables + + + 1 + 0 + * + * + * + root + /usr/bin/nice -n20 /etc/rc.update_pkg_metadata + + + 20 + 0 + * + * + * + root + /usr/bin/nice -n20 /usr/local/bin/php /usr/local/sbin/execacb.php + + + */1 + * + * + * + * + root + /usr/sbin/newsyslog + + + 1 + 3 + * + * + * + root + /etc/rc.periodic daily + + + 15 + 4 + * + * + 6 + root + /etc/rc.periodic weekly + + + 30 + 5 + 1 + * + * + root + /etc/rc.periodic monthly + + + 30 + 4 + * + * + * + root + /var/etc/pppoe_restart_pppoe0 + + + 30 + 6 + * + * + * + root + /usr/local/sbin/pfSsh.php playback svc restart openvpn client 4 + + + * + * + * + * + * + root + /usr/bin/nice -n20 /usr/local/bin/php /usr/local/sbin/acbupload.php + + + 0 + 3 + * + * + * + root + wol -i 172.20.20.255 d0:bf:9c:45:bc:60wol -i 172.20.20.255 d0:bf:9c:45:bc:61 + + + 0 + * + * + * + * + root + /usr/local/bin/php /usr/local/www/pfblockerng/pfblockerng.php cron >> /var/log/pfblockerng/pfblockerng.log 2>&1 + + + */1 + * + * + * + * + root + /usr/local/pkg/servicewatchdog_cron.php + + + 0 + 23 + * + * + * + root + /usr/local/bin/php /usr/local/www/pfblockerng/pfblockerng.php dcc >> /var/log/pfblockerng/extras.log 2>&1 + + + + + + left=system-processor&right=&resolution=300&timePeriod=-1d&startDate=&endDate=&startTime=0&endTime=0&graphtype=line&invert=true&refresh-interval=0 + + + services_status:col1:open:0,system_information:col1:open:0,disks:col1:open:0,gateways:col2:open:0,interfaces:col2:open:0,wireguard:col2:open:0,openvpn:col2:open:0,traffic_graphs:col2:open:0,interface_statistics:col2:open:0,pfblockerng:col2:open:0 + 10 + + + if_rows + + + + + 1 + true + true + 0 + 1 + + + + + gw_ip + wirenuenbesch + + + + + + + + + 5 + + UDP4 + tun + wan + + + 95.216.52.28 + 1197 + + + none + + p2p_tls + subnet + + 664caa023881c + 664caa4721844 + + Iw0KIyAyMDQ4IGJpdCBPcGVuVlBOIHN0YXRpYyBrZXkNCiMNCi0tLS0tQkVHSU4gT3BlblZQTiBTdGF0aWMga2V5IFYxLS0tLS0NCjZlODU0N2ExZmM2NmQ5ZDBjYWIyNGRmNWRhMjFmYTk5DQpmOWI5NDlmYjAwMmM4N2NlYzI3YmQ3YmZiZTljNzMxZA0KMzk0NjQ4YjNjN2U0MTQwZWIwOWJjZjliYTAxM2E4NjUNCjZiY2FhOWEwZjE3ODViYmZmYWI1MDY0ZmZmMmEzOTIzDQpmNDhhYzZhNzcyNmJlZWQ5MTU2NzhiNGYzYTU5YzcwZg0KZWI5ZTVkYzIyOTZiODUzODJmNGVhYmRiYjk1MzkzZjMNCmUxMTM2MDJmNzliYTNiYWQ3YjA1MTZhODZiYmNiMjI1DQo2OTY5MmE2OGUyODU4NzRkNTgzZjkxYTMxNTUzZmUzZg0KNDM3NGI2MzNhNzFhMzljMDIyMjgxNmNhMTczZTU0NzcNCmFmM2EwMzZiMjE3ZWNiYmE4MTZiNWIzNmYyM2RlMDQwDQo5NDc3MzA0MDMxNjBhZTMzMDMxNDk4M2UzYTQzNzZjYw0KNmFkYjAwMzM1MjU4ZGU2NzA2OGNjZjhiNjY4M2M5ZTgNCmE5MGUzY2M1Mzk0ZmIwMTAyYTY0NDVjODZlMjA3ZWE2DQpkNDExZjU4ZDZmNzYxZDU2MzM5ZDRjN2ViM2FjMDY3NA0KNDBiOTkyY2RjNDI1NWNkNDI1NWIzYzA2YzZkZWQ0YWQNCmVjNGVkYmFjNWE2ZjFlMmIxNDFmOGRmNTU2MjlkZGExDQotLS0tLUVORCBPcGVuVlBOIFN0YXRpYyBrZXkgVjEtLS0tLQ0K + auth + 0 + + AES-128-CBC + SHA1 + none + 10.10.40.0/30 + + 10.0.0.0/24,12.1.0.0/24,172.22.22.0/24 + + + no + lz4-v2 + + + + none + 1048576 + + + + 1 + both + AES-128-GCM,AES-128-CBC + keepalive + 10 + 60 + 10 + ping_restart + 60 + 0 + + + + + + + + 4 + + UDP4 + tun + wan + + + de1077.nordvpn.com + 1194 + + + none + + p2p_tls + subnet + tls-client; +remote-random; +tun-mtu 1500; +tun-mtu-extra 32; +mssfix 1450; +persist-key; +persist-tun; +reneg-sec 0; +remote-cert-tls server; + 5fe7357dc96a6 + 5fe731bc7be97 + + Iw0KIyAyMDQ4IGJpdCBPcGVuVlBOIHN0YXRpYyBrZXkNCiMNCi0tLS0tQkVHSU4gT3BlblZQTiBTdGF0aWMga2V5IFYxLS0tLS0NCmU2ODViZGFmNjU5YTI1YTIwMGUyYjllMzllNTFmZjAzDQowZmM3MmNmMWNlMDcyMzJiZDhiMmJlNWU2YzY3MDE0Mw0KZjUxZTkzN2U2NzBlZWUwOWQ0ZjJlYTVhNmU0ZTY5OTYNCjVkYjg1MmMyNzUzNTFiODZmYzRjYTg5MmQ3OGFlMDAyDQpkNmY3MGQwMjliZDc5YzRkMWMyNmNmMTRlOTU4ODAzMw0KY2Y2MzlmOGE3NDgwOWYyOWY3MmI5ZDU4ZjliOGY1ZmUNCmZjNzkzOGVhZGU0MGU5ZmVkNmNiOTIxODRhYmIyY2MxDQowZWIxYTI5NmRmMjQzYjI1MWRmMDY0M2Q1MzcyNGNkYg0KNWE5MmExZDZjYjgxNzgwNGM0YTkzMTliNTdkNTNiZTUNCjgwODE1YmNmY2IyZGY1NTAxOGNjODNmYzQzYmM3ZmY4DQoyZDUxZjliODgzNjQ3NzZlZTlkMTJmYzg1Y2M3ZWE1Yg0KOTc0MWM0ZjU5OGM0ODUzMTZkYjA2NmQ1MmRiNDU0MGUNCjIxMmUxNTE4YTliZDQ4MjgyMTllMjRiMjBkODhmNTk4DQphMTk2YzlkZTk2MDEyMDkwZTMzMzUxOWFlMThkMzUwOQ0KOTQyN2U3YjM3MmQzNDhkMzUyZGM0Yzg1ZTE4Y2Q0YjkNCjNmOGE1NmRkYjJlNjRlYjY3YWRmYzliMzM3MTU3ZmY0DQotLS0tLUVORCBPcGVuVlBOIFN0YXRpYyBrZXkgVjEtLS0tLQ== + auth + default + + AES-256-CBC + SHA512 + none + + + + + + asym + stub + + + yes + none + + + yes + + 1 + v4only + AES-256-CBC,AES-256-GCM + keepalive + 10 + 60 + 10 + ping_restart + 60 + 0 + + + + ifconfig-push 172.19.19.10; + + + + + + + 0 + + + + ifconfig-push 172.19.19.9; + + + + + + + 0 + + + + + + WANdown + 3 + 1000 + + + + + 250 + + Mb + none + + + on + + dstaddress + 32 + 128 + 0 + fq_codel + 5 + 100 + 1514 + 10240 + 1024 + codel + 5 + 100 + on + + WANdownQ + 3 + + + + on + + none + + + codel + 5 + 100 + on + + + + WANup + 4 + 1000 + + + + + 40 + + Mb + none + + + on + + srcaddress + 32 + 128 + 0 + fq_codel + 5 + 100 + 1514 + 10240 + 1024 + codel + 5 + 100 + on + + WANupQ + 4 + 1000 + + + on + + none + + + codel + 5 + 100 + on + + + + + + all + all + c2VydmVyOmluY2x1ZGU6IC92YXIvdW5ib3VuZC9wZmJfZG5zYmwuKmNvbmY= + + + + 5fe731bc7be97 + + transparent + + + 4 + 10 + 10 + auto + 512 + 200 + 86400 + 0 + 900 + 10000 + disabled + 1 + + + egonetix.lan + 10.0.0.21 + + + + + + + + allow + + 0 + + 10.5.0.2 + 32 + + + + + + + + + + + 5fe731bc7be97 + + server + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVlekNDQTJPZ0F3SUJBZ0lJRFZoaVlhb2lsR1l3RFFZSktvWklodmNOQVFFTEJRQXdXakU0TURZR0ExVUUKQ2hNdmNHWlRaVzV6WlNCM1pXSkRiMjVtYVdkMWNtRjBiM0lnVTJWc1ppMVRhV2R1WldRZ1EyVnlkR2xtYVdOaApkR1V4SGpBY0JnTlZCQU1URlhCbVUyVnVjMlV0TldabE56TXhZbU0zWW1VNU56QWVGdzB5TkRFeU1UVXhPRFV3Ck1qSmFGdzB5TmpBeE1UY3hPRFV3TWpKYU1Gb3hPREEyQmdOVkJBb1RMM0JtVTJWdWMyVWdkMlZpUTI5dVptbG4KZFhKaGRHOXlJRk5sYkdZdFUybG5ibVZrSUVObGNuUnBabWxqWVhSbE1SNHdIQVlEVlFRREV4VndabE5sYm5ObApMVFZtWlRjek1XSmpOMkpsT1Rjd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURGCmp6NFFPZlVXRHcwMW50OXR4aGk0SmJ0UFh4STJ2NjRqeVVnVlpCZTArWll4a3dPUGpkV25MM2JjaXZMak8zeVAKdHU1MmxQT2lXb2E2WkxwOTNaRi9NTlVnbk50MlZLMWsyczJzWjg2di9ZWkZ3NWtvcDg5NkJ0UXhaQWlrQTBIbwo0dStINTdHZ3VqVCtqaERFWW9ybTlDWlZYa2t2N2pwSWVJQlZVVnRkZDBCNWNJbDE1L2ZDOS8zeXJLT1FUYUIxCks1WmZaS3JsOGp4Q2JjR0NoTmFza3pkT0Z2OS9VaHBzS3NzS0hXTlRnNFU1bnV0ejQ2VHFpRVlLc0VmUnJuUVIKWXgzbnRtdnNzbEVkSklCK2UrYTQ0eHBaemNIdFZrZ05iYjBUZzBNM0RCQnJGQTQyWFhsbTR6UzBpeUIwOFhhcQpXR3hyRWs1bkFKMm8yY1dPMlI0NUFnTUJBQUdqZ2dGRE1JSUJQekFKQmdOVkhSTUVBakFBTUJFR0NXQ0dTQUdHCitFSUJBUVFFQXdJR1FEQUxCZ05WSFE4RUJBTUNCYUF3TXdZSllJWklBWWI0UWdFTkJDWVdKRTl3Wlc1VFUwd2cKUjJWdVpYSmhkR1ZrSUZObGNuWmxjaUJEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVUQ5cVlyc05OTzNGegpENTdrRTR0dGtyendqbXN3Y3dZRFZSMGpCR3d3YXFGZXBGd3dXakU0TURZR0ExVUVDaE12Y0daVFpXNXpaU0IzClpXSkRiMjVtYVdkMWNtRjBiM0lnVTJWc1ppMVRhV2R1WldRZ1EyVnlkR2xtYVdOaGRHVXhIakFjQmdOVkJBTVQKRlhCbVUyVnVjMlV0TldabE56TXhZbU0zWW1VNU40SUlEVmhpWWFvaWxHWXdKd1lEVlIwbEJDQXdIZ1lJS3dZQgpCUVVIQXdFR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFnQ0FqQWdCZ05WSFJFRUdUQVhnaFZ3WmxObGJuTmxMVFZtClpUY3pNV0pqTjJKbE9UY3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBR3hYYXpUSHZBZ1lNcGI3emRYVzR3aHYKdHkyT2p3R3pNZ3RpL2YwNi9tUHo1V3RibjB5VVYwMG05MGt5dEozamtUb2p6R3RvSUlrY1RPblhLSm1Oc04wVwpsdWdYY3padk04cklnUGNFWXI0Y2l2Zitrc29XbXN3TWI3d1RSTmk5Y2p2V2hwVE94N1U2VlBaY1JkQmVRbHZXCnJXZTR3UUZ1TVE5RjR2WXdKdS9hVklOR1kydE9NQ2pxNlZITWw2NWc5a1hZREx5WGR5UndjclJ6K0FUdHIwbGsKVDdjYTNSRThDVWV6R2F6aHlrZlkwUGo4WG1oVGwzTzVESFJNUko0YkFIOU4xcFBXSmtSS1U3L3hqYXU1YW1pTgoyYjVoUTNMN0NYRFZlSGJIS0pBT3owNXdJVXlxK2JIeHdDTTdrTGpnbUFmeTJlekx4aEN2bFdXRVNndTRCSkE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRREZqejRRT2ZVV0R3MDEKbnQ5dHhoaTRKYnRQWHhJMnY2NGp5VWdWWkJlMCtaWXhrd09QamRXbkwzYmNpdkxqTzN5UHR1NTJsUE9pV29hNgpaTHA5M1pGL01OVWduTnQyVksxazJzMnNaODZ2L1laRnc1a29wODk2QnRReFpBaWtBMEhvNHUrSDU3R2d1alQrCmpoREVZb3JtOUNaVlhra3Y3anBJZUlCVlVWdGRkMEI1Y0lsMTUvZkM5LzN5cktPUVRhQjFLNVpmWktybDhqeEMKYmNHQ2hOYXNremRPRnY5L1VocHNLc3NLSFdOVGc0VTVudXR6NDZUcWlFWUtzRWZScm5RUll4M250bXZzc2xFZApKSUIrZSthNDR4cFp6Y0h0VmtnTmJiMFRnME0zREJCckZBNDJYWGxtNHpTMGl5QjA4WGFxV0d4ckVrNW5BSjJvCjJjV08yUjQ1QWdNQkFBRUNnZ0VBRUczTEVYcGdZVWM3Si94Z1JEYTNFNGsvdkdnQmtiLzY4VXJwemEyWE14dVcKVytVSDVNWTh3RHg0Ty9ycUcrOTBlbGNTR1pabGRGam0zMVZGRlBaNkJRUEFsWWUxMEc5V1JBN1dEOEpLTStSMwphQkhPQ00xN3VZQWI0VWVhV0ZsVS85THZiSFBlRjZta2dvNjU0anIzcGlFamx2SFNVRVFWWUxWMHBxT3ZYMlJICnEwdEZqWnRxOTZXc3JFYkdnK1duOVMvcVJkMTdadWJRMDlPTTIyeWZTalpoTXlwRG0vdkdPT3U0U2tGdWVlSWsKY2l3R0JMRFhmZCt6V2xUS0o3a1NZcmhmaDNvQld3c01HWkpCOEFMKzlwMDc3RmN6REdOWGdDNEYweFVsQkthTwo2bHJKUi9CZXk0NEtmMTRHeWxENUZoa1NEa1B3eU1mQURIaWJpNGhmSVFLQmdRRCsvZ0JmVjlFRVdWOUlMeWV5CkRLSjJlQVFWRmdaekNOQktFdjVPNDkzZ1NqSWNrZWdCTlkycStrdkJoMFFHVlZ6aStDcGduQ1g4SHQvbkp5blQKOSsxc2VrMlM3cDlIVUtNZC9BTTdhMFdwTzVkYnltaGJSNFM1ZytuYXY0MjhwZnhnN1E3NzJsVHhKNitRdm5megoybkZ5dmZHMjFWYVJCWWlnQWNMVkZnRG52UUtCZ1FER1Z5R1dOUGR6eVFPeXdvTUcvd0tpTXVXVXZsZE0rNytaCk1ITjBpL3RLblJ4Rk9EZFJhdlYzQlk0d0I1czdOR3dMTFd4RUtaN1dPelZURE5xeXhRZExuYmYyUStSM3M1N2gKdm5pUldIL1k1SWc0UFNRN1c4V0pmSks2S1Z0RFo5YmVoQXZhVlpGSUZnTzU0TkdYMzE5eHllcUJ3aXRrR1dOSQp0RTRWa3Q4S0xRS0JnQjZYN1FXRGJNRi8wNDIra3AyckpHYmdXV1VLUW5YVXplREZUSnU4ZlNkbTM0Sk1BekQ1Cjh1aGJwWEV2d0hxZURVbnlDbXVTOEgvQ1dJek1SeGwyZXBiMFNaQmlidHZJa2ZtTC9mdElFSkNRWk1XUGtGdTcKUmZKWUlGdXRkZHozY1VOVHplTnJ1NXMvYnJJSUdDNDZ2RGZQRUV3bVpuOTUwWDJaR0g0bWFLOWxBb0dCQUpxegpLVXBNWTluV3B1RE9JSDdiZG9WbXAzVWVCVi9SV0Q4MjhFYXVURUdGUzZDZDJWL1N5a1NjZTZ2d3N0NDU1Qy9QCnJRdDVYeDkvclBickpzV2JNamFEZlJKRElEZFJUWktNQ3VSckg4VGZjM1JTRkNtTVNnWVR1U29reWI5SWhlcW4KR2N1aFJDRHlzdE5QaklzbHVmODUyNFI4RzNZRzYwNncrOXFONVJPOUFvR0FLUUFkUk9GemEwanprdHE5RkdiNAo2NnhXNjJyN0tVS0RNUnYybmdpSlpBUWhzQ1YvK0t3b1lwL0JXYzR4NzRJWDhWZXFnaFFTQ2ViYVdDb0paTnpMCkJCSmQ3Nk1HMWRxL1FLSTE2Z0RrTWtSMGxNcE51N3RXand1c0hhMkU3bG51VkYxSzIxb1o4Z0I2dXVmTkpQRnIKME1yVlBkWW0zMkNTVWdBREJmU1FBK0E9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + + + 664caa4721844 + + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGa1RDQ0EzbWdBd0lCQWdJSWNja09NT1h0U053d0RRWUpLb1pJaHZjTkFRRUxCUUF3SERFYU1CZ0dBMVVFDQpBeE1SYjNCbGJuWndiaUJ6YVhSbE1uTnBkR1V3SGhjTk1qUXdOVEl4TVRNMU56VTJXaGNOTXpRd05URTVNVE0xDQpOelUyV2pBak1TRXdId1lEVlFRREV4aERiR2xsYm5RZ2IzQmxiblp3YmlCemFYUmxNbk5wZEdVd2dnSWlNQTBHDQpDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLQW9JQ0FRQ2xqbDhIYVl0WHRnb3Yzdkxka1FPMTUybE5nZnpODQpPTGwweWV2YjM0MlJoMEszZG13YStGR3Q0YUdhY0VKbEVualkxOUJFN251RVNodGRoNDByNk42Q2ZVRGFCWERmDQo1dkN4d2RSQ0lBbllBZXAwRTJzVjN5dkxGUUt6eHJPZkZRSGtEclJoU1FWVnE1amw1MEVreXQzb1VHNjlJV1N2DQozb3N6cWZLZVRsOS9tb0dkY1MwOXMzUVVXTGl1a2xTUVd5MVZEK2IwU0JyU0dvcDlBQ2xqQllZbHlBaDdOSjVwDQozMmcrdHQ5QURvYk8zMUJuaGJHMTVFbGtETVhZMkpCMUszMFZCemdSU3c5UFdnN3o5b2hWb2lwU3REMkVzOGxPDQp5cTdQck1uL0I3Rkd3QWY4cFgvU2xTeE5kVFdWTjRJdGN0QTBscEl1cXJKdG5mOGFWYk51M29OdU0zbEpoeldZDQpFd0dvdm5vbkRXTDI5dVVvUFJhSi9UM2FhM2RsUnF6cTIyakNOY3NIZ1pOWTVocmhuWmplajVZSStzWmVHTjFoDQpOdlVZR3Ayc0R6Y0VQaTJjT1RYTGJnVldDdlIzZm52RFh6TE9zejArSytlczVtY1lLZVNJTVZOY0ZlUnRSUmw2DQpObStqT1cwOEROU2c2VGlqSnhOWG1Cd3JjU1hxMk1WZGk5VURkcnRDR29uOWlRdTBHeFI1NTl5NHhkbTRFd2NjDQpkZ0UrRGFBSU1rUjZidXNpOUYyTDlWMFZkaHFGcHc1dG5jaVVBb3U4dGwzMHpvcVlLVjNZWEdRTkZuSnJsVmtCDQpvZ09KdzdjNytoMlBxZjkrVllqdlZGNVB6ci9WbHhQampOTGR6RnlDblJDZm5VUWRIM3E4d1BiSHp2eWNzNlJIDQpETVZJdTFhNGxjL3hpd0lEQVFBQm80SFBNSUhNTUFrR0ExVWRFd1FDTUFBd0N3WURWUjBQQkFRREFnWGdNREVHDQpDV0NHU0FHRytFSUJEUVFrRmlKUGNHVnVVMU5NSUVkbGJtVnlZWFJsWkNCVmMyVnlJRU5sY25ScFptbGpZWFJsDQpNQjBHQTFVZERnUVdCQlRFZkpXR25YdGFEOXJOTkt4MXNoWnRlR2VDeXpCTEJnTlZIU01FUkRCQ2dCVEd4TUJBDQp3L0dhOWJ1WHBKYWozdEtsS1BDd0E2RWdwQjR3SERFYU1CZ0dBMVVFQXhNUmIzQmxiblp3YmlCemFYUmxNbk5wDQpkR1dDQ0c1eDVEdUJWOFN4TUJNR0ExVWRKUVFNTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJDd1VBDQpBNElDQVFBWHlrcEVOVnRjeE1BT0NyQkIwWmpnaU0wdzR3MXg5TjhudzljTjk4NUJJWGFjQ0t3a3dRbDRlK3VPDQp5UmNpZFRGemxOaWxSMG5SYlEwbFlzZkdRZFp5cDQ2eWkvT3pvcDBKZldWa1ViSkdZczcxeTNUbEZhQzVlbDNFDQpKWEtSUHliNW9IMzZkYTU5U3N0ZjNEdE1hL0hkQ1hVUklsUnc4SmJaZmhPL2ZDRzMzdWRtaklJWTNZa3labXJmDQppRUVmZTNQc1Zka2NGZ0Z4a3FsZDUrTnpmWDlDYzU0cHFOTkNqKzVoOWg1YkIxNE9hcms0RVBhY1dsUjZ6M3AvDQpPUndpNFBVblM5dnNPY2x3SFM3WjZFMWNrT1RybVZHbXIyczh1TFdJRVl2RnRZS1hGQkh1ZkM5eElkYVpTSmxTDQpQN2FjeU5FOHd3bWQrVDRGc2RUUG9jSzQ0TzVNTjBwOVd0eTZqM0hyQzJuK210c0l2RG5ueWNrUGlnN1NPTGdnDQpWN0lEZ2tKU1A2N0tZNXZhN3BLRit2eW1PNlBwa2ZoNWZXK0tNdUxjRUw3eXVxYWZ4ZFcyblIwK3NudEk2RnFEDQpHTFpYSlZ1WFk2bzVXb0UzbVU4UE1TZWpiaEZiT2tZQkhiK2FRZFN3TWZyWHB5UHR0YmpHTCtvdUZxL1UxZFo2DQpJTHhhbDJmT0hOSDRZY0Y1dXovOGw1bmVDWVR1RWJMZUhqL1lITlg1Q2pLdVNsMk1za3kvc1dLc0NhekMvWHJXDQp3NDVHYm92Z3djU2oyTkEwalQxTWxLaWI1U01nNnpKSDY0ZkJUVVpXUzNaNFFSSmcrKzNZSlZzN0lKZklPNDBpDQprZ1BnZlczSFZONVRhMWlVeFQya3ROS3prcGN5QjJXYnNlTUNyemJaOFdZQjA3eldaQT09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo= + LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNBUUNsamw4SGFZdFh0Z292DQozdkxka1FPMTUybE5nZnpOT0xsMHlldmIzNDJSaDBLM2Rtd2ErRkd0NGFHYWNFSmxFbmpZMTlCRTdudUVTaHRkDQpoNDByNk42Q2ZVRGFCWERmNXZDeHdkUkNJQW5ZQWVwMEUyc1YzeXZMRlFLenhyT2ZGUUhrRHJSaFNRVlZxNWpsDQo1MEVreXQzb1VHNjlJV1N2M29zenFmS2VUbDkvbW9HZGNTMDlzM1FVV0xpdWtsU1FXeTFWRCtiMFNCclNHb3A5DQpBQ2xqQllZbHlBaDdOSjVwMzJnK3R0OUFEb2JPMzFCbmhiRzE1RWxrRE1YWTJKQjFLMzBWQnpnUlN3OVBXZzd6DQo5b2hWb2lwU3REMkVzOGxPeXE3UHJNbi9CN0ZHd0FmOHBYL1NsU3hOZFRXVk40SXRjdEEwbHBJdXFySnRuZjhhDQpWYk51M29OdU0zbEpoeldZRXdHb3Zub25EV0wyOXVVb1BSYUovVDNhYTNkbFJxenEyMmpDTmNzSGdaTlk1aHJoDQpuWmplajVZSStzWmVHTjFoTnZVWUdwMnNEemNFUGkyY09UWExiZ1ZXQ3ZSM2ZudkRYekxPc3owK0srZXM1bWNZDQpLZVNJTVZOY0ZlUnRSUmw2Tm0rak9XMDhETlNnNlRpakp4TlhtQndyY1NYcTJNVmRpOVVEZHJ0Q0dvbjlpUXUwDQpHeFI1NTl5NHhkbTRFd2NjZGdFK0RhQUlNa1I2YnVzaTlGMkw5VjBWZGhxRnB3NXRuY2lVQW91OHRsMzB6b3FZDQpLVjNZWEdRTkZuSnJsVmtCb2dPSnc3YzcraDJQcWY5K1ZZanZWRjVQenIvVmx4UGpqTkxkekZ5Q25SQ2ZuVVFkDQpIM3E4d1BiSHp2eWNzNlJIRE1WSXUxYTRsYy94aXdJREFRQUJBb0lDQUJTaGpGZ1pJQU03TFVQUDdjWU10MENvDQo2T2QreG1rd28zUFpZZW9SanN2TzVsS0VrRzQvK2JYSWcySUNrVk9WSExneEZNUXlUL1FwWkFXZ3ljZnFDaWlLDQp3VlVxRG1ub2xxQWdQbnBMRWM3NFZpWkc4VFpWakZpUGNybkNqa25KeldXRks1ZGdDU2ttN0RQaVFLejhGdkZIDQpiTFZtL3V3bnVJTWtyNVpvdjkvZitqMExpSTdDMlRsYjRRL29MbCthN1NoSGhnbDFIdHFGOGpJbm5nQzRCSUthDQp6ZXZFbitVanNSTDNxUlNMZXVNMjB3ZERrdVRPNFJKMXdRWUgzdUNySGJoTUlRR09zQWE4ZTFhTnAybThmcmUxDQp2R0RZSXNNTjRRRUNVRjNXc0pIWGhtZEduSW82aXIzUVdIQVM3Y2NLSXNZYTZYYWxVUHoyRG45U3BMeXhRQUY5DQpLVVhRamRuU0poUVV1SmRtc29TWVg3aVVCbXpkcU8zQVFqcjlrQkU3M1NkSlp6b2ZMaXJqMVVTS0dyK2NjZTFRDQpWWThQTXpNZVJpMHUzano5V2NrSWx4MjRiRmlCWitmRlRvb2JiRm9ZK204VEpZalU4RmQxRWFhVmtmdmpQSDlnDQp2OWE5aUpOcjhCbXVMUDBtbkw1MXpBKzc5cWcyNzhQWThEVVEyVHhid1Q0MC9vV0dtNFRzSHVySWNKUkFQb0FTDQpCU21uWWVRalRRTS8rMU5xSTZVeWM3NnlNa1Z5T28zcG1kejA4cnVZVFlCanpHZVkzK1M0QVNmQW9GSWZ3ZGxTDQppZG9Jbk94aHhuZklPU1NiVit5bi8rdWdya2luV3ZpaElXbTFQQUFTNjI1akRSOVFjRjNscUh5K1hSTUlYbXVaDQpBNmRHWWY4VEphN29tSGR3SnBuWkFvSUJBUURnbmRDWndZMHEyOG9PcnVPbDRSUTdKQ2gwa0ZCZkJacm5QMkg3DQo4TGhCbGpZS1pFTHVqQ1pRZEcwT0xEc2pCL09JbzdOc2lLK0hzY250VjJLYXRTRGkyYzRWL1IvSUF1ZzdSKzAxDQpyaHRZTHlPOEdUb3VRenBHVU90b3d6SHN5YlErWjc3cFl0WS9VZmxUcWlaZUdneVI5SnJzQVNOTEhmOWVZZ2ZQDQo0YStTbjArTm16eDc0Q1JQRXMwQ1YzL1hlSTdEKzFLcXBaVXBGYWxDTm9INzhNNlR1Qy9xazN4b0d0b2tkU2NkDQpiSlltTk1VOGZZQkFhWDhVRTJTZFQzUldkWWRrd2RlRi9lYjA0YWpEOWUvVk81QXNBVU84UEV1c0MzZTJNZzlQDQpFUytnbENjT2VBdXEyS1FjUnQwbXZGR1F5LzlNWEIySkNaYzEwTjlDeW5Bd2hBNm5Bb0lCQVFDOHNBODBQZ1cwDQpGZ0J6eHY4WDFFakVWU3Z0Q3JvQjE3alJmSWJUSms4Z3FNcFhoU0FYUkRHczcyS09ZWVVEUDRIODJBMDdRa2pCDQpmekZPWE1RbnA2WElONjJ0akRWN3JoSitvcjlTaVphdTBvUWtLbEVXRmloS3VxQUJad0VJTDJ4dkdXVGZVdTV0DQpMYmwvdmdjZWlzWnFEb293WnJ6cStjSmFpNGI0aEhud29qRDQ3b3JOcmpobk5ZYzYvTlp0OTBKb3hPd2RRbnJoDQpycGkraXQwV2VrOWFKcGd6U3I3eVNTZVkvdWdHamV1Ty9WT3JleDVjTkdyeTNFUnpBanlHY3lTcXljc3VzL0FlDQpTMzBNSTVKSHlRUDZHcE82SHYxUlFkTHJzbVF1TU4yRllsQVoyRHAyZWR4SVpmYVFsb0RWaUZuZ3QvODJXYkZuDQpCdWQ0d1hHb21DWjlBb0lCQUQ2SE1EN2RSck1icEZBYUYzMWgvd1BIdVF0WjhVWENoYkRDVUVDV2JuU3pvQytjDQpZWldPcGt2WFhWU0lzNTI0NU82d3c0My9MdjRUWENjYUlIVDQzMExIWnp0dno1MGFVaFBPbmhaSGRZMUM4aXUyDQp5aDkrejRZcm1KejlXYlNWSWZ3TlhYUVM4NW1FOUdkNkFseEgzQi8xZS9zZkJmZ3ZUWnUwcG9BVVQ0LzlrV1BXDQpSeXdrNVhhdHdTeFp0MWtBVXAzMEpMc2toVFYrdGpPY2dPcmx5bHdNOWluVEROcmVQc1BQYVNnanhsaTBjQU82DQozQzBTTVRJaGcrelc1WWY4QjhqZ3ZXS3JuOU9qemh0ZkozaXdzQjNQN0U5R2FicG5KdGd0YjEyUFp6YkloMmJiDQp2RU8vTTFBNzJleWltQUk3QjhMMkViTElYTE82aGF4T05wVUs3aGtDZ2dFQVZkOUNiQ0kxOGtsNUZ6ZmZiSGJlDQpUd3Y4RzdzZ0FDcXZJQmV1UEhaWTJLSTR4Qy8vOU5iQ1ROUDlaSk1aTitzMU8xOFFWb0hLSHRYR0dNVzdOOWppDQphQVorOGxhM0dIeVdTaS9ESnNzYldxRFFKcTFqamN1enRwN01weGE3cjMvMXQzSTFLRFhUOExnNGpkeHIzUWlIDQpXRWtadHdGcXhQMjU1LzlNQTlvMnJMOER6cWF4WVA0RENXV2hEOFYxeVVJWVpSb0o0eDhZVVpGbVRvRmdNUlNrDQovSUJJRUQvYU91WDBNWHNCR2NxSkErQmlyYzR3ZVFJYUVrRVFuYzdNd051eU9rL3dPbWNGeHFQUVd5L3RLT0pnDQovdmdOZDAwWE9GM2VvZ25qOGVtblIwY0E4V0lvNlRaNGZESjdUajVRajkyb0djOWpSTmI1Rjh4YWwraGgwN3E2DQorUUtDQVFFQXo2KzhqNzl6VzVDamQvZWE3aUxrOHdiVTV3VUFjWG1QOHlOaXNhOVFtU3B4SnhBU1dlQzlmQzZzDQp2UEFCSUJtT2JSbEN3b3F6RE9MUkxyc2VUUGZyWktvcjRnQ2hEWTh6eHJ3ZmxkMzd0MllFaWN1OFJZSWZpMkpZDQpGa2hNeEg3Vlh4Y2RiSmN3YTlqR3E3KzJwWXdHSmNlOHBleGpLd2FEVUpUcEFlUE56YTZpNzhleTVRNEYvemI0DQo1cndZdnZzTjRMaDBGektMRDNUVmxWS3JIVUxCK2xKSExTa2ozUlk0TjFSR2d3WkhtN0k3NWx2WDZKMjFPUlkyDQpuc1cwUnp0S3VXOHdLWklLWVp0cWJsSHc4OVJIRUpqR0hIeThhSEpJeTRLMWFsdk1Tb1llVUFmTG4vTGoyTWpwDQpHR2xiZXY3bFlmcEt2V0o4WTVDaVFhcHhkQzZhVlE9PQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0K + 664caa023881c + + + + igb0 + 7 + + + igb0.7 + + + + + + gwg01 + WAN_PPPOE|2|address + WireguardOpenvpnGW|1|address + downloss + + + + wan + dynamic + WAN_PPPOE + 1 + inet + + 1.1.1.1 + + + wan + 192.168.178.1 + WANGW + + inet + + + + + opt3 + 10.5.0.2 + WireguardOpenvpnGW + 1 + inet + + + + + opt1 + 10.69.69.2 + wirenuenbesch + 1 + inet + + + 10.69.69.1 + + gwg01 + + + + 5fe7357dc96a6 + + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGQ2pDQ0F2S2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUTBGQURBNU1Rc3dDUVlEVlFRR0V3SlFRVEVRDQpNQTRHQTFVRUNoTUhUbTl5WkZaUVRqRVlNQllHQTFVRUF4TVBUbTl5WkZaUVRpQlNiMjkwSUVOQk1CNFhEVEUyDQpNREV3TVRBd01EQXdNRm9YRFRNMU1USXpNVEl6TlRrMU9Wb3dPVEVMTUFrR0ExVUVCaE1DVUVFeEVEQU9CZ05WDQpCQW9UQjA1dmNtUldVRTR4R0RBV0JnTlZCQU1URDA1dmNtUldVRTRnVW05dmRDQkRRVENDQWlJd0RRWUpLb1pJDQpodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQU1rci9CWWh5bzBGMnVwc0lNWHdDNlF2a1pwczNOTjIvZVFGDQprZlFJUzFncWwwYWVqc0tzRW5tWTBLYW9uOHVaQ1RYUHNSSDFnUU5nZzVEMmdpeGRkMW1KVXZWM2RFM3k5RkpyDQpYTW9Ea1hkQ0dCb2R2S0p5VTZsY2ZFVkY2L1V4SGNiQmd1Wks5VXRSSFM5ZUpZbTNycEwvNWh1UU1DcHBYN2tVDQplUThkcEN3ZDNpS0lUcXdkMVp1ZERxc1dhVTB2cXpDMkg1NUl5YVovNS9UbkNrMzFRMVVQNkJrc2JidVJjd09WDQpza0VEc202WW9XRG5uL0lJekdPWW5GSlJ6UUg1alR6M2oxUUJ2Ukl1UXVCdXZVa2ZoeDFGRXdod1ppZ3JjeFh1DQpNUCtRZ001NGtlemd6aUpVYVpjT00yekYzbHZyd012WERNZk5lSW9KQUJ2OWxqdzk2OXhROGN6UUNVNWxNVm1BDQozN2x0djVFYzlVNWhadXdrLzlRTzFaK2QvcjZKeDBtbHVyUzhnbkNBS0pnd2Eza3ladzZlNEZaOG1ZTDR2cFJSDQpoUGR2UlRXQ01Ka2VCNHlCSHloeFVtVFJnSkhtNllSM0Q2aGNGQWM5Y1FjVEVsL0k2MHRNZHozM0c2bTBPNDJzDQpRdC8rQVIzWUNZL1J1c1dWQkpCL3FOUzk0RXROdGo4aWFlYkNRVzFqSEFodkdtRklMVlI5bHpEMEV6V0tIa3Z5DQpXRWptVVZSZ0NEZDZOZTNlRlJOUzczZ2R2L0MzbDVib1l5U2V1NGV4a0VZVnhWUm44RGhDeHMwTW5rTUhXRks2DQpNeXpYQ0NuK0puV0ZEWVBmREtIdnBmZi9rTERvYnRQQmYrTGJjaDV3UXk5cXVZMjd4YWowWHdMeWpPbHRwaVNUDQpMV2FlL1E0dkFnTUJBQUdqSFRBYk1Bd0dBMVVkRXdRRk1BTUJBZjh3Q3dZRFZSMFBCQVFEQWdFR01BMEdDU3FHDQpTSWIzRFFFQkRRVUFBNElDQVFDOWZVTDJzWlB4SU4ybUQzMlZlTnlTVGdabENFZFZtbHE0NzFvL2JETVA0QjhnDQpuUWVzRlJ0WFkyWkNqczUwSm03M0IyTFZpTDlxbFJFbUk2dkU1SUM4SXNSQkpTVjRjZTFXWXh5WHJvNXJtVmcvDQprNmExMHJsc2JLL2VnLy9HSG9KeERkWERPb2tMVVNueHQ3Z2szUUtwWDZlQ2RoNjdwMFB1V20vN1dVSlF4SDJTDQpEeHNUOXZCL2lacmlUSUVlL0lMb09RRjBBcXA3QWdOQ2NMY0xBbWJ4WFFrWFlDQ1NCMzVWcDA2dStlVFdqRzAvDQpweVM1VjE0c3RHdHcrZkEwREpwNVpKVjRlcUo1THF4TWxZdkVaL3FLVEVkb0NlYVh2MlFFbU42ZFZxakRvVEFvDQprMHQ1dTRZUlh6RVZDZlhBQzNvY3BsTmR0Q0E3MndqRkpjU2JmaWY0QlNDOGJEQUNUWHRuUEM3bkQwVm5kWkxwDQorUmlOTGVpRU5oazBvVEMrVVZkU2MrbjJuSk96a0NLMHZZdTBBZHM0SkdJQjdnOElCM3oydDlJQ21zV3JnbmhkDQpOZGNPZTE1QmluY3JHQThhdlExY1dYc2ZJS0VqYnJuRXVFazliNWplbDZOZkh0UEtvSGM5bURwUmROUElTZVZhDQp3REJNMW1KQ2huZUh0NTlOaDhHYWg3NCtUTTFqQnN3NGZoSlB2b2M3QXRjZzc0MEpFcmI5MDRtWmZrSUVtb2pDDQpWUGhCSFZROUxIQkFkTThxRkkya1JLMEl5bk9tQVpoZXhsUC9hVC9rcEVzRVB5YVpRbG5CbjNBbjFDUno4aDBTDQpQQXBMOFB5dGdnWUtlUW1SaGw0OTkrNmpMeGNaMkllZ0xmcXE0MWR6SWp3SHdUTXBsZysxcEtJT1ZvanBXQT09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t + 1 + + disabled + disabled + + + 664caa023881c + + disabled + enabled + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGUlRDQ0F5MmdBd0lCQWdJSWJuSGtPNEZYeExFd0RRWUpLb1pJaHZjTkFRRUxCUUF3SERFYU1CZ0dBMVVFDQpBeE1SYjNCbGJuWndiaUJ6YVhSbE1uTnBkR1V3SGhjTk1qUXdOVEl4TVRNMU5URTVXaGNOTXpRd05URTVNVE0xDQpOVEU1V2pBY01Sb3dHQVlEVlFRREV4RnZjR1Z1ZG5CdUlITnBkR1V5YzJsMFpUQ0NBaUl3RFFZSktvWklodmNODQpBUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUJBTStHMDZrL282NFY4bGFaUVBVaFgrZjZUZm50Ti9oZ3R6dHJ0T2JiDQoxYURDOFdtTW05RU5lTVRDNUNqMFp6RFZDZkJYWjRibndaQUVHZWVYWm5paHpNSmtFS0tUQUloQnNVYkhHK0JwDQpKblljSXEyUm1UblVRcWRjZ2p1cURBemlMT3BiUEhyckxYWGpEVEZHaSt4T2syekRiVzdFMXhpMFJQK3BvT1F4DQp0OVdXU05teUdVTjBaQTFpSHViblE3NVR6T0xWL1hMM1lyeWpyb3FBTXJ4eVF5NXlib29sZXFhOFlTZUFOcHVYDQpXS3BWbm5MTlU4dWtWbHY0NitNdHpydUs5UitTbGljTVdoalcySDJDZ0hCTDNrb2EyS1lvVnZUMTlKRUF1eWttDQpiV0VlR1ErK0NsOWJVY1hLL1ZlU0NuQXFjMnlVeS9iVUZXcHpiSUVqdHF3djdxaG1TT215Y1U1UElvT0Yvb0lNDQovMWFqOWJPcW1UcFBpenlxSG1SN1VPY2ljSFA0eFk1cUt5dGJrL1dxS1Q0YnE5QmQrZkhhVFp4MEt3ck44cGUwDQpuS0VScitZbUF0SFgrS1lQWFVVZW5zclRlTEhiM2dNUHZYRUtVYkZOck9MaWRxQTVOUWNVMEN5SWhGdDhsTnloDQpzQlh4YzZoYm11dlRxQ3FGT2MwRVM2c0h2U1d5ZVRHODZhZGpjQVBLNTdIQ1M1MG5KWGlLMWVja2c4N3JrU0lGDQpqemkvOGpuYUNpRHZ1SWJ2WHQwVFRVZm8vWmVRRWttSEJjY0FSSFdHZFZsQ2tqTHZMUjJiSTJCQWlGcWhnVklFDQpiZnVFMmtqSW9DSnR0bkJJN3ZtdllFYXZIYllXT1RhbDBIRUpWYmIwUHV2V2dtRTV2S1VzSjIwUjIvbHdtSXlaDQptNkd2QWdNQkFBR2pnWW93Z1ljd0hRWURWUjBPQkJZRUZNYkV3RUREOFpyMXU1ZWtscVBlMHFVbzhMQURNRXNHDQpBMVVkSXdSRU1FS0FGTWJFd0VERDhacjF1NWVrbHFQZTBxVW84TEFEb1NDa0hqQWNNUm93R0FZRFZRUURFeEZ2DQpjR1Z1ZG5CdUlITnBkR1V5YzJsMFpZSUlibkhrTzRGWHhMRXdEQVlEVlIwVEJBVXdBd0VCL3pBTEJnTlZIUThFDQpCQU1DQVFZd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFIZCtoSGUvMGYrWjhCMHRXaWp6MGx2Uld6NjQzWVlSDQpqaTkwNHQrZnRBLzB3UkhnM1pCVjJiQzAxSnVabUo4czVaWHE1VGN5Z3ZrUFJ3RTFWM2lmK2Y2Y0xOWkN3WmlNDQpWQnZ2RGE5Umo4Q21RcnVaeGtJQTBSVkRCMkxUUGwxaXJqeTlrOFZTNnlGYUxRaHV6ZE5nekF4Ylp3RTNJNUgrDQpRNFcwZ1lmbDJhS0NGbkxqTG5yVjlMSGtQYi9ucGZkazVRZUpIbnMrcFNRaWVVRkRMTGpycFN4SXBUcXpmRTNFDQo3MkdkRVVHVzFDYU9hU214eHJqK3N5cml3VnNwNWFNUFZuaFNNSnl6TmxWT2JNK05YenRaYjhlME55YndwSXQzDQpEbmFqcmdPZno3ZEJvQWF5TmVzeno0MWFOT3d3ZkZjRnFaVTg4dTJqYnRZeWhYUFJpTW04SHR1a1YwSkFpWkpRDQo0RGpnSTF6RlpWcmhGaXQ5QTYzQlZLTU1SZHBxNExqeElXemlNTnF4Z2t3ZVlrQi9TOFdQQU5pYUpnaEhJWmxoDQp1cDNlMG9TU1FsYWtMVXVzU1NsaU5ncjVqUG1vZFRtSXNFRXA3MkwvZXFPblZYKzYrNW9GMlNaVWVzcTFsMDZtDQpQZml4MWJncVFhR3BhOXJpVTc0QXRTdUw1YjQ4c2xpKzZhTldpOXZyOFRlUDFDWEo1Zm5NT3pvM3Y1eHoyMDRLDQpOUTE4WVVDYmlqWVpIczFFSTRnZ2RKbDlhNFZ1TXl0Y0pwWW52b3l2bkVuVjdiV3pyUFdmcmNqcStkU0ZjVDBMDQpDM0ptNEM4UWlraFJpWnpYb1hWcUt3R20reWZPK3BwOUpVeDNSeDE3aDNBamg2ZHI1UmpDNHEycys5bWx5d01rDQo3aE03bnhlWnU0azANCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= + 0 + + + + 1 + 1 + + + on + on + on + on + + + on + D + H + D + H + D + D + D + D + H + D + D + D + D + D + D + D + D + D + H + H + H + H + D + D + D + H + H + D + D + D + D + H + D + D + H + H + H + D + D + D + D + + + PRIQ + lan + PRIQ + 50 + Mb + 100 + Mb + opt1 + + + on + 10240 + Kb + 10240 + Kb + + + + + Service Watchdog + Service_Watchdog + + 1.8.7_4 + servicewatchdog.xml + /usr/local/pkg/servicewatchdog.inc + + + bandwidthd + http://bandwidthd.sourceforge.net/ + + 0.7.7 + bandwidthd.xml + + + + /pkg_edit.php?xml=bandwidthd.xml + + + + + /status_bandwidthd.php + + + /usr/local/pkg/bandwidthd.inc + + + Cron + + 0.3.8_6 + cron.xml + /usr/local/pkg/cron.inc + + + pfBlockerNG-devel + + https://docs.netgate.com/pfsense/en/latest/packages/pfblocker.html + 3.2.8 + pfblockerng.xml + /usr/local/pkg/pfblockerng/pfblockerng.inc + + + Zabbix Agent 6 + zabbix-agent6 + + http://www.zabbix.com/product.php + 1.0.9 + zabbixagent.xml + + zabbix-agent/zabbix_agentd.log + zabbix:zabbix + 664 + + + + + /pkg_edit.php?xml=zabbixagent.xml&id=0 + + + + /usr/local/pkg/zabbix-agent.inc + + + plugin_certificates + + + + + WireGuard + + https://github.com/pfsense/FreeBSD-ports/commits/devel/net/pfSense-pkg-WireGuard + 0.2.9_5 + wireguard.xml + /usr/local/pkg/wireguard/includes/wg.inc + + + Cron +
Services
+ cron.xml + /packages/cron/cron.php +
+ + WireGuard +
VPN
+ /wg/vpn_wg_tunnels.php +
+ + WireGuard +
Status
+ /wg/status_wireguard.php +
+ + BandwidthD +
Services
+ /pkg_edit.php?xml=bandwidthd.xml +
+ + BandwidthD +
Status
+ /status_bandwidthd.php +
+ + Service Watchdog + +
Services
+ /services_servicewatchdog.php +
+ + Zabbix Agent 6 +
Services
+ /pkg_edit.php?xml=zabbixagent.xml&id=0 +
+ + pfBlockerNG +
Firewall
+ /pfblockerng/pfblockerng_general.php +
+ + + on + 10.0.0.48 + 10.0.0.48 + gw-st01 + 0.0.0.0 + 10050 + 120 + 5 + 5 + 100 + 3 + unencrypted + unencrypted + none + + none + none + + + QWxsb3dSb290PTENClVzZXJQYXJhbWV0ZXI9cGZzZW5zZS5zdGF0ZXMubWF4LGdyZXAgImxpbWl0IHN0YXRlcyIgL3RtcC9ydWxlcy5saW1pdHMgfCBjdXQgLWY0IC1kICcgJw0KVXNlclBhcmFtZXRlcj1wZnNlbnNlLnN0YXRlcy5jdXJyZW50LGdyZXAgImN1cnJlbnQgZW50cmllcyIgL3RtcC9wZmN0bF9zaV9vdXQgfCB0ciAtcyAnICcgfCBjdXQgLWY0IC1kICcgJw0KVXNlclBhcmFtZXRlcj1wZnNlbnNlLm1idWYuY3VycmVudCxuZXRzdGF0IC1tIHwgZ3JlcCAibWJ1ZiBjbHVzdGVycyIgfCBjdXQgLWYxIC1kICcgJyB8IGN1dCAtZCAnLycgLWYxDQpVc2VyUGFyYW1ldGVyPXBmc2Vuc2UubWJ1Zi5jYWNoZSxuZXRzdGF0IC1tIHwgZ3JlcCAibWJ1ZiBjbHVzdGVycyIgfCBjdXQgLWYxIC1kICcgJyB8IGN1dCAtZCAnLycgLWYyDQpVc2VyUGFyYW1ldGVyPXBmc2Vuc2UubWJ1Zi5tYXgsbmV0c3RhdCAtbSB8IGdyZXAgIm1idWYgY2x1c3RlcnMiIHwgY3V0IC1mMSAtZCAnICcgfCBjdXQgLWQgJy8nIC1mNA0KVXNlclBhcmFtZXRlcj1wZnNlbnNlLmRpc2NvdmVyeVsqXSwvdXNyL2xvY2FsL2Jpbi9waHAgL3Jvb3Qvc2NyaXB0cy9wZnNlbnNlX3pieC5waHAgZGlzY292ZXJ5ICQxDQpVc2VyUGFyYW1ldGVyPXBmc2Vuc2UudmFsdWVbKl0sL3Vzci9sb2NhbC9iaW4vcGhwIC9yb290L3NjcmlwdHMvcGZzZW5zZV96YngucGhwICQxICQyICQz + + + + + wireguard + wireguardd + php_wg + + + + kea-dhcp4 + + + + + + sshd + + + + + + + + on + lan + lan + opt1 + + + + on + + + + + + + + + + + + + on + on + on + wan + lan + + + + + + + + + + + + + + + + wireguard + wireguardd + php_wg + + + + bandwidthd + bandwidthd.sh + bandwidthd + + + + zabbix_agentd + zabbix_agentd.sh + zabbix_agentd + + + + pfb_dnsbl + pfb_dnsbl.sh + lighttpd_pfb + + + + pfb_filter + pfb_filter.sh + php_pfb + + + + + on + on + + 1 + 0 + 0 + 0 + 0 + 20000 + 20000 + 20000 + 20000 + 20000 + 20000 + 20000 + 20000 + 20000 + 20000 + + + + + on + on + wan,opt1 + block + lan + reject + order_0 + on + + 127.1.7.7 + en + + + disabled + + autorule + on + + + + + + 10.10.10.1 + 8877 + 8878 + + on + czMuYW1hem9uYXdzLmNvbQ0KczMtMS5hbWF6b25hd3MuY29tICMgQ05BTUUgZm9yIChzMy5hbWF6 +b25hd3MuY29tKQ0KLmdpdGh1Yi5jb20NCi5naXRodWJ1c2VyY29udGVudC5jb20gDQpnaXRodWIu +bWFwLmZhc3RseS5uZXQgIyBDTkFNRSBmb3IgKHJhdy5naXRodWJ1c2VyY29udGVudC5jb20pDQou +Z2l0bGFiLmNvbQ0KLnNvdXJjZWZvcmdlLm5ldA0KLmZscy1uYS5hbWF6b24uY29tICMgYWxleGEN +Ci5jb250cm9sLmtvY2hhdmEuY29tICMgYWxleGEgMg0KLmRldmljZS1tZXRyaWNzLXVzLTIuYW1hem9uLmNvbSAjIGFsZXhhIDMNCi5hbWF6b24tYWRzeXN0ZW0uY29tICMgYW1hem9uIGFwcCBhZHMNCi5weC5tb2F0YWRzLmNvbSAjIGFtYXpvbiBhcHAgMg0KLndpbGRjYXJkLm1vYXRhZHMuY29tLmVk +Z2VrZXkubmV0ICMgQ05BTUUgZm9yIChweC5tb2F0YWRzLmNvbSkNCi5lMTMxMzYuZy5ha2FtYWllZGdlLm5ldCAjIENOQU1FIGZvciAocHgubW9hdGFkcy5jb20pDQouc2VjdXJlLWdsLmltcndvcmxkd2lkZS5jb20gIyBhbWF6b24gYXBwIDMNCi5waXhlbC5hZHNhZmVwcm90ZWN0ZWQuY29tICMgYW1hem9uIGFwcCA0DQouYW55Y2FzdC5waXhlbC5hZHNhZmVwcm90ZWN0ZWQuY29tICMgQ05BTUUgZm9y +IChwaXhlbC5hZHNhZmVwcm90ZWN0ZWQuY29tKQ0KLmJzLnNlcnZpbmctc3lzLmNvbSAjIGFtYXpvbiBhcHAgNQ0KLmJzLmV5ZWJsYXN0ZXIuYWthZG5zLm5ldCAjIENOQU1FIGZvciAoYnMuc2VydmluZy1zeXMuY29tKQ0KLmJzbGEuZXllYmxhc3Rlci5ha2FkbnMubmV0ICMgQ05BTUUgZm9yIChicy5z +ZXJ2aW5nLXN5cy5jb20pDQouYWRzYWZlcHJvdGVjdGVkLmNvbSAjIGFtYXpvbiBhcHAgNg0KLmFu +eWNhc3Quc3RhdGljLmFkc2FmZXByb3RlY3RlZC5jb20gIyBDTkFNRSBmb3IgKHN0YXRpYy5hZHNh +ZmVwcm90ZWN0ZWQuY29tKQ0KZ29vZ2xlLmNvbQ0Kd3d3Lmdvb2dsZS5jb20NCnlvdXR1YmUuY29t +DQp3d3cueW91dHViZS5jb20NCnlvdXR1YmUtdWkubC5nb29nbGUuY29tICMgQ05BTUUgZm9yICh5b3V0dWJlLmNvbSkNCnN0YWNrb3ZlcmZsb3cuY29tDQp3d3cuc3RhY2tvdmVyZmxvdy5jb20NCmRy +b3Bib3guY29tDQp3d3cuZHJvcGJveC5jb20NCnd3dy5kcm9wYm94LWRucy5jb20gIyBDTkFNRSBm +b3IgKGRyb3Bib3guY29tKQ0KLmFkc2FmZXByb3RlY3RlZC5jb20NCmNvbnRyb2wua29jaGF2YS5jb20NCnNlY3VyZS1nbC5pbXJ3b3JsZHdpZGUuY29tDQpwYnMudHdpbWcuY29tICMgdHdpdHRlciBp +bWFnZXMNCnd3dy5wYnMudHdpbWcuY29tICMgdHdpdHRlciBpbWFnZXMNCmNzMTk2LndhYy5lZGdl +Y2FzdGNkbi5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczItd2FjLmFwci04MzE1LmVkZ2VjYXN0ZG5zLm5ldCAjIENOQU1FIGZvciAocGJzLnR3aW1nLmNvbSkNCmNzMi13YWMtdXMuODMxNS5lY2Rucy5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczQ1LndhYy5lZGdlY2FzdGNkbi5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczItd2FjLmFwci04MzE1LmVkZ2VjYXN0ZG5zLm5ldCAjIENOQU1FIGZvciAocGJzLnR3aW1nLmNvbSkNCmNzMi13YWMtdXMu +ODMxNS5lY2Rucy5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQpjczQ1LndhYy5lZGdl +Y2FzdGNkbi5uZXQgIyBDTkFNRSBmb3IgKHBicy50d2ltZy5jb20pDQoucGZzZW5zZS5vcmcNCi5u +ZXRnYXRlLmNvbQ0K + + + + + ADs_Basic + + + auto + + https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts +
StevenBlack_ADs
+
+ unbound + EveryDay + enabled + default + 1 +
+
+ + + PRI1 + + + auto + + https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt +
Abuse_Feodo_C2
+
+ + auto + + https://sslbl.abuse.ch/blacklist/sslipblacklist.txt +
Abuse_SSLBL
+
+ + auto + + https://cinsarmy.com/list/ci-badguys.txt +
CINS_army
+
+ + auto + + https://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt +
ET_Block
+
+ + auto + + https://rules.emergingthreats.net/blockrules/compromised-ips.txt +
ET_Comp
+
+ + auto + + https://isc.sans.edu/block.txt +
ISC_Block
+
+ + auto + + https://www.spamhaus.org/drop/drop.txt +
Spamhaus_Drop
+
+ + auto + + https://www.spamhaus.org/drop/edrop.txt +
Spamhaus_eDrop
+
+ Deny_Outbound + 01hour + enabled + 1 + sort + + + + + + + + + + + + default + + + + + + + + default + Disabled + + +
+
+ + + + + + + + +
10.5.0.2
+ 32 + +
+
+ tun_wg0 + yes + + 51820 + WBEVY3Laz5h7Dr12MgS12ERY9RAXU8NdPMdCMWRNa14= + U0jEp4tQe2HMkgNJCrNeymUGqV+cuFam1q4HSxcJe3k= + 1420 +
+ + + tun_wg1 + yes + + 51821 + YK9FENq/WDTH1E3Bp64ceJk0388jiELwONdwy0J69XQ= + pQr6y8pJLiVII+SbuZVaPT6tTMF+bYnQ9g5aBK1AaBw= + 1420 + +
+ + + + +
0.0.0.0
+ 0 + +
+
+ yes + tun_wg0 + + 194.233.96.241 + 51820 + 115 + 3ZNjosvvIqfvu3/BqaLzNNXs9zWO4jXpcXNOmDMDpX0= + +
+ + + +
10.0.0.0
+ 24 + +
+ +
10.69.69.1
+ 32 + +
+ +
12.1.0.0
+ 24 + +
+
+ yes + tun_wg1 + + + dwQ/ZByIZdFVawJ31WEH9AKEoc6sjYmw7AFG5LYLygE= + + 95.216.52.28 + 51820 +
+
+ + on + yes + 300 + no + all + no + no + +
+ + + service wireguardd start + earlyshellcmd + + + +
+ + + + wan + + downstream +
172.20.20.0/24
+ +
+ + lan + + upstream +
10.0.0.0/24
+ +
+
+ + + lo0 + + single + 32 + 10.10.10.1 + ipalias + 68cbcc567ca42 + + + kea + + + WireGuard + + + + + + + ssh_host_rsa_key + bZe3soRMkoV9nmJ84g8aDcYYqEZrGuWhtdY8/d7ZWXPLraiIrBPfyZP5zz9/hxVE2fiX4zL/shzZZzzhX6oQ/efiH0CXZUWtZJZhVI6pBIbuVTyn2G2UpTdjXiSXfvFZprmGOoEdi2HV2du7ebm3vHI77DIwzbN9vauDMCd0ZZuO9tEWH/WafFmN8JiZtig2SVHEx+4u4fgUD8FBhbjLpRj0jX8CUL54X9XtF95ferH64onqvhWJRmJittWSlEKPKaEratgZ0+kDDImjkckT3QCPnHKvBGjOzz2bdekrAcHC60TJnVmi+sdETb9KOqjOKEY8KJsp1JZiBBnVQqLBb63WndU/0wiYX5utfKuTv60qbsxmEVAZ+66A3BEV+qBloxW0WZWz55y9QjfunLg4L4mzZVHJI1IPiCldWXuOToFuQTNVCtEwOtz2TZjxw10yWOsGPtSgEx5ZM3lDVTbQxc4tWhHNOJPkCfSYtEWUJSx/9QqsrL4TIQuDJnxZfcM7T98nYmXU9wzVSJZdjunwzumU9xN4CF6WoQY0IgIJZA3CBYiVn8AP40CJmhiavaDTWDQOI2aLkug0JDzYP4obMKwy6o5bXqF3RzoIbOC33tabyokaT40Er0WPTAS0CWhcLMy7AWULGqGixZuFQV1/vYJURR7wT9DfvionAryCKkrEvHCIaly7xWbuWxsFqF/SezSQqBmGPvHzj+9acYrTS8l+TI2wp+45rqW9dwRYsIEw34ISX0FPVvcKXlDlYCoqNZE8fXITbvX0aMt2b2MIURMRFynKoWNxQJ1jLoEBGPu/CJPuadwy9qszv5HqnRbTBpzHyunFwDlBZw9g5euOw/g1wA0DHX1PzRQhSQZAGp1vnBQ1rp/Ik+WOPU/u7hav9+zRFozsw8Vk5aq/cH84M4//OafVNrrq458C7nk3IJoZP7a/fXTVvhfKmNrRVMdBWfJUoyr7bPP2A3uwZIISOuWHQXJGdyLmu+WwRdFuB7AKRej6ezIDqWBSeFeQblfsr+VP/ZmNoNxy1UK60Y0JYiXkrT8X841Ddny8rgKP8wGwB4WAZZoqLAVLLEoqJWMwiPb9Kcb9QsGqUCpExoZhzpeZ7scomxpT+MLKfgMz4M0GeHvLebV5z9Icub9YxciagBfPbifnHjX69MawcgnSR/xGmjNO+qYgT0iJaGmhICgIC/BKW6sqYHNfxvCSf06NQXRTsvZx1/p2Ku/j7qVSdrRhkfSb7HMFpaUk2qkNIRi2pwVA5dhRHS3BiRTM4ro3WSzYyiAd99jXbygaco2f8GczeNjaLWAu/fmso6bF303c5cH1APT0dAUB/d+MUsG3+xBGXtRbr1w60z4wffqZRHxGg18z/MQcsKNw+PK4pmYrONHougPkZAmOLf3tKeI8PYsn3o/mtjo0sUT4EC05F1JPeS8p1fQKrpYmwWLyqr68GuiOUHoIuJ3CmbF1gvc9xgXBeapuNo0SDGGlcKA0hp/d/Lks5npOcTJusC4CV1UCy1g01GZBDdSmNYOPcMOV9cHou9H7LbLXMALbgBzAbPQXA9xvgfh74aOMvcD6PdNctkt+lKPn8wHEO7ZEt1C/Abp+DpOZ6vxjBosibzzbb7KKemvLbl6ZHVAfWXPKhjUxMteG+V55RXoCxCSKBA+pR0W0ovgQzAq/b2j6jD3udG2u+DsiwLKhSPhsHMS2N8OrWQhB479k152iA8hgY4pdcbj8KqRg6YT8167TzZYK/dSxxyHTo2SbPe4rtrEk2ZAkdzCLZXAGP/56Qgd6Ah26Bbp3JgfxNBSWm2j3G0ZHFUTJ0Pt0H+lKwoSBt0DIjD/LsaCQVTBMpHiEW+0KoD21LHxX8fyORND2fwqnZrvTf2rVf5QfW103NMXqnTun5pIcuhb9Yraj+R/kPUBzPBOYgJ+/wFxbYj8vEkz2QJZUFRsHIdr6BNdz5DIqYbqjSCTlKgadRvzkJ4cfBR4CH60m6sTjkgJxn7SQsraXqs1mn3YnQcnNc8vj8vlWMd3uRCebm7jcz3nTMiMMoWZrgLnBBlNFTg8UhlQVGESu6zsvOcy5qAob9gN+XiQKT44a4/pWDToEdQkLt6Go4LWOO8DRj2WTo45S/746DwnRsPSPBKF8i9g4r8fZh2Y2iwdij3i6Wq3OGZf9SJROqUEcM34AM5lwa+rB+UOddICPajFJGg/X/JvNGLPUj8vZ6QPD0Nv9R2CG3U11fKpuoHClH2IYKL5gOJ08syd3boOPpu5zGlrELRzZ5z1lAUW/2W+yj8w30ejH/X63+VoShcYVdtH7TQAjW5H4G+3jxBsZOFHCWMdzBrolvksm42d+tggSdQt3E8vFRWrEn0FY6/iMNHip5bsDtErX8SUXYfhuQRyR2LlRFL09d6nU/XPX4N+8QvD85pmS79nd+KmIqOWZDSNHqq1LAtDHuKwNr40cHwaDPamYK7Jxm9aVyaqLq9+3Tg4hhbMf6mWNPWkgxbVr5W4vrxfEOwee6ktQpGEXNxYsiFWfhj0YtgvBY7UR7tMIX3KrLD8tbjuEGZkusfwpVyYYi9hEOygFMIp06esv3myBwax0w+oPqNbvGpStxvf1qoc5yKUK1RFqX8PiV6I5hAnWMdAX3LBAGFjGn5cdZSUpX8sra7WBLwWiPJxedaIjFPGzj8vf8JfSiIAFeVIotOvSJ+lW6q/vu6AFjmFGjdQqA6sZCN7Li/knz+P27t5c+c41lpOoYz+eSB5NhvDa+cprjGXBUDeseaLTA2gS5R7vxiuizy1F8NeksbECFZy7xiongkXnQiwpGJp4Jdgo3Dtzu476Q3d/2ftjO9dfW79aLYywUiMrXtdKnJA/LTd9o83WKnnqwK6TWbjpsUBj16VY78EFMyE4TEcynf0uAP/j/zhi+C3GHcIcEXYclLhaMvdHdFVG8hT2fwVG07lVFMr98QyNU9WJPnpVk6sGRKtxdINNUVjOvV9Vz4MsiSXScayC4a+PP74hyv/+QprMTD82ZjKY/Nvjg3hoemTWYMAObqHQxflSq4CY1HfboErBS572mp4Pn0nMoHlwCgnSA/Dcr77DE1xpEYj3BO6kdRnoq7b447baIjLvhBRZXZ7XUm1HtUsyTuZnFefeepygQAdyrN2zknk1plhBKtRdz6AA8EzPFKBPiRbd5x558BZ5lTPnGq/4E+FsU9gamR1Pw+bUlqkt119/Wuf8w0bvcBnPCKziQaffwrLTlmBAsABfZjf37dDoahnTR+hGBwximvuQry5x+U5uxpSQUJMrKxnb//438L9rh2Dw//868j8= + + + ssh_host_rsa_key.pub + FZBJ06JIAETv8yv6TnSDoiyHjhiKpVBBKD4V4ca+WFCySBX8+nHykvEuGS9ymurf45T80r4B4nVL9N2a7c3/0dCQBr6ta8jY30csUrhmVXmlhh8LedCp6iwsuRWDV1zogb557LrzRrfxEqFpOmwY3mxHOs+DlW7Fo2GdBGdyN5e3q/cCT633UsbPFgbkdF1wKUWj4gCHGuUVo4D3u1CH7jMU/T3hHvK5gaGbDqcMvKA7v5etkOpxb6yJoB3hI21j3GRgR6goHUXmgOHC3+BLstQ7TokdflraoCOfbUjOjiEYbpy1US2RmQYOg0811GZzOTi9+TEZnEN1bvqrBsGdQ1XokoTqlB9VFT9Ot9RqWf48qEZhcJQDcCec9YW3MeRfSfd+Q8ZqxY+Ke7zsNW4nFnVEea5nStAkuXmhD6KXyNFayaRil9hHqziul9pLAOfwGuz8whguRb98uGdVsJYqPwMYEDKr0WtJ9RNN6G6uWxe4674dJm301OxdVfXppN+6AKLeD2I/xaqafU5pqtw+tvyQ5ZoP4keOI9ycew5fEzTZOc4rndXvRhFKnIgInyPN7DJmnXmQ+1a1SdshhOtiM3Gw8bQbOzP2Z3Irzqn4ig8ydA4Vz5Wq5HcXYuTncAHxNKaO5FPws586PnURicqhI05ERF1QLOZ45k4+bFrpSY4STYKwVh5G3o+b1HjRMEO6HUGFXa2TsnwN+LsYaQ+ZfofYMDsg9Q/EeX7PndKP+vzQmzmovqACx9zHZSZHCclrkZPe9oH+/ftrJGT+t6K/p1nY/Skq0hdzw/7gpP/nPw== + + + ssh_host_ed25519_key + nZDNboJAFEb3PAUvQAoiNSwZHGEgjAIO6OwYalH+rDKA8PR1TJp0002/xZeb3JuTm6MozwDoICxvdxDHsSvvIpRYeyj78CiWisR0ULMWz5mt3emh4h8ltESAYwysIWKErDF7Glo/AaKCUTSf80XBaSqFE96Tx1Yc2WA1OXYMPe/mXEiXnFefJjnnHZgDzEeSF/e2RubEE7+uBcMHfXihnFWokVj4m/pfqCSeXl97vllafRm9z0wFjR9kamJqmGptVnspupVwVt3Kre7QHdDRQ2HVXDMvfqQuf9PizTRKbjAudBBNdn8ipe5r5Ja+hDgHb2B6ZFE957kejkFs1HTxdHSIvk620R3TJbCKAEovxRCv/9b/DQ== + + + ssh_host_ed25519_key.pub + Ky7O0E1NMTI1NbRUcAQCZ2O/qkRnw5woF09DvxBXU5CYp0eZZ6SXZ2B2bn6iV3BFuEeJvmGwW2W5h2+5kbFTUKVzaWpolrG3YWhheKhCUX5+iUN6uW5xiYGhXmp6fl5qSWaFXk5iHhcA + + +
diff --git a/config.json.example b/config.json.example new file mode 100644 index 0000000..51f1e0b --- /dev/null +++ b/config.json.example @@ -0,0 +1,21 @@ +{ + "ssh_user": "root", + "ssh_key_path": "/home/user/.ssh/id_rsa", + "timeout": 2, + "additional_networks": [ + "10.0.0.0/24", + "10.8.0.0/24" + ], + "special_devices": { + "192.168.1.1": { + "name": "pfSense Main Firewall", + "type": "firewall", + "os": "pfSense" + } + }, + "scan_options": { + "max_workers": 10, + "ping_timeout": 2, + "port_scan_timeout": 1 + } +} diff --git a/integrated_scanner.py b/integrated_scanner.py new file mode 100755 index 0000000..fdb94b2 --- /dev/null +++ b/integrated_scanner.py @@ -0,0 +1,284 @@ +#!/usr/bin/env python3 +""" +Complete Network Scanner with pfSense Integration +Combines network scanning with pfSense-specific features +""" + +import json +import logging +import argparse +from datetime import datetime +from network_scanner import NetworkScanner, NetworkSegment +from pfsense_scanner import PfSenseScanner + +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger(__name__) + + +class IntegratedNetworkScanner: + """Enhanced network scanner with pfSense integration""" + + def __init__(self, config: dict): + self.config = config + self.base_scanner = NetworkScanner(config) + self.pfsense_devices = [] + + def scan_all(self): + """Perform complete network scan including pfSense devices""" + logger.info("Starting integrated network scan...") + + # Run base network scan + self.base_scanner.scan_all() + + # Identify and enhance pfSense devices + self._scan_pfsense_devices() + + logger.info("Integrated scan complete") + + def _scan_pfsense_devices(self): + """Find and deeply scan pfSense devices""" + logger.info("Looking for pfSense devices...") + + # Check configured special devices + special_devices = self.config.get('special_devices', {}) + + for segment in self.base_scanner.segments: + for device in segment.devices: + is_pfsense = False + + # Check if device is marked as pfSense in config + if device.ip in special_devices: + if special_devices[device.ip].get('type') == 'firewall' or \ + special_devices[device.ip].get('os') == 'pfSense': + is_pfsense = True + + # Check if hostname contains pfsense + if device.hostname and 'pfsense' in device.hostname.lower(): + is_pfsense = True + + # Check if device looks like a pfSense (has many routes and ports 80/443) + if device.routes and len(device.routes) > 3 and \ + 80 in device.open_ports and 443 in device.open_ports: + is_pfsense = True + + if is_pfsense and device.ssh_accessible: + logger.info(f"Enhanced scanning pfSense device: {device.ip}") + self._enhance_pfsense_device(device) + + def _enhance_pfsense_device(self, device): + """Enhance device info with pfSense-specific data""" + try: + scanner = PfSenseScanner( + device.ip, + self.config.get('ssh_user', 'root'), + self.config.get('ssh_key_path') + ) + + pfsense_info = scanner.get_full_info() + + # Merge pfSense-specific info into device + device.device_type = 'firewall' + device.os_type = 'pfSense (FreeBSD)' + + # Store additional pfSense data + if not hasattr(device, 'pfsense_info'): + device.__dict__['pfsense_info'] = pfsense_info + + # Add DHCP leases to known devices + dhcp_leases = pfsense_info.get('dhcp_leases', []) + if dhcp_leases: + logger.info(f"Found {len(dhcp_leases)} DHCP leases on {device.ip}") + + # Add VPN info + vpn_info = pfsense_info.get('vpn', {}) + wireguard = vpn_info.get('wireguard', []) + if wireguard: + logger.info(f"Found {len(wireguard)} WireGuard tunnels on {device.ip}") + + self.pfsense_devices.append(device) + + except Exception as e: + logger.error(f"Error enhancing pfSense device {device.ip}: {e}") + + def export_json(self, filename: str): + """Export enhanced results to JSON""" + data = { + 'scan_timestamp': datetime.now().isoformat(), + 'segments': [] + } + + for segment in self.base_scanner.segments: + segment_data = { + 'name': segment.name, + 'cidr': segment.cidr, + 'gateway': segment.gateway, + 'is_vpn': segment.is_vpn, + 'devices': [] + } + + for device in segment.devices: + device_data = { + 'ip': device.ip, + 'hostname': device.hostname, + 'mac': device.mac, + 'manufacturer': device.manufacturer, + 'os_type': device.os_type, + 'os_version': device.os_version, + 'device_type': device.device_type, + 'open_ports': device.open_ports, + 'ssh_accessible': device.ssh_accessible, + 'services': device.services, + 'routes': device.routes, + 'interfaces': device.interfaces + } + + # Add pfSense-specific info if available + if hasattr(device, 'pfsense_info'): + device_data['pfsense_info'] = device.__dict__['pfsense_info'] + + segment_data['devices'].append(device_data) + + data['segments'].append(segment_data) + + with open(filename, 'w') as f: + json.dump(data, f, indent=2) + + logger.info(f"Exported results to {filename}") + + def print_summary(self): + """Print enhanced summary""" + print("\n" + "="*80) + print("INTEGRATED NETWORK SCAN SUMMARY") + print("="*80) + + total_devices = sum(len(seg.devices) for seg in self.base_scanner.segments) + print(f"\nTotal Segments: {len(self.base_scanner.segments)}") + print(f"Total Devices: {total_devices}") + print(f"pfSense Devices: {len(self.pfsense_devices)}") + + for segment in self.base_scanner.segments: + print(f"\n{'='*80}") + print(f"📡 Network: {segment.name} ({segment.cidr})") + if segment.is_vpn: + print(" 🔐 VPN Network") + print(f" Devices: {len(segment.devices)}") + + for device in segment.devices: + icon = self._get_device_icon(device.device_type) + print(f"\n {icon} {device.ip}") + + if device.hostname: + print(f" Hostname: {device.hostname}") + if device.mac: + print(f" MAC: {device.mac}") + if device.device_type: + print(f" Type: {device.device_type}") + if device.os_type: + print(f" OS: {device.os_type} {device.os_version or ''}") + if device.open_ports: + print(f" Ports: {', '.join(map(str, device.open_ports))}") + if device.ssh_accessible: + print(f" ✓ SSH Accessible") + + # Show pfSense-specific info + if hasattr(device, 'pfsense_info'): + pfsense = device.__dict__['pfsense_info'] + print(f" 🛡️ pfSense Firewall:") + print(f" Interfaces: {len(pfsense.get('interfaces', []))}") + print(f" Routes: {len(pfsense.get('routes', []))}") + print(f" DHCP Leases: {len(pfsense.get('dhcp_leases', []))}") + + vpn = pfsense.get('vpn', {}) + wg_count = len(vpn.get('wireguard', [])) + ovpn_count = len(vpn.get('openvpn', [])) + if wg_count: + print(f" WireGuard Tunnels: {wg_count}") + if ovpn_count: + print(f" OpenVPN Connections: {ovpn_count}") + + if device.routes and len(device.routes) > 0: + print(f" 📋 Routing Table ({len(device.routes)} routes):") + for route in device.routes[:3]: # Show first 3 + dest = route.get('destination', 'unknown') + gw = route.get('gateway', 'direct') + print(f" → {dest} via {gw}") + if len(device.routes) > 3: + print(f" ... and {len(device.routes) - 3} more") + + print("\n" + "="*80) + + def _get_device_icon(self, device_type): + """Get emoji icon for device type""" + icons = { + 'router': '🔀', + 'firewall': '🛡️', + 'switch': '🔌', + 'server': '🖥️', + 'linux_server': '🐧', + 'windows_client': '💻', + 'client': '💻' + } + return icons.get(device_type, '❓') + + +def main(): + parser = argparse.ArgumentParser( + description='Integrated Network Scanner with pfSense Support' + ) + parser.add_argument('-c', '--config', default='config.json', + help='Configuration file (default: config.json)') + parser.add_argument('-o', '--output', default='network_scan.json', + help='Output JSON file (default: network_scan.json)') + parser.add_argument('-v', '--verbose', action='store_true', + help='Verbose output') + parser.add_argument('--generate-svg', action='store_true', + help='Automatically generate SVG diagram after scan') + + args = parser.parse_args() + + if args.verbose: + logging.getLogger().setLevel(logging.DEBUG) + + # Load configuration + try: + with open(args.config, 'r') as f: + config = json.load(f) + logger.info(f"Loaded configuration from {args.config}") + except FileNotFoundError: + logger.warning(f"Config file {args.config} not found, using defaults") + config = {} + + # Run integrated scanner + scanner = IntegratedNetworkScanner(config) + scanner.scan_all() + + # Print summary + scanner.print_summary() + + # Export results + scanner.export_json(args.output) + + print(f"\n✓ Scan complete! Results saved to {args.output}") + + # Generate SVG if requested + if args.generate_svg: + try: + from svg_generator import NetworkDiagramGenerator + + with open(args.output, 'r') as f: + scan_data = json.load(f) + + svg_file = args.output.replace('.json', '.svg') + generator = NetworkDiagramGenerator(scan_data) + generator.generate_svg(svg_file) + + print(f"✓ SVG diagram generated: {svg_file}") + except Exception as e: + logger.error(f"Error generating SVG: {e}") + + +if __name__ == '__main__': + main() diff --git a/network_scanner.py b/network_scanner.py new file mode 100755 index 0000000..e2c59a8 --- /dev/null +++ b/network_scanner.py @@ -0,0 +1,532 @@ +#!/usr/bin/env python3 +""" +Network Scanner - Comprehensive network topology discovery tool +Scans local and VPN networks, gathers device info, routing tables, and generates +structured data for network diagram visualization. +""" + +import subprocess +import ipaddress +import json +import re +import socket +import argparse +from typing import Dict, List, Optional, Tuple +from dataclasses import dataclass, asdict +from concurrent.futures import ThreadPoolExecutor, as_completed +import logging + +# Configure logging +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger(__name__) + + +@dataclass +class Device: + """Represents a network device""" + ip: str + hostname: Optional[str] = None + mac: Optional[str] = None + manufacturer: Optional[str] = None + os_type: Optional[str] = None + os_version: Optional[str] = None + device_type: Optional[str] = None # router, switch, server, client, etc. + open_ports: List[int] = None + ssh_accessible: bool = False + services: List[str] = None + routes: List[Dict] = None + interfaces: List[Dict] = None + + def __post_init__(self): + if self.open_ports is None: + self.open_ports = [] + if self.services is None: + self.services = [] + if self.routes is None: + self.routes = [] + if self.interfaces is None: + self.interfaces = [] + + +@dataclass +class NetworkSegment: + """Represents a network segment""" + name: str + cidr: str + gateway: Optional[str] = None + vlan: Optional[int] = None + is_vpn: bool = False + devices: List[Device] = None + + def __post_init__(self): + if self.devices is None: + self.devices = [] + + +class NetworkScanner: + """Main network scanner class""" + + def __init__(self, config: Dict): + self.config = config + self.segments: List[NetworkSegment] = [] + self.ssh_user = config.get('ssh_user', 'root') + self.ssh_key = config.get('ssh_key_path') + self.timeout = config.get('timeout', 2) + + def discover_networks(self) -> List[str]: + """Discover all network segments from local routing table""" + logger.info("Discovering network segments...") + networks = [] + + try: + # Get local routing table + result = subprocess.run( + ['ip', 'route', 'show'], + capture_output=True, + text=True, + timeout=5 + ) + + for line in result.stdout.splitlines(): + # Parse routes like: 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10 + match = re.search(r'(\d+\.\d+\.\d+\.\d+/\d+)', line) + if match: + network = match.group(1) + try: + ipaddress.ip_network(network, strict=False) + if network not in networks: + networks.append(network) + logger.info(f"Found network: {network}") + except ValueError: + continue + + # Add configured networks + for net in self.config.get('additional_networks', []): + if net not in networks: + networks.append(net) + logger.info(f"Added configured network: {net}") + + except Exception as e: + logger.error(f"Error discovering networks: {e}") + + return networks + + def ping_sweep(self, network: str) -> List[str]: + """Perform ping sweep to find live hosts""" + logger.info(f"Performing ping sweep on {network}") + live_hosts = [] + + try: + net = ipaddress.ip_network(network, strict=False) + hosts = list(net.hosts()) + + # Limit to reasonable size + if len(hosts) > 254: + logger.warning(f"Large network {network}, limiting scan") + hosts = hosts[:254] + + with ThreadPoolExecutor(max_workers=50) as executor: + future_to_ip = { + executor.submit(self._ping_host, str(ip)): str(ip) + for ip in hosts + } + + for future in as_completed(future_to_ip): + ip = future_to_ip[future] + try: + if future.result(): + live_hosts.append(ip) + logger.info(f"Host alive: {ip}") + except Exception as e: + logger.debug(f"Error checking {ip}: {e}") + + except Exception as e: + logger.error(f"Error in ping sweep: {e}") + + return live_hosts + + def _ping_host(self, ip: str) -> bool: + """Ping a single host""" + try: + result = subprocess.run( + ['ping', '-c', '1', '-W', str(self.timeout), ip], + capture_output=True, + timeout=self.timeout + 1 + ) + return result.returncode == 0 + except: + return False + + def get_device_info(self, ip: str) -> Device: + """Gather comprehensive information about a device""" + logger.info(f"Gathering info for {ip}") + device = Device(ip=ip) + + # Get hostname + device.hostname = self._get_hostname(ip) + + # Get MAC address + device.mac = self._get_mac_address(ip) + + # Port scan for common services + device.open_ports = self._scan_common_ports(ip) + + # Try SSH access + if 22 in device.open_ports: + device.ssh_accessible = self._test_ssh(ip) + + if device.ssh_accessible: + # Gather detailed info via SSH + self._gather_ssh_info(device) + + # Identify device type based on ports and services + device.device_type = self._identify_device_type(device) + + return device + + def _get_hostname(self, ip: str) -> Optional[str]: + """Get hostname via reverse DNS""" + try: + hostname, _, _ = socket.gethostbyaddr(ip) + return hostname + except: + return None + + def _get_mac_address(self, ip: str) -> Optional[str]: + """Get MAC address from ARP table""" + try: + # First ensure the host is in ARP table + subprocess.run(['ping', '-c', '1', '-W', '1', ip], + capture_output=True, timeout=2) + + result = subprocess.run( + ['ip', 'neigh', 'show', ip], + capture_output=True, + text=True, + timeout=2 + ) + + match = re.search(r'([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})', + result.stdout, re.IGNORECASE) + if match: + return match.group(1).upper() + except: + pass + return None + + def _scan_common_ports(self, ip: str) -> List[int]: + """Scan common ports""" + common_ports = [22, 80, 443, 8080, 8443, 3389, 445, 139, 21, 23, 25, 53, 3306, 5432] + open_ports = [] + + for port in common_ports: + if self._check_port(ip, port): + open_ports.append(port) + logger.debug(f"{ip}:{port} - OPEN") + + return open_ports + + def _check_port(self, ip: str, port: int) -> bool: + """Check if a port is open""" + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(1) + result = sock.connect_ex((ip, port)) + sock.close() + return result == 0 + except: + return False + + def _test_ssh(self, ip: str) -> bool: + """Test SSH connectivity""" + try: + cmd = ['ssh', '-o', 'ConnectTimeout=3', + '-o', 'StrictHostKeyChecking=no', + '-o', 'BatchMode=yes'] + + if self.ssh_key: + cmd.extend(['-i', self.ssh_key]) + + cmd.extend([f'{self.ssh_user}@{ip}', 'echo', 'test']) + + result = subprocess.run(cmd, capture_output=True, timeout=5) + return result.returncode == 0 + except: + return False + + def _gather_ssh_info(self, device: Device): + """Gather detailed information via SSH""" + logger.info(f"Gathering SSH info from {device.ip}") + + # Get OS info + device.os_type, device.os_version = self._get_os_info(device.ip) + + # Get network interfaces + device.interfaces = self._get_interfaces(device.ip) + + # Get routing table + device.routes = self._get_routes(device.ip) + + # Get running services + device.services = self._get_services(device.ip) + + def _ssh_exec(self, ip: str, command: str) -> Optional[str]: + """Execute command via SSH""" + try: + cmd = ['ssh', '-o', 'ConnectTimeout=3', + '-o', 'StrictHostKeyChecking=no', + '-o', 'BatchMode=yes'] + + if self.ssh_key: + cmd.extend(['-i', self.ssh_key]) + + cmd.extend([f'{self.ssh_user}@{ip}', command]) + + result = subprocess.run(cmd, capture_output=True, text=True, timeout=10) + if result.returncode == 0: + return result.stdout + except Exception as e: + logger.debug(f"SSH exec error on {ip}: {e}") + return None + + def _get_os_info(self, ip: str) -> Tuple[Optional[str], Optional[str]]: + """Get OS type and version""" + output = self._ssh_exec(ip, 'cat /etc/os-release 2>/dev/null || uname -a') + if output: + if 'NAME=' in output: + match = re.search(r'NAME="?([^"\n]+)"?', output) + name = match.group(1) if match else None + match = re.search(r'VERSION="?([^"\n]+)"?', output) + version = match.group(1) if match else None + return name, version + else: + return 'Unix-like', output.strip() + return None, None + + def _get_interfaces(self, ip: str) -> List[Dict]: + """Get network interfaces""" + interfaces = [] + output = self._ssh_exec(ip, 'ip -j addr show 2>/dev/null || ip addr show') + + if output: + try: + # Try JSON format first + data = json.loads(output) + for iface in data: + interfaces.append({ + 'name': iface.get('ifname'), + 'state': iface.get('operstate'), + 'mac': iface.get('address'), + 'addresses': [addr.get('local') for addr in iface.get('addr_info', [])] + }) + except json.JSONDecodeError: + # Parse text format + current_iface = None + for line in output.splitlines(): + if not line.startswith(' '): + match = re.match(r'\d+: (\S+):', line) + if match: + current_iface = {'name': match.group(1), 'addresses': []} + interfaces.append(current_iface) + elif 'inet ' in line and current_iface: + match = re.search(r'inet (\S+)', line) + if match: + current_iface['addresses'].append(match.group(1)) + + return interfaces + + def _get_routes(self, ip: str) -> List[Dict]: + """Get routing table""" + routes = [] + output = self._ssh_exec(ip, 'ip route show') + + if output: + for line in output.splitlines(): + route = {'raw': line} + + # Parse destination + if line.startswith('default'): + route['destination'] = 'default' + match = re.search(r'via (\S+)', line) + if match: + route['gateway'] = match.group(1) + else: + match = re.match(r'(\S+)', line) + if match: + route['destination'] = match.group(1) + + # Parse interface + match = re.search(r'dev (\S+)', line) + if match: + route['interface'] = match.group(1) + + routes.append(route) + + return routes + + def _get_services(self, ip: str) -> List[str]: + """Get running services""" + services = [] + output = self._ssh_exec(ip, 'systemctl list-units --type=service --state=running --no-pager --no-legend 2>/dev/null') + + if output: + for line in output.splitlines(): + match = re.match(r'(\S+\.service)', line) + if match: + services.append(match.group(1)) + + return services[:20] # Limit to top 20 + + def _identify_device_type(self, device: Device) -> str: + """Identify device type based on available info""" + if device.routes and len(device.routes) > 5: + return 'router' + elif 80 in device.open_ports or 443 in device.open_ports: + if device.hostname and 'pfsense' in device.hostname.lower(): + return 'firewall' + return 'server' + elif 3389 in device.open_ports: + return 'windows_client' + elif 22 in device.open_ports: + return 'linux_server' + else: + return 'client' + + def scan_network(self, network: str, name: str = None, is_vpn: bool = False) -> NetworkSegment: + """Scan a complete network segment""" + logger.info(f"Scanning network segment: {network}") + + segment = NetworkSegment( + name=name or network, + cidr=network, + is_vpn=is_vpn + ) + + # Find live hosts + live_hosts = self.ping_sweep(network) + + # Gather device info + with ThreadPoolExecutor(max_workers=10) as executor: + future_to_ip = { + executor.submit(self.get_device_info, ip): ip + for ip in live_hosts + } + + for future in as_completed(future_to_ip): + try: + device = future.result() + segment.devices.append(device) + except Exception as e: + logger.error(f"Error getting device info: {e}") + + return segment + + def scan_all(self): + """Scan all configured networks""" + logger.info("Starting comprehensive network scan...") + + # Discover networks + networks = self.discover_networks() + + # Scan each network + for network in networks: + try: + segment = self.scan_network(network) + self.segments.append(segment) + except Exception as e: + logger.error(f"Error scanning {network}: {e}") + + logger.info(f"Scan complete. Found {len(self.segments)} segments") + + def export_json(self, filename: str): + """Export results to JSON""" + data = { + 'scan_timestamp': None, # Will be set by caller + 'segments': [ + { + 'name': seg.name, + 'cidr': seg.cidr, + 'gateway': seg.gateway, + 'is_vpn': seg.is_vpn, + 'devices': [asdict(dev) for dev in seg.devices] + } + for seg in self.segments + ] + } + + with open(filename, 'w') as f: + json.dump(data, f, indent=2) + + logger.info(f"Exported results to {filename}") + + def print_summary(self): + """Print a human-readable summary""" + print("\n" + "="*80) + print("NETWORK SCAN SUMMARY") + print("="*80) + + for segment in self.segments: + print(f"\n📡 Network: {segment.name} ({segment.cidr})") + print(f" Devices found: {len(segment.devices)}") + + for device in segment.devices: + print(f"\n 🖥️ {device.ip}") + if device.hostname: + print(f" Hostname: {device.hostname}") + if device.mac: + print(f" MAC: {device.mac}") + if device.device_type: + print(f" Type: {device.device_type}") + if device.os_type: + print(f" OS: {device.os_type} {device.os_version or ''}") + if device.open_ports: + print(f" Open Ports: {', '.join(map(str, device.open_ports))}") + if device.ssh_accessible: + print(f" ✓ SSH Accessible") + if device.routes: + print(f" Routes: {len(device.routes)}") + if device.interfaces: + print(f" Interfaces: {len(device.interfaces)}") + + +def main(): + parser = argparse.ArgumentParser(description='Network Scanner for Diagram Generation') + parser.add_argument('-c', '--config', default='config.json', + help='Configuration file (default: config.json)') + parser.add_argument('-o', '--output', default='network_scan.json', + help='Output JSON file (default: network_scan.json)') + parser.add_argument('-v', '--verbose', action='store_true', + help='Verbose output') + + args = parser.parse_args() + + if args.verbose: + logger.setLevel(logging.DEBUG) + + # Load configuration + try: + with open(args.config, 'r') as f: + config = json.load(f) + except FileNotFoundError: + logger.warning(f"Config file {args.config} not found, using defaults") + config = {} + + # Run scanner + scanner = NetworkScanner(config) + scanner.scan_all() + + # Print summary + scanner.print_summary() + + # Export results + from datetime import datetime + scanner.export_json(args.output) + + print(f"\n✓ Scan complete! Results saved to {args.output}") + + +if __name__ == '__main__': + main() diff --git a/pfsense_scanner.py b/pfsense_scanner.py new file mode 100755 index 0000000..1403a58 --- /dev/null +++ b/pfsense_scanner.py @@ -0,0 +1,336 @@ +#!/usr/bin/env python3 +""" +pfSense specific scanner module +Extracts routing tables, firewall rules, VPN configurations, and network topology +""" + +import subprocess +import re +import logging +from typing import Dict, List, Optional, Tuple + +logger = logging.getLogger(__name__) + + +class PfSenseScanner: + """Scanner specifically for pfSense firewalls""" + + def __init__(self, ip: str, ssh_user: str = 'root', ssh_key: Optional[str] = None): + self.ip = ip + self.ssh_user = ssh_user + self.ssh_key = ssh_key + + def _ssh_exec(self, command: str) -> Optional[str]: + """Execute command on pfSense via SSH""" + try: + cmd = ['ssh', '-o', 'ConnectTimeout=5', + '-o', 'StrictHostKeyChecking=no', + '-o', 'BatchMode=yes'] + + if self.ssh_key: + cmd.extend(['-i', self.ssh_key]) + + cmd.extend([f'{self.ssh_user}@{self.ip}', command]) + + result = subprocess.run(cmd, capture_output=True, text=True, timeout=30) + if result.returncode == 0: + return result.stdout + else: + logger.error(f"SSH command failed: {result.stderr}") + except Exception as e: + logger.error(f"SSH exec error on {self.ip}: {e}") + return None + + def get_interfaces(self) -> List[Dict]: + """Get all network interfaces""" + logger.info(f"Getting pfSense interfaces from {self.ip}") + interfaces = [] + + output = self._ssh_exec('ifconfig -a') + if not output: + return interfaces + + current_iface = None + for line in output.splitlines(): + if not line.startswith((' ', '\t')): + # New interface + match = re.match(r'(\S+):\s+flags=', line) + if match: + if current_iface: + interfaces.append(current_iface) + current_iface = { + 'name': match.group(1), + 'addresses': [], + 'flags': line + } + elif current_iface: + # Interface details + if 'inet ' in line: + match = re.search(r'inet (\S+)', line) + if match: + ip = match.group(1) + netmask_match = re.search(r'netmask (\S+)', line) + if netmask_match: + current_iface['addresses'].append({ + 'ip': ip, + 'netmask': netmask_match.group(1) + }) + elif 'ether ' in line: + match = re.search(r'ether (\S+)', line) + if match: + current_iface['mac'] = match.group(1) + + if current_iface: + interfaces.append(current_iface) + + return interfaces + + def get_routing_table(self) -> List[Dict]: + """Get routing table""" + logger.info(f"Getting routing table from pfSense {self.ip}") + routes = [] + + output = self._ssh_exec('netstat -rn -f inet') + if not output: + return routes + + in_table = False + for line in output.splitlines(): + if 'Destination' in line and 'Gateway' in line: + in_table = True + continue + + if in_table and line.strip(): + parts = line.split() + if len(parts) >= 4: + route = { + 'destination': parts[0], + 'gateway': parts[1], + 'flags': parts[2], + 'interface': parts[3] if len(parts) > 3 else None + } + routes.append(route) + + return routes + + def get_vpn_connections(self) -> Dict: + """Get VPN (WireGuard, OpenVPN, IPsec) configurations and status""" + logger.info(f"Getting VPN connections from pfSense {self.ip}") + vpn_info = { + 'wireguard': self._get_wireguard_info(), + 'openvpn': self._get_openvpn_info(), + 'ipsec': self._get_ipsec_info() + } + return vpn_info + + def _get_wireguard_info(self) -> List[Dict]: + """Get WireGuard tunnel information""" + tunnels = [] + + # Check if WireGuard is running + output = self._ssh_exec('wg show all dump 2>/dev/null') + if not output: + return tunnels + + for line in output.splitlines(): + parts = line.split('\t') + if len(parts) >= 5: + tunnel = { + 'interface': parts[0], + 'peer': parts[1] if len(parts) > 1 else None, + 'endpoint': parts[3] if len(parts) > 3 else None, + 'allowed_ips': parts[4] if len(parts) > 4 else None, + 'latest_handshake': parts[5] if len(parts) > 5 else None, + } + tunnels.append(tunnel) + + return tunnels + + def _get_openvpn_info(self) -> List[Dict]: + """Get OpenVPN connection information""" + connections = [] + + # Check OpenVPN status + output = self._ssh_exec('ps aux | grep openvpn | grep -v grep') + if output: + for line in output.splitlines(): + if 'openvpn' in line: + match = re.search(r'--config\s+(\S+)', line) + if match: + connections.append({ + 'config': match.group(1), + 'status': 'running' + }) + + return connections + + def _get_ipsec_info(self) -> List[Dict]: + """Get IPsec tunnel information""" + tunnels = [] + + output = self._ssh_exec('ipsec statusall 2>/dev/null || setkey -D 2>/dev/null') + if output: + # Parse IPsec status - this varies by version + tunnels.append({ + 'raw_status': output, + 'parsed': False # Would need specific parsing for your setup + }) + + return tunnels + + def get_firewall_rules(self) -> List[Dict]: + """Get active firewall rules""" + logger.info(f"Getting firewall rules from pfSense {self.ip}") + rules = [] + + output = self._ssh_exec('pfctl -sr -v') + if not output: + return rules + + current_rule = None + for line in output.splitlines(): + if line.startswith(('@', 'pass', 'block')): + if current_rule: + rules.append(current_rule) + current_rule = {'rule': line.strip()} + elif current_rule and line.strip(): + # Additional rule info + if 'packets:' in line or 'bytes:' in line: + current_rule['stats'] = line.strip() + + if current_rule: + rules.append(current_rule) + + return rules + + def get_dhcp_leases(self) -> List[Dict]: + """Get DHCP leases""" + logger.info(f"Getting DHCP leases from pfSense {self.ip}") + leases = [] + + output = self._ssh_exec('cat /var/dhcpd/var/db/dhcpd.leases 2>/dev/null') + if not output: + return leases + + current_lease = None + for line in output.splitlines(): + line = line.strip() + if line.startswith('lease '): + if current_lease: + leases.append(current_lease) + match = re.match(r'lease (\S+)', line) + if match: + current_lease = {'ip': match.group(1)} + elif current_lease: + if line.startswith('hardware ethernet'): + match = re.search(r'hardware ethernet (\S+);', line) + if match: + current_lease['mac'] = match.group(1) + elif line.startswith('client-hostname'): + match = re.search(r'client-hostname "([^"]+)"', line) + if match: + current_lease['hostname'] = match.group(1) + elif line.startswith('ends'): + match = re.search(r'ends \d+ ([^;]+);', line) + if match: + current_lease['expires'] = match.group(1) + + if current_lease: + leases.append(current_lease) + + return leases + + def get_arp_table(self) -> List[Dict]: + """Get ARP table""" + logger.info(f"Getting ARP table from pfSense {self.ip}") + arp_entries = [] + + output = self._ssh_exec('arp -an') + if not output: + return arp_entries + + for line in output.splitlines(): + # Format: ? (192.168.1.10) at 00:11:22:33:44:55 on em0 [ethernet] + match = re.search(r'\((\d+\.\d+\.\d+\.\d+)\)\s+at\s+([0-9a-f:]+)\s+on\s+(\S+)', line, re.IGNORECASE) + if match: + arp_entries.append({ + 'ip': match.group(1), + 'mac': match.group(2), + 'interface': match.group(3) + }) + + return arp_entries + + def get_gateway_status(self) -> List[Dict]: + """Get gateway status""" + logger.info(f"Getting gateway status from pfSense {self.ip}") + gateways = [] + + output = self._ssh_exec('route -n get default') + if output: + gateway_ip = None + interface = None + for line in output.splitlines(): + if 'gateway:' in line: + match = re.search(r'gateway:\s*(\S+)', line) + if match: + gateway_ip = match.group(1) + elif 'interface:' in line: + match = re.search(r'interface:\s*(\S+)', line) + if match: + interface = match.group(1) + + if gateway_ip: + gateways.append({ + 'ip': gateway_ip, + 'interface': interface, + 'type': 'default' + }) + + return gateways + + def get_full_info(self) -> Dict: + """Get all information from pfSense""" + logger.info(f"Gathering complete pfSense info from {self.ip}") + + info = { + 'ip': self.ip, + 'type': 'pfSense', + 'interfaces': self.get_interfaces(), + 'routes': self.get_routing_table(), + 'vpn': self.get_vpn_connections(), + 'firewall_rules': self.get_firewall_rules(), + 'dhcp_leases': self.get_dhcp_leases(), + 'arp_table': self.get_arp_table(), + 'gateways': self.get_gateway_status() + } + + return info + + +def main(): + """Test function""" + import argparse + import json + + parser = argparse.ArgumentParser(description='pfSense Scanner') + parser.add_argument('ip', help='pfSense IP address') + parser.add_argument('-u', '--user', default='root', help='SSH user') + parser.add_argument('-k', '--key', help='SSH key path') + parser.add_argument('-o', '--output', help='Output JSON file') + + args = parser.parse_args() + + scanner = PfSenseScanner(args.ip, args.user, args.key) + info = scanner.get_full_info() + + if args.output: + with open(args.output, 'w') as f: + json.dump(info, f, indent=2) + print(f"Saved to {args.output}") + else: + print(json.dumps(info, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/quickstart.sh b/quickstart.sh new file mode 100755 index 0000000..9d28cb3 --- /dev/null +++ b/quickstart.sh @@ -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 [-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 [-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 "================================" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..339ec08 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,12 @@ +# Network Scanner Requirements +# Python 3.8+ + +# No external dependencies required for basic scanning +# All functionality uses Python standard library + +# Optional enhancements: +# nmap>=7.94 # For more detailed port scanning +# python-nmap>=0.7.1 +# netaddr>=0.8.0 # For advanced IP address manipulation +# paramiko>=3.3.1 # For more robust SSH operations +# scapy>=2.5.0 # For packet-level network analysis diff --git a/svg_generator.py b/svg_generator.py new file mode 100755 index 0000000..2d8596a --- /dev/null +++ b/svg_generator.py @@ -0,0 +1,353 @@ +#!/usr/bin/env python3 +""" +SVG Network Diagram Generator +Converts network scan results into an SVG network diagram +""" + +import json +import math +from typing import Dict, List, Tuple +from xml.etree.ElementTree import Element, SubElement, tostring +from xml.dom import minidom + + +class NetworkDiagramGenerator: + """Generate SVG diagrams from network scan data""" + + # Device type styling + DEVICE_STYLES = { + 'router': {'color': '#FF6B6B', 'icon': '🔀', 'shape': 'rect'}, + 'firewall': {'color': '#FF0000', 'icon': '🛡️', 'shape': 'rect'}, + 'switch': {'color': '#4ECDC4', 'icon': '🔌', 'shape': 'rect'}, + 'server': {'color': '#45B7D1', 'icon': '🖥️', 'shape': 'rect'}, + 'linux_server': {'color': '#45B7D1', 'icon': '🐧', 'shape': 'rect'}, + 'windows_client': {'color': '#95E1D3', 'icon': '💻', 'shape': 'rect'}, + 'client': {'color': '#A8E6CF', 'icon': '💻', 'shape': 'rect'}, + 'default': {'color': '#CCCCCC', 'icon': '❓', 'shape': 'rect'} + } + + # Network segment colors + SEGMENT_COLORS = [ + '#E3F2FD', '#F3E5F5', '#E8F5E9', '#FFF3E0', '#FCE4EC', + '#E0F2F1', '#F1F8E9', '#FFF9C4', '#FFE0B2', '#F8BBD0' + ] + + def __init__(self, scan_data: Dict): + self.scan_data = scan_data + self.width = 1600 + self.height = 1200 + self.margin = 50 + self.device_width = 120 + self.device_height = 80 + self.segment_spacing = 200 + + def generate_svg(self, output_file: str): + """Generate SVG diagram""" + svg = Element('svg', { + 'width': str(self.width), + 'height': str(self.height), + 'xmlns': 'http://www.w3.org/2000/svg', + 'version': '1.1' + }) + + # Add styles + self._add_styles(svg) + + # Add title + self._add_title(svg) + + # Calculate layout + segments = self.scan_data.get('segments', []) + layout = self._calculate_layout(segments) + + # Draw network segments + for i, (segment, positions) in enumerate(zip(segments, layout)): + self._draw_segment(svg, segment, positions, i) + + # Draw connections + self._draw_connections(svg, segments, layout) + + # Add legend + self._add_legend(svg) + + # Save to file + self._save_svg(svg, output_file) + + def _add_styles(self, svg: Element): + """Add CSS styles""" + style = SubElement(svg, 'style') + style.text = """ + .device-box { stroke: #333; stroke-width: 2; } + .device-label { font-family: Arial, sans-serif; font-size: 12px; fill: #000; } + .device-icon { font-size: 24px; } + .segment-box { stroke: #666; stroke-width: 2; fill-opacity: 0.1; } + .segment-label { font-family: Arial, sans-serif; font-size: 14px; font-weight: bold; fill: #333; } + .connection { stroke: #999; stroke-width: 2; stroke-dasharray: 5,5; } + .title { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; fill: #333; } + .info-text { font-family: Arial, sans-serif; font-size: 10px; fill: #666; } + .legend-text { font-family: Arial, sans-serif; font-size: 11px; fill: #333; } + """ + + def _add_title(self, svg: Element): + """Add diagram title""" + title = SubElement(svg, 'text', { + 'x': str(self.width // 2), + 'y': '30', + 'text-anchor': 'middle', + 'class': 'title' + }) + title.text = 'Network Topology Diagram' + + def _calculate_layout(self, segments: List[Dict]) -> List[List[Tuple]]: + """Calculate positions for all devices""" + layout = [] + + # Arrange segments horizontally + segment_width = (self.width - 2 * self.margin) / len(segments) if segments else self.width + + for seg_idx, segment in enumerate(segments): + devices = segment.get('devices', []) + positions = [] + + # Calculate segment area + seg_x = self.margin + seg_idx * segment_width + seg_y = self.margin + 60 + seg_w = segment_width - 20 + seg_h = self.height - seg_y - self.margin + + # Arrange devices in a grid within segment + cols = math.ceil(math.sqrt(len(devices))) + rows = math.ceil(len(devices) / cols) if cols > 0 else 1 + + device_spacing_x = seg_w / (cols + 1) if cols > 0 else seg_w / 2 + device_spacing_y = seg_h / (rows + 1) if rows > 0 else seg_h / 2 + + for dev_idx, device in enumerate(devices): + col = dev_idx % cols + row = dev_idx // cols + + x = seg_x + (col + 1) * device_spacing_x + y = seg_y + (row + 1) * device_spacing_y + + positions.append((x, y, device)) + + layout.append(positions) + + return layout + + def _draw_segment(self, svg: Element, segment: Dict, positions: List[Tuple], seg_idx: int): + """Draw a network segment and its devices""" + if not positions: + return + + # Calculate segment bounds + xs = [pos[0] for pos in positions] + ys = [pos[1] for pos in positions] + + min_x = min(xs) - self.device_width + max_x = max(xs) + self.device_width + min_y = min(ys) - self.device_height + max_y = max(ys) + self.device_height + + # Draw segment background + color = self.SEGMENT_COLORS[seg_idx % len(self.SEGMENT_COLORS)] + SubElement(svg, 'rect', { + 'x': str(min_x - 20), + 'y': str(min_y - 40), + 'width': str(max_x - min_x + 40), + 'height': str(max_y - min_y + 60), + 'fill': color, + 'class': 'segment-box', + 'rx': '10' + }) + + # Draw segment label + label = SubElement(svg, 'text', { + 'x': str(min_x), + 'y': str(min_y - 20), + 'class': 'segment-label' + }) + vpn_indicator = ' (VPN)' if segment.get('is_vpn') else '' + label.text = f"{segment.get('name', 'Unknown')} - {segment.get('cidr', '')}{vpn_indicator}" + + # Draw devices + for x, y, device in positions: + self._draw_device(svg, device, x, y) + + def _draw_device(self, svg: Element, device: Dict, x: float, y: float): + """Draw a single device""" + device_type = device.get('device_type', 'default') + style = self.DEVICE_STYLES.get(device_type, self.DEVICE_STYLES['default']) + + # Draw device box + box_x = x - self.device_width / 2 + box_y = y - self.device_height / 2 + + SubElement(svg, 'rect', { + 'x': str(box_x), + 'y': str(box_y), + 'width': str(self.device_width), + 'height': str(self.device_height), + 'fill': style['color'], + 'class': 'device-box', + 'rx': '5' + }) + + # Add icon + icon_text = SubElement(svg, 'text', { + 'x': str(x), + 'y': str(y - 15), + 'text-anchor': 'middle', + 'class': 'device-icon' + }) + icon_text.text = style['icon'] + + # Add IP address + ip_text = SubElement(svg, 'text', { + 'x': str(x), + 'y': str(y + 5), + 'text-anchor': 'middle', + 'class': 'device-label', + 'font-weight': 'bold' + }) + ip_text.text = device.get('ip', 'Unknown') + + # Add hostname + hostname = device.get('hostname', '') + if hostname: + hostname_text = SubElement(svg, 'text', { + 'x': str(x), + 'y': str(y + 20), + 'text-anchor': 'middle', + 'class': 'info-text' + }) + # Truncate long hostnames + if len(hostname) > 20: + hostname = hostname[:17] + '...' + hostname_text.text = hostname + + # Add additional info + info_y = y + 32 + if device.get('ssh_accessible'): + ssh_text = SubElement(svg, 'text', { + 'x': str(x), + 'y': str(info_y), + 'text-anchor': 'middle', + 'class': 'info-text', + 'fill': 'green' + }) + ssh_text.text = '🔓 SSH' + + def _draw_connections(self, svg: Element, segments: List[Dict], layout: List[List[Tuple]]): + """Draw connections between devices based on routing info""" + # This is simplified - you'd analyze routing tables to determine actual connections + + # For now, connect routers between segments + routers = [] + for positions in layout: + for x, y, device in positions: + if device.get('device_type') in ['router', 'firewall']: + routers.append((x, y, device)) + + # Connect consecutive routers + for i in range(len(routers) - 1): + x1, y1, _ = routers[i] + x2, y2, _ = routers[i + 1] + + SubElement(svg, 'line', { + 'x1': str(x1), + 'y1': str(y1), + 'x2': str(x2), + 'y2': str(y2), + 'class': 'connection' + }) + + def _add_legend(self, svg: Element): + """Add legend explaining device types""" + legend_x = self.width - 200 + legend_y = self.height - 200 + + # Legend box + SubElement(svg, 'rect', { + 'x': str(legend_x - 10), + 'y': str(legend_y - 10), + 'width': '190', + 'height': str(len(self.DEVICE_STYLES) * 25 + 30), + 'fill': 'white', + 'stroke': '#333', + 'stroke-width': '1', + 'rx': '5' + }) + + # Legend title + title = SubElement(svg, 'text', { + 'x': str(legend_x), + 'y': str(legend_y + 5), + 'class': 'legend-text', + 'font-weight': 'bold' + }) + title.text = 'Device Types' + + # Legend items + y_offset = 25 + for device_type, style in self.DEVICE_STYLES.items(): + if device_type == 'default': + continue + + # Color box + SubElement(svg, 'rect', { + 'x': str(legend_x), + 'y': str(legend_y + y_offset - 8), + 'width': '15', + 'height': '15', + 'fill': style['color'], + 'stroke': '#333' + }) + + # Label + label = SubElement(svg, 'text', { + 'x': str(legend_x + 20), + 'y': str(legend_y + y_offset + 4), + 'class': 'legend-text' + }) + label.text = f"{style['icon']} {device_type.replace('_', ' ').title()}" + + y_offset += 25 + + def _save_svg(self, svg: Element, output_file: str): + """Save SVG to file with pretty formatting""" + rough_string = tostring(svg, encoding='unicode') + reparsed = minidom.parseString(rough_string) + pretty_svg = reparsed.toprettyxml(indent=' ') + + # Remove extra blank lines + pretty_svg = '\n'.join([line for line in pretty_svg.split('\n') if line.strip()]) + + with open(output_file, 'w', encoding='utf-8') as f: + f.write(pretty_svg) + + +def main(): + """Command line interface""" + import argparse + + parser = argparse.ArgumentParser(description='Generate SVG network diagram from scan data') + parser.add_argument('input', help='Input JSON file from network scan') + parser.add_argument('-o', '--output', default='network_diagram.svg', + help='Output SVG file (default: network_diagram.svg)') + + args = parser.parse_args() + + # Load scan data + with open(args.input, 'r') as f: + scan_data = json.load(f) + + # Generate diagram + generator = NetworkDiagramGenerator(scan_data) + generator.generate_svg(args.output) + + print(f"✓ Network diagram generated: {args.output}") + + +if __name__ == '__main__': + main() diff --git a/test_system.py b/test_system.py new file mode 100755 index 0000000..63b5e2f --- /dev/null +++ b/test_system.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python3 +""" +Test script to verify network scanner functionality +Run this to check if everything is working correctly +""" + +import sys +import subprocess +import socket +import json +from pathlib import Path + +def test_python_version(): + """Check Python version""" + print("Testing Python version...", end=" ") + version = sys.version_info + if version.major >= 3 and version.minor >= 8: + print(f"✓ Python {version.major}.{version.minor}.{version.micro}") + return True + else: + print(f"❌ Python {version.major}.{version.minor} (need 3.8+)") + return False + +def test_network_connectivity(): + """Test basic network connectivity""" + print("Testing network connectivity...", end=" ") + try: + # Try to connect to common DNS server + socket.create_connection(("8.8.8.8", 53), timeout=3) + print("✓") + return True + except: + print("❌ No network connectivity") + return False + +def test_commands(): + """Test required system commands""" + commands = ['ping', 'ip', 'ssh'] + all_ok = True + + for cmd in commands: + print(f"Testing command '{cmd}'...", end=" ") + try: + result = subprocess.run(['which', cmd], capture_output=True, timeout=2) + if result.returncode == 0: + print("✓") + else: + print(f"❌ '{cmd}' not found") + all_ok = False + except: + print(f"❌ Error checking '{cmd}'") + all_ok = False + + return all_ok + +def test_scripts_exist(): + """Check if all scripts exist""" + scripts = [ + 'network_scanner.py', + 'pfsense_scanner.py', + 'svg_generator.py', + 'integrated_scanner.py', + 'quickstart.sh' + ] + + all_ok = True + for script in scripts: + print(f"Checking {script}...", end=" ") + if Path(script).exists(): + print("✓") + else: + print(f"❌ Missing") + all_ok = False + + return all_ok + +def test_script_syntax(): + """Test Python script syntax""" + scripts = [ + 'network_scanner.py', + 'pfsense_scanner.py', + 'svg_generator.py', + 'integrated_scanner.py' + ] + + all_ok = True + for script in scripts: + print(f"Testing {script} syntax...", end=" ") + try: + result = subprocess.run( + ['python3', '-m', 'py_compile', script], + capture_output=True, + timeout=5 + ) + if result.returncode == 0: + print("✓") + else: + print(f"❌ Syntax error") + all_ok = False + except: + print(f"❌ Error") + all_ok = False + + return all_ok + +def test_local_network_detection(): + """Test local network detection""" + print("Detecting local networks...", end=" ") + try: + result = subprocess.run( + ['ip', 'route', 'show'], + capture_output=True, + text=True, + timeout=5 + ) + + networks = [] + for line in result.stdout.splitlines(): + if '/' in line and not line.startswith('default'): + parts = line.split() + if parts and '/' in parts[0]: + networks.append(parts[0]) + + if networks: + print(f"✓ Found {len(networks)} network(s)") + for net in networks[:3]: + print(f" - {net}") + return True + else: + print("⚠️ No networks detected") + return True + except: + print("❌ Error detecting networks") + return False + +def test_ssh_config(): + """Check SSH configuration""" + print("Checking SSH keys...", end=" ") + + ssh_dir = Path.home() / '.ssh' + keys = [] + + for key_file in ['id_rsa', 'id_ed25519', 'id_ecdsa']: + key_path = ssh_dir / key_file + if key_path.exists(): + keys.append(key_file) + + if keys: + print(f"✓ Found {len(keys)} key(s): {', '.join(keys)}") + return True + else: + print("⚠️ No SSH keys found (needed for device access)") + return True # Not critical + +def create_test_config(): + """Create a test configuration""" + print("Creating test configuration...", end=" ") + + config = { + "ssh_user": "root", + "ssh_key_path": None, + "timeout": 2, + "additional_networks": [], + "special_devices": {}, + "scan_options": { + "max_workers": 10, + "ping_timeout": 2, + "port_scan_timeout": 1 + } + } + + try: + with open('test_config.json', 'w') as f: + json.dump(config, f, indent=2) + print("✓ Created test_config.json") + return True + except Exception as e: + print(f"❌ Error: {e}") + return False + +def main(): + print("="*60) + print("Network Scanner - System Test") + print("="*60) + print() + + tests = [ + ("Python Version", test_python_version), + ("Network Connectivity", test_network_connectivity), + ("System Commands", test_commands), + ("Script Files", test_scripts_exist), + ("Script Syntax", test_script_syntax), + ("Network Detection", test_local_network_detection), + ("SSH Configuration", test_ssh_config), + ("Test Config", create_test_config), + ] + + results = [] + + for test_name, test_func in tests: + print(f"\n--- {test_name} ---") + try: + result = test_func() + results.append((test_name, result)) + except Exception as e: + print(f"❌ Test failed with error: {e}") + results.append((test_name, False)) + print() + + # Summary + print("="*60) + print("Test Summary") + print("="*60) + print() + + passed = sum(1 for _, result in results if result) + total = len(results) + + for test_name, result in results: + status = "✓ PASS" if result else "❌ FAIL" + print(f"{status:8} {test_name}") + + print() + print(f"Results: {passed}/{total} tests passed") + print() + + if passed == total: + print("🎉 All tests passed! The scanner is ready to use.") + print() + print("Next steps:") + print("1. Edit config.json with your network details") + print("2. Run: ./quickstart.sh") + print(" or: ./integrated_scanner.py --generate-svg") + else: + print("⚠️ Some tests failed. Please check the errors above.") + print() + print("Common issues:") + print("- Missing system commands: install net-tools, iproute2, openssh-client") + print("- No SSH keys: run 'ssh-keygen' to create one") + print("- Script syntax errors: check Python version") + + print() + print("="*60) + + return 0 if passed == total else 1 + +if __name__ == '__main__': + sys.exit(main())