A zero external dependency Windows-based UDP Network Capturer built in C++11 that captures UDP packets from specific source and destination IPs and ports, with a user-friendly GUI for configuration and recording.
With the capability of writing multiple MBs under a second, this project can work with high-speed UDP networks. It is ideal for high traffic network monitoring scenarios.
-
UDP packet capture for up to 4 ports simultaneously.
-
Dual-port listening – when you enter ports (e.g., 5555 and 6666), the application also listens on their immediate next ports (5556 and 6667). This allows capturing paired UDP streams commonly used in network protocols.
-
Graphical user interface (GUI) with 3 scenes:
- Configuration Scene – enter source/destination IPs and ports.
- Test Scene – test UDP connectivity and port availability before recording.
- Recording Scene – capture UDP packets and save them to a chosen folder.
-
Buffered file writing for efficient storage of high-volume UDP traffic.
-
Threaded listeners to record multiple streams concurrently.
-
Automatic Ethernet IP detection for quick destination IP suggestions.
-
Input validation to prevent invalid IPs or ports.
Home screen:
Test results for each port:
While capturing:
- Windows 10/11
- Visual Studio or any C++ compiler supporting C++11
- Windows SDK
- Winsock2 library (
ws2_32.lib) - IP Helper API (
iphlpapi.lib)
You can either download the latest release or build from source.
Head over to the Releases page and grab the latest prebuilt executable. No setup needed — just download and run!
If you prefer to build it yourself:
1 - Clone the repository git clone https://github.com/your-username/your-repo.git cd your-repo
2 - Create a build directory mkdir build && cd build
3 - Run CMake and build cmake .. cmake --build . --config Release
The compiled executable will be located in:
build/Release/
Run it from there, or move it somewhere more convenient.
-
Scene 1 – Configuration:
- Enter the UDP source IP, destination IP and ports.
Note: For each port you enter, the application also checks and records traffic on the next sequential port (e.g., entering 5555 will also include 5556).
- Click Test Connections to validate inputs and check port availability.
- Enter the UDP source IP, destination IP and ports.
-
Scene 2 – Test:
- The application performs UDP port tests and displays results.
- If tests fail, you can either Go Back to correct inputs or Start Capturing Anyway.
-
Scene 3 – Recording:
- Choose an output folder for storing captured files.
- The application starts recording UDP packets in binary format, buffering for efficiency.
- Click Stop Capturing to end the recording session.
- Files are stored in the selected folder with the naming convention:
<PortName>_YYYY_MM_DD_HH_MM.bin
Example:
Port1_2025_08_27_16_30.bin
WinMain– Initializes WinSock, creates the main window, and runs the message loop.WindowProc– Handles GUI events and scene switching.udpListener– Threaded function to capture UDP packets and write to binary files.testUdpCommunication– Tests UDP connectivity and port collisions.findEthernetAddress– Detects the Ethernet IP address of the host machine.ChooseOutputFolder– Opens a folder picker dialog for selecting output location.- GUI scenes managed via
ShowScene1,ShowScene2,ShowScene3.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/YourFeature. - Commit your changes:
git commit -m "Add your feature". - Push to the branch:
git push origin feature/YourFeature. - Open a pull request.
This project is licensed under the MIT License – see the LICENSE file for details.