emflow-artifact
README.txt
EMFLOW Artifact

This provides the resources to reproduce the experiments in the EM-flow paper. We provide processed data to reproduce all experiments from Table 2. Due to size and space constraints of sharing full training data (which takes around 4 TB of disk space), and over eight days of training time on our set up with 256 GB of RAM, we opt to provide a pared down experiment that reconstructs the numbers found in Table 2. We provide processed data (for each claim in /claims) as well as execute in a docker container to allow for expanded usability. Additionally we provide a small example set of training data which can be exercised through the artifacts/training.ipynb jupyter notebook. Expected runtimes last around 10 minutes per claim on our tested machine, and takes around 25 minutes to build. Finally we provide a Google Colab drive, which can recreate the training and evaluation steps on a small set of provided data in the infrastructure/infrastructure file. 

Requirements to execute locally:
    - Docker (https://docs.docker.com/engine/install/)
    - 24 GB of RAM
    - 200 GB of Free Disk space

Execution Instructions (note the install script uses docker it may need root permissions (sudo) if your docker install requires it):
    1. git clone https://gitfront.io/r/c1234/ZVZ2dYSazQWt/emflow-artifact.git
    2. cd emflow-artifact
    3. bash install.sh (or sudo bash install.sh if required)
    4. bash claim/claimX/run.sh (for each claim; sudo if required)

Setup for local use (Tested on Ubuntu 24.04 with Python 3.12.3, 3.11.0rc1):
    1. git clone https://gitfront.io/r/c1234/ZVZ2dYSazQWt/emflow-artifact.git
    2. cd emflow-artifact
    3. python3 -m venv ./venv 
    4. ./venv/bin/pip install -r requirements.txt

Execution Instructions (artifacts/evaluation.py):
    1. venv/bin/python evaluation.py [-h] --benign-path BENIGN_PATH --attacks-path ATTACKS_PATH [ATTACKS_PATH ...] -b BSCORE -c {checksum,syringe-arduino,syringe-pico,servo-arduino,servo-pico,soldering,home-iot,distance}