Snoopy: Sniffing Your Smartwatch Passwords via Deep Sequence Learning - ACM UbiComp 2018.
This is the code and dataset used by Snoopy, an attack system for password inference on smartwatch.
Download the data through this Dropbox link. Unzip the downloaded file in the project directory and check the following subfolders:
train
: > 33,000 labelled motion samples from 147 common swiped pattern locks. Used for network training.test
: > 1,500 samples, containing both seen (50) and unseen (64) pattern locks during training.val
: > 3,800 labelled motion samples from 61 pattern locks for model selection.
Our code has been tesed on Keras 2.0.8
with tensorflow-gpu==1.9.0
as backend. Install required dependency as per the following setps.
- Create the
py27snoopy
Conda environment:conda env create -f environment.yaml
. - Install the specific version of
recurrentshop
from this fork - Go to this fork and follow its instruction to install
seq2seq
.
-
FIRST: Change the config file
config.ini
to decide network params and regularization strategies. -
To train the attention based lstm model:
python train_att_seq.py
- To train the standard lstm model:
python train_seq.py
- To test the model:
python test.py *model_name*.hdf5
For example, python test.py model_attention_32_0.005_200_33336_0.1_2.hdf5
. There are some pre-baked model examples docked in the model
directory.
If you find this repository and our data useful, please cite our paper
@article{lu2018snoopy,
title={Snoopy: Sniffing your smartwatch passwords via deep sequence learning},
author={Lu, Chris Xiaoxuan and Du, Bowen and Wen, Hongkai and Wang, Sen and Markham, Andrew and Martinovic, Ivan and Shen, Yiran and Trigoni, Niki},
journal={Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies},
volume={1},
number={4},
pages={152},
year={2018},
publisher={ACM}
}
This code partially builds on Seq2Seq.