Skip to content

Latest commit

 

History

History
61 lines (39 loc) · 3.58 KB

File metadata and controls

61 lines (39 loc) · 3.58 KB

Secret Message Project

About

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.

How to Run

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:

  • numpy
  • matplotlib
  • pandas
  • jupyter

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.

Project Overview

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

Data Files

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 project
  • Data/Old_Faithful.txt: reference dataset included for analysis or comparison
  • Data/Traffic_data_orig.csv: traffic-related source data
  • Data/urea-serum-data.txt: additional dataset used in the assignment
  • Project FIles/Covert_Traffic_Data.csv: covert traffic data used by the project
  • Project FIles/Covert_Traffic_Data-V2.csv: alternate or updated covert traffic dataset
  • Project FIles/secret_message_bits: stored secret-message bit sequence used by the notebook

Output Files

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.

Repository Structure

  • /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.

Notes

  • The folder name Project FIles uses 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 Figures and documenting them here.