This project is a final assignment for ECS 132: Probability and Statistical Modeling for Computer Science. It demonstrates an algorithm for working with hidden messages, likely involving steganography or cryptography, using principles of statistical analysis.
The project explores how secret information can be embedded in traffic timing and then analyzed through simulation and probability-based reasoning. The notebook contains the main write-up, experiments, and figures, while the Python script in the project files folder provides a simpler command-line simulation of the core buffer behavior.
The main code is in the ECS132_Project_Spring_2025.ipynb notebook. To run this project, you will need a Python environment with Jupyter Notebook and other relevant scientific computing libraries installed.
If you want to work from the notebook, open it in Jupyter or VS Code and run the cells from top to bottom. If you want a quick terminal-based test of the simulation logic, you can run Project FIles/real_implementation_code.py with Python and provide the requested values for distribution, secret message length, and initial buffer size.
Recommended Python packages include:
numpymatplotlibpandasjupyter
Depending on your environment, you may already have most of these installed. The notebook may require additional scientific libraries if you want to reproduce every plot exactly as shown.
At a high level, the project models a sender and receiver system where hidden bits are represented through timing choices. The simulation studies how likely the system is to succeed without buffer underflow or overflow under different inter-packet delay distributions.
The main ideas covered in the project are:
- comparing uniform and exponential inter-packet delay models
- simulating secret-message transmission through packet timing
- measuring overflow, underflow, and successful transmission probabilities
- visualizing results with figures and notebook-based analysis
The repository includes several data sources in the Data directory and project-specific files in Project FIles.
Data/lm_synthetic_data.txt: synthetic language-model-style data used in the projectData/Old_Faithful.txt: reference dataset included for analysis or comparisonData/Traffic_data_orig.csv: traffic-related source dataData/urea-serum-data.txt: additional dataset used in the assignmentProject FIles/Covert_Traffic_Data.csv: covert traffic data used by the projectProject FIles/Covert_Traffic_Data-V2.csv: alternate or updated covert traffic datasetProject FIles/secret_message_bits: stored secret-message bit sequence used by the notebook
The Figures directory is intended for plots and generated visuals created during the notebook workflow. The image files in the project files folder appear to be example outputs or saved figures from the analysis.
- /Data: Contains the datasets used for analysis and message embedding.
- /Figures: Includes charts, plots, and other visualizations generated by the notebook.
- /Project FIles: Contains supplementary files and resources for the project.
- The folder name
Project FIlesuses a space and unusual capitalization, so be careful when referencing paths from the terminal. - The notebook has not been executed in the current workspace state, so you may need to rerun cells to regenerate outputs.
- If you add new experiments, consider saving any new plots into
Figuresand documenting them here.