NetProbe is a tool designed for network probing, parallel transmission, and collection of ICMP packets on the Linux platform.
To install and compile the project, follow the steps below:
- Install the required dependencies:
sudo apt update sudo apt install qt5-qmake qtbase5-dev
- Compile the project:
qmake ping_program.pro make
This project utilizes the MLSgen tool for generating Maximum Length Sequences (MLS). For more details on its implementation and usage, please refer to the MLSgen repository.
NetProbe is designed for network probing and key generation, where both the probe transmitter and receiver are integrated into a single unit. It allows the sending of ICMP echo requests and collection of round-trip time (RTT) data for key agreement processes.
sudo ./ping_program <Target IP> <Probe Sequence Length> <Packet Frequency> <Mode 1=Input Signal 2=Random MLS Generation> <Signal File Source> <Host Identifier> --active|--listen- <Target IP>: IP address of the target host.
- <Probe Sequence Length>: Total number of ICMP echo requests to send.
- <Sequence Probe Length>: Frequency of packet sending, in packets per second.
- <Mode>:
1: Input signal file.2: Randomly generate MLS signal.
- <Signal File Source>:
- Mode 1: Provide the path to the signal file, where each line contains a binary value (1 or 0).This mode is specifically designed to facilitate debugging, allowing the use of predefined signal files for controlled testing and reproducibility of experiments.
- Note: Total packet count must be less than or equal to the number of lines in the signal file. If the packet count exceeds the file length, it may cause issues.
- Mode 2: Provide a string in the format
n{nbits}s{initseed}.nbits: Defines the bit length of the signal sequence, with the sequence length being.
initseed: The initial seed for the MLS sequence generation. The same seed will generate the same signal sequence.- Example:
n10s12, which generates a signal sequence of length 1023 with an initial seed of 12 (should not exceed).
- In this mode, the should match the length of the generated signal.
- Mode 1: Provide the path to the signal file, where each line contains a binary value (1 or 0).This mode is specifically designed to facilitate debugging, allowing the use of predefined signal files for controlled testing and reproducibility of experiments.
- <Host Identifier>: Identifier for the host, used to distinguish different devices.
- --active:Active mode. Sends ICMP requests and records data.
- --listen:Listen mode. Responds to incoming ICMP requests from other hosts.
-
Copy NetProbe to Alice and Bob's machines
Transfer NetProbe to both Alice and Bob's machines to set up the experiment environment.
-
Compile the code on Alice and Bob's machines
Follow the compilation instructions to compile the source code on both machines.
-
Run the experiment on Alice and Bob
Bob (Listener) IP:
10.9.130.72- Using a predefined signal file:
sudo ./ping_program 10.9.130.122 100 1000 1 setup/signals/signal1.txt B --listen
- Using an MLS-generated signal (alternative to the above):
sudo ./ping_program 10.9.130.122 1023 1000 2 n10s12 B --listen
Alice (Active Prober) IP:
10.9.130.122- Using a predefined signal file:
sudo ./ping_program 10.9.130.72 100 1000 1 setup/signals/signal1.txt A --active
- Using an MLS-generated signal (alternative to the above):
sudo ./ping_program 10.9.130.72 1023 1000 2 n10s12 A --active
-
Data Collection
The experiment results will be stored in the
/datadirectory. Each experiment dataset is saved in a folder named in the format:{experiment_sequence}_{packet_count}_{signal_file}_{probe_frequency}_{host_label} -
Frequency Analysis & Key Generation
The collected RTT measurements will be used for frequency domain analysis to extract spectral features and perform key generation.
This project is licensed under the MIT License - see the LICENSE.txt file for details