Releases: doublegate/ProRT-IP
Release list
ProRT-IP v0.4.0 - Phase 4 Complete: Production Ready
ProRT-IP v0.4.0 - Phase 4 Complete: Production Ready
Release Date: 2025-10-27
Status: Phase 4 COMPLETE (50% of roadmap)
Quality Grade: A+ (1,338 tests, 0 warnings, 0 panics)
Repository: https://github.com/doublegate/ProRT-IP
Executive Summary
ProRT-IP v0.4.0 marks the completion of Phase 4, delivering production-ready error handling infrastructure, comprehensive network evasion capabilities, zero-copy performance optimization, PCAPNG packet capture, NUMA optimization for enterprise workloads, and IPv6 foundation. This release consolidates 9 major sprints of development spanning error handling, resilience patterns, performance optimization, and network evasion techniques.
Major Achievements:
- ✅ 100% panic-free production code - Defensive mutex handling, proper error propagation
- ✅ 5/5 Nmap evasion techniques - Full parity (fragmentation, TTL, checksums, decoys, source port)
- ✅ Zero-copy architecture - 15% performance improvement (68.3ns → 58.8ns per packet)
- ✅ NUMA-aware optimization - 30% improvement on multi-socket systems
- ✅ PCAPNG packet capture - Full support for all scan types
- ✅ IPv6 foundation - TCP Connect support, dual-stack capability
- ✅ Comprehensive error handling - Circuit breaker, retry logic, resource monitoring
- ✅ User-friendly error messages - Colored output, recovery suggestions
- ✅ 122 new error handling tests - 10% test growth (1,216 → 1,338)
- ✅ 62%+ code coverage - Improved from 61.92%
Statistics:
- Version: v0.3.9 → v0.4.0
- Tests: 1,216 → 1,338 (+122 = +10% growth)
- Coverage: 61.92% → 62%+ (+0.08%+ improvement)
- CI/CD: 7/7 platforms GREEN (100% passing)
- Release Targets: 8/8 architectures building (100%)
- Development Time: ~50 hours (9 major sprints)
- Commits: 10+ (Sprint 4.22, 4.22.1, 4.20, 4.21, 4.19, 4.18, 4.17, 4.23)
- Code Added: ~10,000 lines (production + tests + docs)
Features & Enhancements
Sprint 4.22: Error Handling Infrastructure (COMPLETE)
Circuit Breaker Pattern:
- Per-target IP tracking with independent failure thresholds
- Three states: Closed (normal), Open (failing), HalfOpen (testing recovery)
- Configurable failure threshold (default: 5 failures before circuit opens)
- Exponential timeout for HalfOpen testing (5s → 10s → 20s)
- Automatic state transitions and recovery validation
- Concurrent access with lock-free design
- Implementation:
crates/prtip-core/src/circuit_breaker.rs(515 lines, 12 tests)
Retry Logic with Exponential Backoff:
- Exponential backoff formula:
delay = base × (multiplier ^ attempt) ± jitter - Jitter ±25% to prevent thundering herd
- T0-T5 timing template integration (Nmap compatible)
- T0 (Paranoid): 5min base, 2.5x multiplier, 5 retries
- T3 (Normal): 1s base, 2.0x multiplier, 3 retries
- T5 (Insane): 50ms base, 1.5x multiplier, 2 retries
- Transient vs permanent error detection
- Per-operation retry tracking with circuit breaker integration
- Maximum retry limits to prevent infinite loops
- Implementation:
crates/prtip-core/src/retry.rs(465 lines, 12 tests)
Resource Monitoring with Adaptive Degradation:
- Real-time memory and CPU usage tracking via
sysinfocrate - Three presets: Conservative (65%/75%), Default (80%/85%), Aggressive (90%/95%)
- Adaptive configuration based on resource pressure:
- Memory >80%: Reduce parallelism 50%, flush buffers, disable PCAPNG
- Memory >95%: Emergency mode (single-threaded, minimal buffering)
- CPU >85%: Reduce worker threads, throttle packet processing
- Check interval throttling (1 second minimum) to prevent excessive polling
- Thread-safe with Arc<Mutex<>> for safe concurrent access
- Implementation:
crates/prtip-core/src/resource_monitor.rs(410 lines, 16 tests)
User-Friendly Error Messages:
- ErrorFormatter module with colored TTY output
- Red errors with cyan recovery suggestions
- Error chain display with "Caused by:" prefix and arrow formatting
- Six recovery suggestion patterns:
- Permission errors → sudo/setcap guidance
- File errors → path verification, permissions
- Rate limiting → reduce --max-rate, increase timeout
- Timeout errors → adjust -T template, check network
- Invalid targets → IP/CIDR/hostname format examples
- Output errors → disk space, file permissions
- TTY detection via std::io::IsTerminal (replaced deprecated
atty) - Integrated into main() for clean error display (11 lines → 3 lines)
- Implementation:
crates/prtip-cli/src/error_formatter.rs(347 lines, 15 tests)
Error Injection Framework:
- Deterministic testing for 11 failure modes
- Mock implementations: MockCircuitBreaker, MockRetryPolicy, MockResourceMonitor
- Failure injection points: network timeouts, memory pressure, I/O errors, permission denied
- Enables comprehensive error path coverage testing
- Implementation:
tests/error_injection_tests.rs(450 lines, 22 tests)
Testing:
- Total: 122 new tests across 6 test files (2,717 lines)
- Error injection: 22 tests (11 failure modes)
- Circuit breaker: 18 tests (state transitions, thresholds, cooldown)
- Retry logic: 14 tests (backoff, transient/permanent errors, timing)
- Resource monitor: 15 tests (thresholds, degradation, check intervals)
- Error messages: 20 tests (formatting, suggestions, TTY detection)
- Integration: 15 tests (CLI scenarios, exit codes, permissions)
- Edge cases: 18 tests (boundary conditions, CIDR /0, port limits)
Performance:
- Circuit breaker overhead: +1.5%
- Retry logic overhead: +2.0%
- Resource monitor overhead: +0.5%
- Error formatting overhead: +0.2%
- Combined overhead: +4.2% (within 5% target)
Sprint 4.22.1: Production Unwrap Audit (COMPLETE)
100% Panic-Free Production Code:
- Eliminated 7 production mutex unwraps across 3 files
- Implemented defensive poisoned mutex recovery
- Graceful error handling for lock failures
- Documented 4 safe collection unwraps with comprehensive SAFETY comments
- Zero production panics remaining
Files Modified:
crates/prtip-scanner/src/pcapng.rs(+18 lines)crates/prtip-scanner/src/os_probe.rs(+26 lines)crates/prtip-scanner/src/concurrent_scanner.rs(+15 lines)
Testing:
- All 1,338 tests passing after audit
- Zero regressions introduced
- Added test coverage for poisoned mutex scenarios
Sprint 4.20: Network Evasion Techniques (COMPLETE)
5/5 Nmap Evasion Parity - Full Coverage:
1. IP Fragmentation (RFC 791 Compliant):
- Aggressive mode:
-f(28-byte MTU, maximum fragmentation) - Custom MTU:
--mtu <value>(68-65535 bytes, must be multiple of 8) - Fragment offset calculation in 8-byte units
- Proper More Fragments (MF) bit handling
- IP header preservation across fragments
- Checksum recalculation per fragment
- Implementation:
crates/prtip-network/src/fragmentation.rs(335 lines, 78 tests)
2. TTL Manipulation:
- Custom Time-To-Live values:
--ttl <value>(1-255) - Bypass TTL-based filtering and routing policies
- Evade distance-based detection heuristics
- Integration: 4 scanner types (SYN, Connect, UDP, Discovery)
3. Bad Checksum Generation:
- Intentionally invalid checksums (0x0000)
- Firewall/IDS bypass testing
- Flag:
--badsum - Integration: TCP and UDP packet builders
4. Decoy Scanning:
- Random decoys:
-D RND:N(1-100 random IPs) - Manual decoy lists:
-D ip1,ip2,ME,ip3,ip4 - ME positioning (start, middle, end)
- Decoy IP validation and deduplication
- Implementation: DecoyConfig enum, parse_decoy_spec() parser (CLI)
5. Source Port Manipulation:
- Custom source ports:
-g <port>or--source-port <port> - Common trusted ports: 53 (DNS), 80 (HTTP), 443 (HTTPS)
- Bypass source port-based filtering
- Integration: 4 scanners (SYN, Connect, FIN/NULL/Xmas, ACK)
Testing:
- 161 new tests (1,005 → 1,166)
- 92.6% coverage for fragmentation module
- Zero regressions across all evasion techniques
Performance:
- Overhead: 0-7% across all techniques
- Negligible on production networks
- Loopback slightly higher due to localhost optimizations
Sprint 4.19: NUMA Optimization (COMPLETE)
Enterprise-Grade Multi-Socket Support:
- Topology Detection: hwloc integration for NUMA node discovery
- Thread Pinning: Core affinity assignment for worker threads
- CLI Flags:
--numa(enable),--no-numa(disable) - Performance: 30%+ improvement on dual-socket Xeon/EPYC systems
- Single-socket: 8.2M pps baseline
- Dual-socket (no NUMA): 12.1M pps (47% scaling)
- Dual-socket (--numa): 15.8M pps (93% scaling)
- Improvement: +30.6%
- Platform: Linux-only (hwloc dependency)
- Documentation:
docs/PERFORMANCE-GUIDE.md(comprehensive NUMA guide) - Testing: 14 new tests (803 → 817)
Implementation:
crates/prtip-network/src/numa/topology.rs(NUMA detection)crates/prtip-network/src/numa/affinity.rs(thread pinning)- IRQ affinity guidance for network interfaces
Sprint 4.18: PCAPNG Packet Capture (COMPLETE)
Full Packet Capture Integration:
- Format: PCAPNG (next-generation pcap format)
- Scanners: All 7 scan types support
--packet-captureflag - Writer: Thread-safe PcapngWriter with automatic file rotation
- Output:
scan-TIMESTAMP.pcapngfiles - Analysis: Wireshark/tcpdump compatible
- Performance: <2% overhead, minimal memory footprint
- Testing: 33 new tests (900 → 933)
Use Cases:
- Forensic analysis of scan sessions
- Debugging network issues
- Protocol verification
- Security research and documentation
Sprint 4.17: Zero-Copy Performance (COMPLETE)
15% Performance Improvement:
PacketBuffer Implementation:
- Zero-copy packet building in hot path
- Preallocated buffers with thread-local storage
- Direct memory writes without intermediate allocations
- Performance:
- Before: 68.3ns per packet, 3-7M allocations/sec
- After: 58...
ProRT-IP v0.3.9 - Network Evasion Techniques
ProRT-IP v0.3.9 - Network Evasion Techniques (Sprint 4.20 Complete)
Release Highlights
Nmap Evasion Parity: 4/5 Techniques Implemented (80% Complete)
This release delivers comprehensive network evasion capabilities matching Nmap's stealth features, completed over 25 hours across 9 phases with 120 new tests and zero regressions.
Key Achievements:
- ✅ IP Fragmentation (-f, --mtu) - RFC 791 compliant packet splitting
- ✅ TTL Manipulation (--ttl) - Custom Time-To-Live values (1-255)
- ✅ Bad Checksums (--badsum) - TCP/UDP checksum corruption for IDS testing
- ✅ Decoy Scanning (-D) - RND:N random + manual IP lists + ME positioning
- 📊 1,081/1,091 tests passing (99.1%, +120 new tests)
- 📝 1,050+ line comprehensive EVASION-GUIDE.md
- ⚡ 0-7% performance overhead (negligible impact)
What's New
IP Fragmentation
Fragment packets at IP layer to evade firewalls that don't reassemble fragments.
Features:
-fflag: Aggressive fragmentation (28-byte MTU, Nmap compatible)--mtu <SIZE>flag: Custom MTU (≥28 bytes, multiple of 8)- RFC 791 compliant: Proper fragment offset, flags, identification
- Integration: SYN, Stealth (FIN/NULL/Xmas/ACK), UDP scanners
Usage:
# Aggressive fragmentation (Nmap -f equivalent)
prtip -sS -f -p 80,443 target.com
# Custom MTU
prtip -sS --mtu 200 -p 1-1000 target.comTechnical Details:
- Fragment offset calculated in 8-byte units (RFC 791)
- More Fragments (MF) flag set on all but last fragment
- IP checksum recalculated for each fragment
- Minimum MTU: 28 bytes (20 IP header + 8 data minimum)
- Validation: MTU must be multiple of 8 for fragment offset alignment
TTL Manipulation
Control Time-To-Live values for hop limit testing and firewall evasion.
Features:
--ttl <VALUE>flag: Custom TTL (1-255 range)- Integration: All scanners (SYN, Stealth, UDP, Decoy)
- Use cases: Hop limit testing, TTL-based firewall bypass
Usage:
# Low TTL for hop limit testing
prtip -sS --ttl 32 -p 1-1000 target.com
# Combined with fragmentation
prtip -sS -f --ttl 16 -p 80,443 target.comTechnical Details:
- Single IP header field modification (minimal overhead)
- Applied via TcpPacketBuilder/UdpPacketBuilder .ttl() method
- Conditional application (only when configured)
Bad Checksums
Generate packets with intentionally invalid checksums (0x0000) for firewall/IDS testing.
Features:
--badsumflag: TCP/UDP checksum corruption- Purpose: Identify firewalls/IDS that don't validate checksums
- RFC 793/768 compliant: 0x0000 = invalid checksum
- Integration: SYN, Stealth, UDP scanners
Usage:
# TCP bad checksums
prtip -sS --badsum -p 80,443 target.com
# UDP bad checksums
prtip -sU --badsum -p 53,161 target.comTechnical Details:
- Conditional checksum logic: if bad_checksum { 0x0000 } else { calculate }
- Implemented in TcpPacketBuilder and UdpPacketBuilder
- 4 checksum locations modified (2 build methods × 2 builders)
- Performance benefit: ~5% faster (skips checksum calculation)
Decoy Scanning
Hide scan source by generating packets from multiple decoy IPs.
Features:
-D RND:Nformat: Generate N random decoy IPs (1-1000 range)-D ip1,ME,ip2format: Manual IP list with ME positioning- Evasion integration: Decoys + fragmentation/TTL/bad checksums
- Integration: DecoyScanner with full evasion support
Usage:
# 5 random decoys
prtip -sS -D RND:5 -p 80,443 target.com
# Manual decoys with ME positioning (real IP in middle)
prtip -sS -D 192.168.1.5,ME,192.168.1.10 -p 80 target.com
# Decoys with all evasion techniques
prtip -sS -D RND:5 -f --ttl 32 --badsum -p 1-1000 target.comTechnical Details:
- DecoyConfig enum: Random { count, me_position } | Manual { ips, me_position }
- parse_decoy_spec() parser: RND:N and manual IP list parsing
- ME positioning: Controls where real IP appears in decoy list
- Evasion integration: TTL, fragmentation, bad checksums applied to all decoy packets
Combined Evasion Examples
# Two techniques: Fragmentation + TTL
prtip -sS -f --ttl 32 -p 80,443 target.com
# Three techniques: Fragmentation + TTL + Bad Checksums
prtip -sS -f --ttl 32 --badsum -p 1-1000 target.com
# Four techniques: All Sprint 4.20 features
prtip -sS -D RND:5 -f --ttl 32 --badsum -p 1-1000 target.comPerformance Impact
Loopback Benchmarks (hyperfine, 100 ports, 3 runs):
| Configuration | Mean Time | Overhead | Notes |
|---|---|---|---|
| Baseline (no evasion) | 6.173s ± 0.205s | 0% | Reference |
| Fragmentation (-f) | 6.600s ± 0.076s | +7% | Packet splitting overhead |
| TTL (--ttl 32) | 6.173s ± 0.103s | +0% | Negligible (single header field) |
| Bad Checksums (--badsum) | 6.448s ± 0.050s | +5% | Skips calculation, minimal |
| Combined (all techniques) | 6.596s ± 0.045s | +7% | Acceptable for evasion use case |
Conclusion: All evasion features have negligible to acceptable overhead (0-7%). The combined overhead is dominated by fragmentation (packet splitting), while TTL and bad checksums introduce minimal impact.
Note: Benchmarks run on loopback (127.0.0.1) with inherent limitations. Real-world performance may vary based on network conditions, target responsiveness, and scan configuration.
Testing & Quality
Test Metrics
Total Tests: 1,081/1,091 passing (99.1%)
- New Tests: +120 (12 TTL CLI + 78 fragmentation + 5 bad checksum + 15 integration + 10 decoy CLI)
- Ignored Tests: 10 (CAP_NET_RAW privilege requirements, unchanged)
- Regressions: 0 (all existing tests still pass)
- Coverage: 62.5% maintained (15,397/24,814 lines)
Test Categories
Phase 3 (TTL CLI Testing): 12 tests
- Valid values: 1, 64, 128, 255, 32 (5 tests)
- Invalid values: 256, -1, "abc" (3 tests)
- Flag combinations: TTL+SYN, TTL+fragmentation, TTL+timing (3 tests)
- Integration: Full scan with TTL (1 test)
Phase 4 (Fragmentation Testing): 78 tests
- Basic fragmentation (8 tests)
- Fragment offset calculation (10 tests)
- MTU validation (12 tests)
- Edge cases (8 tests)
- Payload distribution (10 tests)
- Fragment count (8 tests)
- Last fragment handling (7 tests)
- IP header preservation (8 tests)
- Error handling (5 tests)
- Integration (2 tests)
Phase 6 (Bad Checksum Testing): 5 tests
- TCP bad checksum enabled (1 test)
- TCP valid checksum default (2 tests)
- UDP bad checksum enabled (1 test)
- UDP valid checksum default (1 test)
Phase 7 (Integration Testing): 15 tests
- CLI integration: --badsum with scan types (9 tests)
- Combined evasion: fragmentation/TTL/bad checksums (6 tests)
Phase 8 (Decoy CLI Testing): 10 tests
- RND parsing: RND:5, RND:10 (2 tests)
- Manual IPs: single, multiple (2 tests)
- ME positioning: first, middle, last (3 tests)
- Combined: with scan type, all evasion (2 tests)
- Error handling: invalid format (1 test)
Quality Checks
All Passing:
- ✅ cargo build --workspace (success)
- ✅ cargo clippy --all-targets --workspace -- -D warnings (zero warnings)
- ✅ cargo fmt --check (compliant)
- ✅ cargo test --workspace (1,081/1,081 passing)
Documentation
New Documentation
docs/19-EVASION-GUIDE.md (1,050+ lines, comprehensive user guide)
-
12 Sections:
- Introduction and overview
- IP fragmentation (-f, --mtu)
- TTL manipulation (--ttl)
- Bad checksums (--badsum)
- Decoy scanning (-D)
- Source port manipulation (-g, deferred)
- Practical examples (15+ scenarios)
- Combined evasion techniques
- Performance analysis
- Troubleshooting (7 scenarios)
- Advanced combinations
- References and links
-
Cross-References:
- ARCHITECTURE.md: System design
- PERFORMANCE-GUIDE.md: Optimization techniques
- NMAP_COMPATIBILITY.md: Feature parity tracking
- 15+ external URLs (Nmap docs, RFCs, security research)
Updated Documentation
CHANGELOG.md:
- Comprehensive Sprint 4.20 section (all 9 phases)
- Phase-by-phase deliverables
- Usage examples
- Performance impact
- Strategic value
README.md:
- Test count updated: 911 → 1,081 tests (+170)
- Sprint 4.20 status: COMPLETE (9/9 phases)
- Version updated: v0.3.8 → v0.3.9
- Latest achievements section updated
CLAUDE.local.md:
- Sprint 4.20 marked COMPLETE
- All 9 phases documented
- Session summary added
- Metrics updated (25 hours, 120 tests, 1,500 lines)
Files Modified
Core Infrastructure (5 files, +418 lines)
crates/prtip-core/src/config.rs(+23 lines)- Added DecoyConfig enum (Random, Manual variants)
- Updated EvasionConfig.decoys type (String → DecoyConfig)
crates/prtip-core/src/lib.rs(+4 lines)- Export DecoyConfig publicly
crates/prtip-cli/src/args.rs(+276 lines)- Added parse_decoy_spec() parser (70 lines)
- Wired parser to Args::to_config()
- Added validation (IP format, count limits, ME positioning)
crates/prtip-cli/src/main.rs(+6 lines)- Import DecoyConfig
crates/prtip-scanner/src/decoy_scanner.rs(+39 lines)- Replaced _config → config (active field)
- Integrated TTL manipulation
- Integrated packet fragmentation
- Integrated bad checksums
Tests (2 files, +306 lines)
crates/prtip-cli/tests/test_cli_args.rs(+169 lines)- 10 decoy CLI integration tests
crates/prtip-cli/tests/test_evasion_combined.rs(+137 lines, NEW)- 6 combined evasion tests
Documentation (3 files, +156 lines)
docs/19-EVASION-GUIDE.md(+10 lines)- Enhanced decoy scanning examples
CHANGELOG.md(+123 lines)- Sprint 4.20 Phases 8-9 sections
README.md(+23 lines)- Test counts, Sprint status, version
Memory Banks (1 file, +53 lines)
CLAUDE.local.md(+53 lines)- Sprint 4.20 completion
- Session summary
- Metrics update
Total: 11 files changed, 802 insertions(+), 61 deletions(-)
Strategic Impact
Nmap Feature Parity Progress
Before Sprint 4.20:
- Scan types...
v0.3.8 - Zero-Copy Performance + Service Detection + CLI Enhancement
ProRT-IP v0.3.8 - Zero-Copy Performance + Service Detection + CLI Enhancement
Release Date: 2025-10-13
Status: Production-Ready (790 tests passing, 61.92% coverage, 8/8 platforms)
Phase: Phase 4 Enhancement Sprints (75% complete: 6/8 sprints done)
🎯 Executive Summary
ProRT-IP v0.3.8 represents a major milestone in Phase 4 development, completing THREE high-impact enhancement sprints that significantly advance the project's competitive position:
- Sprint 4.15: TLS-enabled service detection (50% → 70-80% success rate)
- Sprint 4.16: Git-style help system (50+ nmap-compatible flags)
- Sprint 4.17: Zero-copy packet building (15% performance improvement)
Key Achievements at a Glance
| Metric | Achievement |
|---|---|
| Performance | 15% faster packet crafting (68.3ns → 58.8ns) |
| Allocations | 100% elimination (3-7M/sec → 0) |
| Service Detection | 70-80% success rate (up from 50%) |
| CLI Flags | 50+ nmap-compatible flags (2.5x increase) |
| Help System | <30 seconds feature discovery |
| Tests | 790 passing (197 new tests, zero regressions) |
| Coverage | 61.92% (exceeds 60% target) |
| Documentation | 8,150+ lines comprehensive guides |
Strategic Impact
- Competitive positioning: Closes Masscan performance gap from 27% to 15%
- Feature parity: Service detection now comparable to RustScan/Naabu
- Professional polish: Help system matches Git/Nmap quality standards
- Performance leadership: Memory-safe 1M+ pps capability proven
🚀 What's New
Sprint 4.15: Service Detection Enhancement (TLS Handshake Support)
Duration: 1 day (vs 4-5 estimated, 75% faster)
Priority: HIGH
ROI Score: 9.2/10
TLS Handshake Module (550 lines, 12 tests)
// New module: crates/prtip-scanner/src/tls_handshake.rs
// Integrated rustls for TLS 1.2/1.3 handshake capabilityCapabilities:
- Services supported: HTTPS, SMTPS, IMAPS, POP3S, FTPS, LDAPS
- Certificate parsing: Extract CN, SAN, issuer, expiry for identification
- Smart detection: Auto-detect TLS on 8 common ports (443, 465, 993, 995, 990, 636, 3389, 8443)
- Performance: 100-300ms handshake latency (acceptable overhead)
Detection Rate Improvement:
- Before: ~50% (TLS services failed)
- After: 70-80% (TLS services working)
- Impact: 20-30% more services correctly identified
New CLI Flag:
prtip --no-tls target.com # Disable TLS for faster scansTesting: 12 new unit tests + 5 integration tests, zero regressions
Sprint 4.16: CLI Compatibility & Help System
Duration: <1 day (vs 3-4 estimated, 75% faster)
Priority: HIGH
ROI Score: 8.8/10
Git-Style Multi-Page Help System (2,086 lines)
# New help commands
prtip help # Show category index (9 categories)
prtip help scan-types # Detailed help for scan types
prtip help examples # 23 common scan scenarios9 Help Categories:
scan-types- TCP/UDP scan types (SYN, Connect, stealth, etc.)host-discovery- Host detection methods (ping, ARP, TCP/UDP probes)port-specs- Port specification (ranges, top ports, randomization)timing- Timing templates and rate controlservice-detection- Service/version detection optionsos-detection- Operating system fingerprintingoutput- Output formats (text, JSON, XML, greppable)stealth- Stealth and evasion techniquesmisc- Miscellaneous options
User Experience:
- Feature discovery: <30 seconds to find any feature (validated)
- Professional appearance: Comparable to Git/Nmap help quality
- Self-documenting: No need for external docs for common tasks
50+ Nmap-Compatible Flags (2.5x increase)
Host Discovery (7 flags):
--no-ping # Skip host discovery
--ping-only # Only ping, don't scan
-PR # ARP ping
-PS <ports> # TCP SYN ping
-PA <ports> # TCP ACK ping
-PU <ports> # UDP ping
-PE # ICMP echo ping
-PP # ICMP timestamp pingPort Specification (2 flags):
--top-ports N # Scan N most common ports
-r/--no-randomize # Scan ports in orderTiming (4 flags):
--max-retries N # Max probe attempts
--scan-delay MS # Delay between probes
--min-rate PPS # Minimum packet rate
--max-rate PPS # Maximum packet rateOutput (4 flags):
--open # Show only open ports
--packet-trace # Show packet details
--reason # Show detection reason
--stats-every SEC # Periodic progressMiscellaneous (6 flags):
--version, --iflist, --send-eth, --send-ip, --privileged, --unprivilegedExamples Library: 23 common scan scenarios (fast scan, stealth, service detection, OS fingerprinting, output formats, etc.)
Testing: 38+ new tests (10 help system + 28 CLI flag), zero regressions
Sprint 4.17: Performance I/O Optimization (Zero-Copy Packet Building)
Duration: 15 hours (vs 22-28 estimated, 40% faster)
Priority: HIGH
ROI Score: 8.5/10
Phase 1: Batch I/O Benchmarks & Allocation Audit (3 hours)
Allocation Hot Spot Audit:
- Comprehensive profiling with perf + Valgrind + strace
- Identified 7 critical allocation hot spots consuming 20-40% CPU
- Documentation: 4,200+ line allocation-audit.md
Key Hot Spots:
- TcpPacketBuilder::build() Vec allocation (10-20% CPU)
- UdpPacketBuilder::build() Vec allocation (1-2% CPU)
- TcpOption::to_bytes() allocations (5-10% CPU)
- serialize_options() allocations (2.5-5% CPU)
- Builder new() empty Vec allocations (0.5-1% CPU)
Batch I/O Infrastructure:
- New benchmark: benches/batch_io.rs (313 lines)
- Results: 98.44% syscall reduction with batch size 64
- Deferred: Full batch integration (future sprint)
Phase 2: Zero-Copy Implementation (6 hours)
PacketBuffer Infrastructure (251 lines):
// Thread-local buffer pools (4KB buffers, zero contention)
use prtip_network::packet_buffer::with_buffer;
with_buffer(|pool| {
let packet = TcpPacketBuilder::new()
.source_ip(src_ip)
.dest_ip(dst_ip)
.source_port(src_port)
.dest_port(port)
.flags(TcpFlags::SYN)
.build_ip_packet_with_buffer(pool)?; // Zero-copy!
send_packet(packet)?;
pool.reset(); // Reuse buffer
Ok::<_, Error>(())
})?;Architecture:
- Thread-local storage (zero locks, zero atomics)
- Closure-based API (compile-time lifetime safety)
- Automatic buffer reuse
- 10 unit tests
Zero-Copy APIs:
TcpPacketBuilder::build_with_buffer<'a>(&self, pool: &'a mut PacketBuffer) -> Result<&'a [u8]>UdpPacketBuilder::build_with_buffer<'a>(&self, pool: &'a mut PacketBuffer) -> Result<&'a [u8]>build_ip_packet_with_buffer<'a>(&self, pool: &'a mut PacketBuffer) -> Result<&'a [u8]>
Backwards Compatibility:
- Old
build() -> Vec<u8>API still works (deprecated) - No breaking changes
- Migration optional but recommended
Testing: 14 zero-copy integration tests (399 lines)
Phase 3: Scanner Integration & Validation (6 hours)
SYN Scanner Integration (Proof-of-Concept):
- Modified:
crates/prtip-scanner/src/syn_scanner.rs(+32, -28 lines) - Integrated zero-copy in
send_syn()andsend_rst()methods - Drop-in replacement with minimal code changes
- Zero regressions: All 790 tests passing
Criterion.rs Benchmarks (207 lines):
# Run benchmarks
cargo bench --bench packet_crafting
# 9 benchmarks validating 15% improvementBenchmark Results:
| Metric | Before | After | Improvement |
|---|---|---|---|
| Per-packet time | 68.3 ns | 58.8 ns | 15% faster |
| Allocations/packet | 3-7 | 0 | 100% elimination |
| CPU cycles (1K pkts) | 209K | 180K | 29K saved (14%) |
| Throughput (theoretical) | 14.6M pps | 17.0M pps | +2.4M pps |
Real-World Impact at 1M pps:
- Allocations eliminated: 3-7 million/sec → 0
- Memory pressure: Zero heap fragmentation
- Predictability: Zero allocator contention
- Scalability: Benefits increase at higher packet rates
Flamegraph Infrastructure:
- Scripts:
flamegraph_baseline.sh(60 lines),flamegraph_zerocopy.sh(42 lines) - Ready for CPU profiling and hot spot visualization
Documentation (1,650+ lines):
performance-results.md(470 lines): Benchmark analysisscanner-integration.md(550 lines): Integration patternsflamegraph-analysis.md(280 lines): Profiling guide
Phase 4: Documentation & Release (2-3 hours)
User-Facing Performance Guide:
- New file:
docs/PERFORMANCE-GUIDE.md(~550 lines) - Quick start with performance hierarchy
- Timing templates (-T0 to -T5) by network type
- Scan type selection guide
- Hardware recommendations
- Troubleshooting guide
- Performance FAQ
Technical Documentation:
- Updated:
docs/07-PERFORMANCE.md(+80 lines) - Zero-copy section with usage examples
- Migration guide for remaining scanners
- Benchmark reproduction instructions
Sprint Summary:
- New file:
SPRINT-4.17-COMPLETE.md(~800 lines) - Complete phase-by-phase breakdown
- Comprehensive performance results
- Lessons learned and future work
Total Documentation: 8,150+ lines across 12 documents
📊 Performance Comparison
Packet Crafting Speed
| Tool | Per-Packet Time | Allocations | Notes |
|---|---|---|---|
| Masscan | ~50 ns | Zero-copy (C) | Baseline (unsafe C) |
| ProRT-IP v0.3.8 | 58.8 ns | Zero-copy (Rust) | 15% slower, memory-safe |
| ProRT-IP v0.3.7 | 68.3 ns | 3-7 per packet | Before optimization |
| Nmap | ~200 ns | Allocates | Stateful focus |
| RustScan | ~150 ns | Allocates | Simpler implementation |
Strategic Value:
- Closes gap with Masscan: 27% slower → 15% slower (44% improvement)
- **Maintains Rus...
ProRT-IP WarScan v0.3.7
ProRT-IP v0.3.7 - Testing Infrastructure Complete
Testing infrastructure overhaul with comprehensive coverage, integration tests, and performance optimization.
🎯 Key Highlights
✅ 61.92% Code Coverage - Exceeds 60% industry baseline (+9.86pp from v0.3.6)
✅ 789 Tests - 100% passing (+297 tests, +60% increase)
✅ 67 Integration Tests - Comprehensive CLI testing with privilege awareness
✅ Benchmark Baselines - v0.3.7 baseline (195 files) for regression detection
✅ Performance Optimization - Eliminated unnecessary clone in PortRange::iter()
✅ Production-Ready - Zero known bugs, 100% CI success
📊 Testing Infrastructure
Code Coverage (61.92%)
| Crate | Coverage | Status |
|---|---|---|
| prtip-core | ~65% | ✅ HIGH (critical path) |
| prtip-network | ~55% | ✅ MEDIUM (async I/O) |
| prtip-scanner | ~62% | ✅ HIGH (core scanning) |
| prtip-cli | ~66% | ✅ HIGH (user interface) |
| Overall | 61.92% | ✅ EXCEEDS TARGET |
Coverage System:
- Tool: cargo-tarpaulin with HTML reports
- Workflow:
cd code_cov && cargo tarpaulin --out Html - CI Ready: Lcov output for Codecov/Coveralls integration
Integration Tests (67 tests)
- CLI Argument Parsing: 18 tests (nmap compatibility, privilege-aware)
- Output Formats: 12 tests (JSON, XML, greppable, text)
- Port Parsing: 20 tests (CIDR, ranges, edge cases)
- Scan Types: 17 tests (Connect, SYN, UDP, stealth)
Features:
- Privilege-aware execution (auto-skip root-only tests)
- Shared utilities module (203 lines)
- JSON test fixtures for realistic scenarios
Benchmark Baselines (8 suites)
| Suite | Purpose | Mean Time |
|---|---|---|
| binary_startup | CLI overhead | 2.2ms |
| port_parsing | Parse performance | 1.7ns |
| localhost_scan | Scan execution | 5.3ms |
| output_formats | Output generation | 2.1-5.1ms |
Platform: Intel i9-10850K, 62GB RAM, Linux 6.17.1, Rust 1.90.0
Storage: benchmarks/baselines/v0.3.7/ (195 files, git-tracked)
Usage: cargo bench --bench benchmarks -- --baseline v0.3.7
⚡ Performance Improvements
PortRange::iter() Optimization
Eliminated unnecessary clone operation in hot path (called for every port scan).
Impact:
- 5-10% reduction in port scanning overhead
- Eliminates allocations in critical path
- Zero behavioral changes (purely optimization)
Credit: Devin (Pull Request #1)
📚 Documentation
New Documentation (75KB)
-
Testing Infrastructure Guide (
docs/17-TESTING-INFRASTRUCTURE.md, 45KB)- Complete testing philosophy and coverage strategy
- 8 test categories with examples and rationale
- Running tests: coverage, benchmarks, CI integration
- Writing new tests: templates and best practices
- Future work: async mocking, property testing
-
Efficiency Report (
docs/18-EFFICIENCY_REPORT.md, 8.5KB)- Comprehensive efficiency audit
- 6 optimization opportunities identified
- PortRange::iter() fix (HIGH - FIXED in v0.3.7)
- Future optimization roadmap
-
Benchmark Guide (
benchmarks/baselines/README.md, 22KB)- Complete baseline usage guide
- Platform specifications
- Regression detection workflow
- CI integration plans
📦 Installation
Quick Install
Linux (x86_64):
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.7/prtip-x86_64-unknown-linux-gnu
chmod +x prtip-x86_64-unknown-linux-gnu
sudo mv prtip-x86_64-unknown-linux-gnu /usr/local/bin/prtip
sudo setcap cap_net_raw,cap_net_admin=eip /usr/local/bin/prtipWindows (x86_64):
# Download Npcap first: https://npcap.com/
Invoke-WebRequest -Uri "https://github.com/doublegate/ProRT-IP/releases/download/v0.3.7/prtip-x86_64-pc-windows-msvc.exe" -OutFile "prtip.exe"macOS (Intel):
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.7/prtip-x86_64-apple-darwin
chmod +x prtip-x86_64-apple-darwin
sudo mv prtip-x86_64-apple-darwin /usr/local/bin/prtipmacOS (Apple Silicon):
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.7/prtip-aarch64-apple-darwin
chmod +x prtip-aarch64-apple-darwin
sudo mv prtip-aarch64-apple-darwin /usr/local/bin/prtipBuild from Source
git clone https://github.com/doublegate/ProRT-IP.git
cd ProRT-IP
git checkout v0.3.7
cargo build --release
sudo cp target/release/prtip /usr/local/bin/🖥️ Platform Support
| Platform | Architecture | Status |
|---|---|---|
| Linux (glibc) | x86_64 | ✅ Production |
| Linux (musl) | x86_64 | ✅ Production |
| Windows | x86_64 | ✅ Production |
| macOS (Intel) | x86_64 | ✅ Production |
| macOS (ARM) | ARM64 | ✅ Production |
| FreeBSD | x86_64 | ✅ Production |
| Linux (ARM64) | ARM64 | ✅ Production |
| Linux (ARM64 musl) | ARM64 | ✅ Production |
Platform Coverage: 8 platforms covering ~98% of target user base
📈 Metrics
Test Metrics
| Metric | v0.3.6 | v0.3.7 | Change |
|---|---|---|---|
| Total Tests | 492 | 789 | +297 (+60%) |
| Pass Rate | 100% | 100% | Maintained |
| Integration Tests | 0 | 67 | +67 (NEW) |
| Crate Tests | - | 230 | +230 (NEW) |
| Code Coverage | 52.06% | 61.92% | +9.86pp |
File Changes
- Files Changed: 214 files (+15,770 insertions, -830 deletions)
- New Files: 212 (195 baselines + 14 tests + 3 docs)
- Modified Files: 15 (code + documentation)
🚫 Breaking Changes
None. 100% backward compatible.
All existing scans, scripts, and workflows continue to work without modification.
✅ Testing
All Checks Passing:
- 789/789 tests passing (100%)
- cargo fmt --all (clean)
- cargo clippy --all-targets --all-features (0 warnings)
- cargo build --release (success)
- Code coverage: 61.92% (exceeds 60% target)
- Cross-platform CI: 7/7 jobs passing
Test Coverage:
cd code_cov
cargo tarpaulin --out Html
xdg-open tarpaulin-report.htmlBenchmark Regression:
cargo bench --bench benchmarks -- --baseline v0.3.7🐛 Known Issues
None. v0.3.7 is production-ready with zero known critical bugs.
🗺️ What's Next?
Phase 5 (v0.4.0 - Q1 2026)
High Priority:
- Async Network I/O Mocking - +10-15% coverage (55%→70%+)
- Real Network Scenarios - Production confidence validation
- CI Performance Checks - Automated regression detection
- Coverage Reporting - Codecov/Coveralls integration
- SSL/TLS Handshake - Service detection 50%→80%
- Idle Scanning - Anonymous scanning technique
- Lua Plugin System - Custom service probes
See docs/15-PHASE4-COMPLIANCE.md for full roadmap.
💬 Support
- Documentation: docs/
- Testing Guide: docs/17-TESTING-INFRASTRUCTURE.md
- FAQ: docs/09-FAQ.md
- Issues: GitHub Issues
- Discussions: GitHub Discussions
👥 Contributors
- DoubleGate - Testing infrastructure, coverage improvements
- Claude Code - Comprehensive analysis, documentation
- Devin (PR #1) - PortRange::iter() optimization
Special thanks: cargo-tarpaulin, Criterion.rs, hyperfine, perf, flamegraph, valgrind
📋 Full Changelog
Commits: aa27271...a6a36f1 (7 commits)
See CHANGELOG.md for complete details.
Recommended Upgrade: ✅ Yes - Enhanced testing infrastructure, performance improvements, production-ready quality assurance
License: GPL-3.0
ProRT-IP WarScan v0.3.6
ProRT-IP v0.3.6 - Performance Regression Fix
Type: Patch Release (Performance Fix)
Date: 2025-10-12
Status: Production-Ready ✅
Summary
v0.3.6 resolves a 29% performance regression inadvertently introduced in v0.3.5. Through comprehensive profiling with hyperfine, perf, flamegraph, valgrind, and strace, we identified and eliminated three bottlenecks: debug instrumentation, aggressive polling, and unnecessary preprocessing overhead.
Result: 4.6% faster than v0.3.5 baseline + 3x more stable results.
Key Highlights
✅ 4.6% Performance Improvement - 1K port scans: 6.5ms → 6.2ms
✅ 3x More Stable - Result variance reduced: 0.9ms → 0.3ms stddev
✅ Zero Regressions - All 492 tests passing, zero clippy warnings
✅ 100% Platform Support - 8/8 architectures building successfully
✅ Comprehensive Tooling - 34 files of benchmarking suite (560KB)
Performance Metrics
Before/After Comparison
| Metric | v0.3.5 Baseline | v0.3.6 | Improvement |
|---|---|---|---|
| Mean Time | 6.5ms | 6.2ms | 4.6% faster |
| Std Deviation | 0.9ms | 0.3ms | 3x more stable |
| Range | 5.8-8.4ms | 5.9-6.7ms | Tighter spread |
Benchmark Command
# Test on your system
hyperfine -w 3 -r 20 'prtip -sT -p 1-1000 127.0.0.1'Root Causes Fixed
1. Debug Instrumentation (70% of regression)
- Issue: 19
eprintln!("[TIMING] ...")statements left in production code - Impact: TTY flushing overhead on every port completion
- Fix: Removed all debug statements from scheduler.rs
2. Aggressive Polling (20% of regression)
- Issue: Progress bar polling every 200µs for small scans
- Impact: 5,000 wakeups/second unnecessary for 40-50ms scans
- Fix: Optimized intervals (200µs → 1ms for <1K ports, 5x reduction)
3. CLI Preprocessing (10% of regression)
- Issue: Nmap compatibility layer running even for native syntax
- Impact: 40-50µs overhead per invocation
- Fix: Added fast path detection to skip unnecessary preprocessing
Investigation Tools
Comprehensive 5-tool profiling suite:
- hyperfine - Statistical benchmarking (20+ runs)
- perf stat - CPU performance counters
- perf record + flamegraph - Call stack visualization
- valgrind --tool=massif - Memory allocation profiling
- strace - Syscall tracing
Deliverables: 34 benchmark files (560KB) in benchmarks/02-Phase4_Final-Bench/
Platform Support
All 8 Architectures Building Successfully ✅
| Platform | Target Triple | Use Cases by Platform | Archive | Download |
|---|---|---|---|---|
| Linux x86_64 (glibc) | x86_64-unknown-linux-gnu | Ubuntu, Debian, Fedora, RHEL, CentOS | tar.gz | prtip-0.3.6-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) ✅ FIXED | x86_64-unknown-linux-musl | 🆕 Alpine Linux, Docker/containers, static linking | tar.gz | prtip-0.3.6-x86_64-unknown-linux-musl.tar.gz |
| Linux ARM64 (glibc) ✅ FIXED | aarch64-unknown-linux-gnu | 🆕 Raspberry Pi 4/5, ARM64 servers, AWS Graviton | tar.gz | prtip-0.3.6-aarch64-unknown-linux-gnu.tar.gz |
| Linux ARM64 (musl) ✅ FIXED | aarch64-unknown-linux-musl | 🆕 ARM64 Alpine, static ARM builds, embedded systems | tar.gz | prtip-0.3.6-aarch64-unknown-linux-musl.tar.gz |
| Windows x86_64 | x86_64-pc-windows-msvc | Windows 10/11 (Requires Npcap) | zip | prtip-0.3.6-x86_64-pc-windows-msvc.zip |
| macOS Intel | x86_64-apple-darwin | Intel-based Macs (macOS 11+) | tar.gz | prtip-0.3.6-x86_64-apple-darwin.tar.gz |
| macOS Apple Silicon | aarch64-apple-darwin | M1/M2/M3/M4 Macs (macOS 11+) | tar.gz | prtip-0.3.6-aarch64-apple-darwin.tar.gz |
| FreeBSD x86_64 | x86_64-unknown-freebsd | FreeBSD 12+, pfSense, OPNsense | tar.gz | prtip-0.3.6-x86_64-unknown-freebsd.tar.gz |
✅ FIXED Platforms: musl libc ioctl type mismatch and ARM64 OpenSSL cross-compilation issues resolved in this release.
Installation
Quick Install (Linux)
# Download pre-built binary
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.6/prtip-x86_64-unknown-linux-gnu
chmod +x prtip-x86_64-unknown-linux-gnu
sudo mv prtip-x86_64-unknown-linux-gnu /usr/local/bin/prtip
# Verify installation
prtip --versionBuild from Source
git clone https://github.com/doublegate/ProRT-IP.git
cd ProRT-IP
git checkout v0.3.6
cargo build --release
sudo cp target/release/prtip /usr/local/bin/Requirements:
- Rust 1.85+
- libpcap (Linux/macOS) or Npcap (Windows)
- OpenSSL development libraries
See docs/03-DEV-SETUP.md for detailed setup instructions.
Breaking Changes
None. This is a pure performance fix with 100% backward compatibility.
All existing scans, scripts, and workflows continue to work without modification.
Testing
Comprehensive Validation
# Test Suite
cargo test --workspace
# Result: 492/492 tests passing (100%)
# Code Quality
cargo fmt --all --check # ✓ Clean
cargo clippy --all-targets --all-features -- -D warnings # ✓ Zero warnings
cargo build --release # ✓ Clean (35.5s)Regression Testing
All scenarios validated with zero regressions:
- 1K/10K/65K port scans
- Network scans (multiple hosts)
- Service detection (
--sV) - OS fingerprinting (
-O) - All scan types (Connect, SYN, UDP, stealth)
- All output formats (text, JSON, XML, greppable)
Documentation
New Documents
- RELEASE-NOTES-v0.3.6.md - Complete technical release notes
- docs/16-REGRESSION-FIX-STRATEGY.md - Root cause analysis (18KB)
- benchmarks/02-Phase4_Final-Bench/ - Comprehensive benchmarking suite (34 files, 560KB)
Updated Documents
- CHANGELOG.md - v0.3.6 entry added
- README.md - Performance metrics updated
- CLAUDE.local.md - Session summary
Known Issues
None. v0.3.6 is production-ready with zero known critical bugs.
For bug reports, see: https://github.com/doublegate/ProRT-IP/issues
What's Next?
Phase 5 Planning (v0.4.0)
High Priority:
- SSL/TLS Handshake - Improve service detection 50% → 80%
- Idle Scanning - Anonymous scanning via IP ID exploitation
- Lua Plugin System - Custom service probes with mlua
Timeline: v0.4.0 planned for Q1 2026
See docs/15-PHASE4-COMPLIANCE.md for complete Phase 5 roadmap.
Support
- Documentation: docs/
- FAQ: docs/09-FAQ.md
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Contributors
- DoubleGate - Performance investigation, fixes, benchmarking suite
- Claude Code - Comprehensive analysis, documentation, verification
Special thanks to the Rust community for excellent profiling tools:
hyperfine, perf, flamegraph, valgrind, strace
Full Changelog
See CHANGELOG.md for complete version history.
Commits: bf246a0...762a07e (3 commits)
- bf246a0 - fix(performance): Remove debug instrumentation and optimize polling (v0.3.6)
- 762a07e - docs: Comprehensive documentation audit and Phase 4 compliance review
- c45f647 - fix(release): Resolve musl ioctl type mismatch and ARM64 OpenSSL cross-compilation
Recommended Upgrade: Yes - All users should upgrade for improved performance and stability.
License: GPL-3.0 - See LICENSE for details.
v0.3.5 - Nmap CLI Compatibility
ProRT-IP WarScan v0.3.5 - Nmap Compatibility Release
✨ UPDATE (2025-10-12): All 8 Architectures Now Available!
Great news! The v0.3.5 release now includes binaries for all 8 target architectures (100% platform coverage). Three previously failing builds have been fixed:
🆕 Newly Available (Fixed 2025-10-12):
- ✅ x86_64-unknown-linux-musl (5.4 MB) - Alpine Linux, static builds, containers
- ✅ aarch64-unknown-linux-gnu (5.4 MB) - ARM64 servers, Raspberry Pi 4/5
- ✅ aarch64-unknown-linux-musl (5.3 MB) - ARM64 Alpine, static ARM builds
What was fixed:
- musl libc compatibility: Fixed ioctl type mismatch (c_int vs c_ulong)
- ARM64 cross-compilation: Added vendored OpenSSL for static linking
- Impact: +30-40% potential user base, full ARM64 and Alpine Linux support
📦 Download Binaries (All 8 Platforms)
Click to download for your platform:
| Platform | Architecture | Size | Download Link |
|---|---|---|---|
| Linux | x86_64 (glibc) | 3.3 MB | ⬇️ Download |
| Linux | x86_64 (musl) | 5.4 MB | ⬇️ Download 🆕 |
| Linux | aarch64 (glibc) | 5.4 MB | ⬇️ Download 🆕 |
| Linux | aarch64 (musl) | 5.3 MB | ⬇️ Download 🆕 |
| Windows | x86_64 (MSVC) | 3.0 MB | ⬇️ Download |
| macOS | x86_64 (Intel) | 3.1 MB | ⬇️ Download |
| macOS | aarch64 (Apple Silicon) | 2.9 MB | ⬇️ Download |
| FreeBSD | x86_64 | 3.3 MB | ⬇️ Download |
Use Cases by Platform:
- x86_64 glibc: Ubuntu, Debian, Fedora, RHEL, CentOS
- x86_64 musl: 🆕 Alpine Linux, Docker/containers, static linking
- aarch64 glibc: 🆕 Raspberry Pi 4/5, ARM64 servers, AWS Graviton
- aarch64 musl: 🆕 ARM64 Alpine, static ARM builds, embedded systems
- Windows: Windows 10/11 (Requires Npcap)
- macOS Intel: Intel-based Macs (macOS 11+)
- macOS ARM: M1/M2/M3/M4 Macs (macOS 11+)
- FreeBSD: FreeBSD 12+, pfSense, OPNsense
🚀 Major Features
Nmap CLI Compatibility (NEW in v0.3.5)
- 20+ nmap-compatible flags: Drop-in syntax for familiar nmap users
- Scan types:
-sS,-sT,-sU,-sN,-sF,-sX,-sA(nmap standard) - Port specification:
-p,-F(fast mode),--top-ports <n>,-p-(all ports) - Output formats:
-oN(normal),-oX(XML),-oG(greppable),-oA(all formats) - Detection modes:
-sV(service),-O(OS),-A(aggressive) - Convenience flags:
-Pn(skip ping),-v/-vv/-vvv(verbosity levels) - 100% backward compatible: All existing ProRT-IP flags still work
- Mix and match: Use nmap and ProRT-IP syntax together freely
Enhanced CLI Help System (NEW in v0.3.5)
- Rich header: Performance stats (3-48x faster than nmap) and nmap compatibility badge
- 10+ usage examples: Comprehensive patterns showcasing nmap syntax
- COMPATIBILITY section: Clear guidance on mixing nmap/ProRT-IP syntax
- PERFORMANCE section: Concrete benchmarks against nmap
- DOCUMENTATION section: Direct links to comprehensive guides
- Logical organization: FLAGS grouped by category (SCAN TYPES, PORT SPECIFICATION, OUTPUT, DETECTION)
New Components (v0.3.5)
- Top ports database: nmap-services frequency data (top 100 and 1000 most common ports)
- Greppable output format: nmap-compatible
-oGformat for automated parsing - Argv preprocessor: Transparent nmap flag translation (
-sS→ internal representation) - Integration test suite: 25 automated nmap compatibility tests (
scripts/test-nmap-compat.sh)
Core Features (Maintained from v0.3.0)
- 7 scan types: TCP Connect, SYN, UDP, FIN, NULL, Xmas, ACK
- Protocol payloads: 8 protocol-specific UDP payloads (DNS, NTP, NetBIOS, SNMP, RPC, IKE, SSDP, mDNS)
- Timing templates: T0-T5 (Paranoid to Insane) with RTT estimation
- OS fingerprinting: 16-probe sequence with 2,600+ fingerprint database
- Service detection: nmap-service-probes format with 500+ probes
- Banner grabbing: 6 protocols + TLS support
- Batch packet sending: sendmmsg syscall (30-50% performance boost)
- Adaptive rate limiting: Masscan-inspired with dynamic batching
- Decoy scanning: Up to 256 decoys for stealth
- CDN/WAF detection: 8 major providers with O(log n) lookup
- Professional CLI: Cyber-punk ASCII banner with progress tracking
📊 Statistics
- Tests: 677 (100% pass rate, +34 new nmap compatibility tests)
- Code: 12,000+ lines across 4 crates (40+ modules)
- Nmap flags: 20+ supported (core compatibility achieved)
- Documentation: 19KB comprehensive nmap compatibility guide
- Performance: 3-48x faster than nmap (maintained, zero performance impact)
- Platforms: 8 architectures (Linux x86/ARM glibc/musl, Windows, macOS Intel/ARM, FreeBSD)
- MSRV: Rust 1.70+
🆕 What's New in v0.3.5
1. Nmap-Compatible CLI Flags (20+ flags)
- Scan type aliases:
-sS,-sT,-sU,-sN,-sF,-sX,-sA - Port convenience:
-F(fast, top 100),--top-ports <n>,-p-(all 65535) - Output aliases:
-oN,-oX,-oG,-oA - Detection shortcuts:
-sV,-O,-A(aggressive mode) - Mode flags:
-Pn(skip ping),-v/-vv/-vvv(verbosity) - Implementation: Argv preprocessor translates nmap flags transparently
- Location:
crates/prtip-cli/src/main.rs(236 lines preprocessor)
2. Top Ports Database (nmap-services frequency)
- TOP_100_PORTS: Most common 100 ports for fast scanning (
-F) - TOP_1000_PORTS: nmap-style top 1000 for
--top-ports 1000 - Frequency-based: Ordered by nmap-services scan frequency data
- Implementation:
crates/prtip-core/src/top_ports.rs(276 lines) - Tests: 11 comprehensive tests for port retrieval and validation
3. Greppable Output Format (-oG)
- Nmap-compatible:
Host:andPorts:line format for grep/awk parsing - Automated parsing: Machine-readable for scripts and pipelines
- Implementation:
OutputFormat::GreppablewithGreppableFormatter - Location:
crates/prtip-cli/src/output.rs(133 lines) - Tests: 5 format tests covering edge cases
4. Enhanced CLI Help System
- Rich header: Emojis, performance stats, nmap compatibility badge
- Examples section: 10+ comprehensive usage patterns (all nmap syntax)
- COMPATIBILITY: Guidance on mixing nmap/ProRT-IP syntax freely
- PERFORMANCE: Concrete benchmarks (3-48x faster than nmap)
- DOCUMENTATION: Links to comprehensive guides (README, compatibility, API)
- Implementation: Enhanced clap attributes in
crates/prtip-cli/src/args.rs - Organization: Logical
help_headinggroups (SCAN TYPES, PORT SPECIFICATION, OUTPUT, DETECTION)
5. Cross-Platform Fixes (Post-Release)
- musl libc compatibility: Fixed ioctl type mismatch for x86_64/aarch64 musl targets
- ARM64 cross-compilation: Added vendored OpenSSL for static linking
- Platform coverage: 5/8 → 8/8 architectures (100% complete)
📈 Performance Comparison
ProRT-IP v0.3.5 vs Nmap 7.94:
| Operation | Nmap | ProRT-IP | Speedup |
|---|---|---|---|
| Port scan (100 ports, local) | 1.8s | 42ms | 43x faster |
| Port scan (1000 ports, local) | 3.2s | 66ms | 48x faster |
| Port scan (all 65535, local) | 18m 23s | 3m 47s | 4.9x faster |
| Service detection (10 services) | 8.1s | 2.3s | 3.5x faster |
| OS fingerprinting | 5.4s | 1.8s | 3x faster |
| Aggressive scan (-A) | 22.7s | 6.9s | 3.3x faster |
Test Environment:
- System: Linux 5.15, AMD Ryzen 9 5950X, 32GB RAM
- Network: Local network (1Gbps), minimal latency
- Target: Test VM running common services
Why ProRT-IP is Faster:
- Async Runtime: Tokio provides efficient concurrent I/O (vs nmap's event-driven C)
- Adaptive Parallelism: Dynamically adjusts concurrency based on network conditions
- Zero-Copy: Rust ownership enables zero-copy packet handling
- Modern Syscalls: Uses io_uring on Linux 5.1+ (vs select/poll)
- sendmmsg batching: 30-50% improvement at 1M+ pps
📥 Installation
Quick Install (Linux x86_64 glibc)
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.5/prtip-0.3.5-x86_64-unknown-linux-gnu.tar.gz
tar xzf prtip-0.3.5-x86_64-unknown-linux-gnu.tar.gz
sudo mv prtip /usr/local/bin/
chmod +x /usr/local/bin/prtip
prtip --helpLinux (x86_64 musl) - Alpine, Containers 🆕
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.5/prtip-0.3.5-x86_64-unknown-linux-musl.tar.gz
tar xzf prtip-0.3.5-x86_64-unknown-linux-musl.tar.gz
sudo mv prtip /usr/local/bin/
chmod +x /usr/local/bin/prtip
prtip --helpLinux (ARM64 glibc) - Raspberry Pi, ARM Servers 🆕
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.5/prtip-0.3.5-aarch64-unknown-linux-gnu.tar.gz
tar xzf prtip-0.3.5-aarch64-unknown-linux-gnu.tar.gz
sudo mv prtip /usr/local/bin/
chmod +x /usr/local/bin/prtip
prtip --helpLinux (ARM64 musl) - ARM Alpine, Static Builds 🆕
wget https://github.com/doublegate/ProRT-IP/releases/...ProRT-IP WarScan v0.3.0 - Production Release
ProRT-IP WarScan v0.3.0 - Production Release
🚀 Major Features
Scanning Capabilities
- 7 scan types: TCP Connect, SYN, UDP, FIN, NULL, Xmas, ACK
- Protocol payloads: 8 protocol-specific UDP payloads (DNS, NTP, NetBIOS, SNMP, RPC, IKE, SSDP, mDNS)
- Timing templates: T0-T5 (Paranoid to Insane) with RTT estimation
Detection Systems
- OS fingerprinting: 16-probe sequence (6 TCP SYN, 2 ICMP, 1 ECN, 6 unusual TCP, 1 UDP)
- Service detection: nmap-service-probes format with 500+ probes
- Banner grabbing: 6 protocols + TLS support (HTTP, HTTPS, FTP, SSH, SMTP, DNS, SNMP)
Performance & Stealth
- Batch packet sending: sendmmsg syscall (30-50% improvement at 1M+ pps)
- Adaptive rate limiting: Masscan-inspired circular buffer with dynamic batching
- Connection pooling: RustScan pattern with FuturesUnordered
- Decoy scanning: Up to 256 decoys for stealth attribution hiding
- CDN/WAF detection: 8 major providers with O(log n) lookup
Infrastructure
- Network interface detection: Automatic routing and source IP selection
- Resource management: ulimit detection and batch size optimization
- Privilege management: Immediate drop after socket creation
- Cross-platform: Linux/Windows/macOS/FreeBSD support
- CI/CD: GitHub Actions with multi-platform testing and automated releases
User Experience
- Professional CLI: Cyber-punk ASCII banner with gradient colors
- Progress tracking: Real-time statistics with ETA estimation
- Error categorization: 7 categories with actionable suggestions
- Multiple output formats: JSON, XML, Text, SQLite
📊 Statistics
- Tests: 551 (100% pass rate)
- Code: 10,000+ lines across 4 crates (40+ modules)
- Dependencies: Production-ready with security audits passing
- Platforms: Linux, Windows, macOS, FreeBSD
- MSRV: Rust 1.70+
🆕 What's New in v0.3.0
Quality Improvements
- Fixed 4 previously ignored doc-tests (now 551 tests total, 100% passing)
- Zero clippy warnings (strict -D warnings mode)
- Self-contained doc-test examples requiring no external files
- Production-ready code snippets in all module documentation
CI/CD Infrastructure
- 5 GitHub Actions workflows for automated testing and releases
- Multi-platform CI: Linux, Windows, macOS with 3-tier cargo caching
- Security scanning: CodeQL, dependency review, cargo audit
- Automated releases: Multi-platform binary builds on git tags
- MSRV verification: Rust 1.70+ enforced in pipeline
Enhancement Cycle 8
-
Batch Packet Sending (sendmmsg)
- Linux kernel syscall batching for 30-50% performance boost
- Cross-platform fallback support
- 656 lines of optimized code
-
CDN/WAF Detection
- 8 major providers: Cloudflare, Akamai, Fastly, CloudFront, Google Cloud, Azure, Imperva, Sucuri
- O(log n) binary search on sorted CIDR ranges
- 455 lines of detection logic
-
Decoy Scanning
- Up to 256 decoys for stealth
- Fisher-Yates shuffle for randomization
- Reserved IP avoidance (RFC 1918, multicast, etc.)
- 505 lines of stealth implementation
📥 Installation
Available Platforms (5 Architectures)
Pre-built binaries are available for the following platforms:
| Platform | Architecture | File | Notes |
|---|---|---|---|
| Linux | x86_64 (glibc) | prtip-0.3.0-x86_64-unknown-linux-gnu.tar.gz |
Ubuntu, Debian, Fedora, RHEL, etc. |
| Windows | x86_64 (Intel/AMD) | prtip-0.3.0-x86_64-pc-windows-msvc.zip |
Windows 10/11 (Requires Npcap) |
| macOS | x86_64 (Intel) | prtip-0.3.0-x86_64-apple-darwin.tar.gz |
Intel-based Macs (macOS 11+) |
| macOS | aarch64 (Apple Silicon) | prtip-0.3.0-aarch64-apple-darwin.tar.gz |
M1/M2/M3/M4 Macs (macOS 11+) |
| FreeBSD | x86_64 | prtip-0.3.0-x86_64-unknown-freebsd.tar.gz |
FreeBSD 12+, pfSense, OPNsense |
Linux (x86_64)
# Download
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.0/prtip-0.3.0-x86_64-unknown-linux-gnu.tar.gz
# Extract
tar xzf prtip-0.3.0-x86_64-unknown-linux-gnu.tar.gz
# Install (optional)
sudo mv prtip /usr/local/bin/
chmod +x /usr/local/bin/prtip
# Run
prtip --helpWindows (x86_64)
# Download
curl -L -o prtip-0.3.0-x86_64-pc-windows-msvc.zip https://github.com/doublegate/ProRT-IP/releases/download/v0.3.0/prtip-0.3.0-x86_64-pc-windows-msvc.zip
# Extract
Expand-Archive prtip-0.3.0-x86_64-pc-windows-msvc.zip
# Install Npcap (required for packet capture)
# Download from: https://npcap.com/
# Run
.\prtip.exe --helpmacOS (Intel x86_64)
# Download
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.0/prtip-0.3.0-x86_64-apple-darwin.tar.gz
# Extract
tar xzf prtip-0.3.0-x86_64-apple-darwin.tar.gz
# Install (optional)
sudo mv prtip /usr/local/bin/
chmod +x /usr/local/bin/prtip
# Run with elevated privileges (required for raw sockets)
sudo prtip --helpmacOS (Apple Silicon M1/M2/M3/M4)
# Download
wget https://github.com/doublegate/ProRT-IP/releases/download/v0.3.0/prtip-0.3.0-aarch64-apple-darwin.tar.gz
# Extract
tar xzf prtip-0.3.0-aarch64-apple-darwin.tar.gz
# Install (optional)
sudo mv prtip /usr/local/bin/
chmod +x /usr/local/bin/prtip
# Run with elevated privileges (required for raw sockets)
sudo prtip --helpFreeBSD (x86_64)
# Download
fetch https://github.com/doublegate/ProRT-IP/releases/download/v0.3.0/prtip-0.3.0-x86_64-unknown-freebsd.tar.gz
# Extract
tar xzf prtip-0.3.0-x86_64-unknown-freebsd.tar.gz
# Install (optional)
sudo mv prtip /usr/local/bin/
chmod +x /usr/local/bin/prtip
# Run with elevated privileges (required for raw sockets)
sudo prtip --helpBuild from Source (All Platforms)
# Clone repository
git clone https://github.com/doublegate/ProRT-IP.git
cd ProRT-IP
git checkout v0.3.0
# Build release binary
cargo build --release
# Binary location
./target/release/prtip --helpRequirements:
- Rust 1.70+ (install via rustup)
- libpcap development headers (Linux:
libpcap-dev, macOS: included, Windows: Npcap SDK) - pkg-config (Linux:
pkg-config, macOS:pkgconf)
🔧 Usage Examples
Basic SYN Scan
prtip -sS -p 1-1000 192.168.1.0/24OS Detection + Service Detection
prtip -sS -O -sV -p 1-1000 10.0.0.1Stealth Scan with Decoys
prtip -sF -D RND:10 -p 80,443 target.comFast Scan with Progress
prtip -T4 -p- --progress 192.168.1.1Full Port Range Scan (All 65,535 ports)
prtip -sS -p- scanme.nmap.org📚 Documentation
🔒 Security
This is a security research tool intended for:
- Penetration testing
- Network security auditing
- Educational purposes
- Red team operations
Always obtain proper authorization before scanning networks.
See SECURITY.md for responsible use guidelines.
📝 Full Changelog
See CHANGELOG.md for complete version history.
🤝 Contributing
Contributions welcome! See CONTRIBUTING.md for guidelines.
All pull requests must pass:
- Format check (cargo fmt)
- Linting (cargo clippy)
- Tests on Linux, Windows, macOS
- Security audit (cargo audit)
- MSRV check (Rust 1.70+)
📄 License
GPL-3.0 - See LICENSE
Repository: https://github.com/doublegate/ProRT-IP
CI/CD: GitHub Actions
Issues: https://github.com/doublegate/ProRT-IP/issues
Discussions: https://github.com/doublegate/ProRT-IP/discussions
🤖 Built with GitHub Actions