burstkernel is a lightweight microkernel designed for the NATGhost project. Its sole purpose is to automatically send high-speed UDP bursts during system boot, without requiring any user interaction. This kernel is optimized for NAT traversal experiments and high-throughput packet injection.
- Automatically launches on boot and sends UDP bursts.
- Scans PCI to detect the network interface (e.g., Intel E1000).
- Uses MMIO to directly control the NIC without an operating system.
- Sends UDP packets to a predefined target IP and port range.
- Ideal for NAT hole punching and symmetric NAT testing scenarios.
- Designed to run in thousands of parallel VMs with minimal overhead.
βββ boot/ β βββ boot.S # Multiboot-compliant bootloader stub βββ kernel/ β βββ kernel.c # Main kernel logic and entry point β βββ pci.c # PCI scanner to locate the NIC β βββ e1000.c # MMIO-based Intel E1000 NIC driver β βββ burst.c # High-speed UDP packet blaster β βββ config.h # Compile-time configuration (target IP/port) βββ build/ # Compiled object files βββ Makefile # Build instructions βββ README.md # Project documentation
π§ͺ Testing with QEMU
qemu-system-i386 -cdrom kernel.iso -nographic Or, to simulate a real NIC environment: qemu-system-i386 -cdrom kernel.iso -device e1000 -netdev user,id=n1 -device e1000,netdev=n1
Testing with VirtualBox Create a new VM (32-bit, 64MB RAM is enough).
Set Network Adapter to Bridged Adapter or Host-only Adapter.
Attach kernel.iso to the virtual CD/DVD drive.
Boot the machine β packet blasting starts immediately.
Configuration #define TARGET_IP 0xC0A80001 // 192.168.0.1 #define START_PORT 10000 #define END_PORT 20000
Then rebuild: make clean && make all
Advanced Usage This project is part of the NATGhost framework, which aims to: Dynamically test NAT traversal capabilities. Analyze port allocation randomness. Perform coordinated bursts across thousands of VMs.