Firetastic - a tool for automating interaction with FireTV apps
This repository contains the source code for the Firetastic tool developed for, and used in, the paper “The TV is Smart and Full of Trackers: Measuring Smart TV Advertising and Tracking.” Firetastic enables automated installation and interaction with Fire TV apps (channels) while logging the Fire TV device’s network traffic. For a more detailed description of Firetastic (and Rokustic, Firetastic’s sibling tool for Roku), please refer to the aforementioned paper and the project website.
If you create a publication (including web pages, papers published by a third party, and publicly available presentations) using Firetastic and/or the accompanying smart TV dataset, please cite the corresponding paper as follows:
@article{varmarken2020smarttv,
title={{The TV is Smart and Full of Trackers: Measuring Smart TV Advertising and Tracking}},
author={Varmarken, Janus and Le, Hieu and Shuba, Anastasia and Markopoulou, Athina and Shafiq, Zubair},
journal={Proceedings on Privacy Enhancing Technologies},
volume={2020},
number={2},
year={2020},
publisher={De Gruyter Open}
}
We also encourage you to provide us (smarttv.uci@gmail.com) with a link to your publication. We use this information in reports to our funding agencies.
Firetastic uses AntMonitor to collect network traffic (on-device) and a python-based library Droidbot to explore the app. You must set up both tools in order to run Firetastic.
Note: all instructions were tested on Mac OS X
Before using Firetastic, you must:
DEVICE_IP
.To quickly install apps on your Fire TV device, use Amazon’s web interface to the app store. First make sure that your Fire TV device is on.
To extract the apks into a folder on your local machine:
for package in $(adb -s DEVICE_IP:5555 shell pm list packages -3 | grep -v "edu.uci.calit2.anteatermo" | grep -v "^andoid\r$" | tr -d '\r' | sed 's/package://g'); do apk=$(adb -s DEVICE_IP:5555 shell pm path $package | tr -d '\r' | sed 's/package://g'); echo "Pulling $apk"; adb -s DEVICE_IP:5555 pull -p $apk "$package".apk; done
for package in $(adb -s DEVICE_IP:5555 shell pm list packages -3 | grep -v "edu.uci.calit2.anteatermo" | tr -d '\r' | sed 's/package://g'); do apk=$(adb -s DEVICE_IP:5555 shell pm path $package | tr -d '\r' | sed 's/package://g'); echo "Uninstalling $apk"; adb -s DEVICE_IP:5555 uninstall "$package"; done
1ac9d72274c1fe37858c410d155008dce2e1b33b
patches/firetastic-antmonitor.patch
Droidbot should be using Python 2.7
b60e95826f87f60ecb2837c00a5d7d3efd24c459
patches/firetastic-droidbot.patch
Once everything is set up, run the following command to explore apps:
python firetv_automate_apps.py PATH_TO_LOCAL_APKS ADB_DEVICE OUTPUT_PATH PCAPNG_OUTPUT_PATH ONLY_OUTGOING
DEVICE_IP
and portFiretastic uses AntMonitor to capture network traffic and thus inherits the platform requirements. It also uses Droidbot to explore FireTV applications and inherits the tool’s requirements as well.
Firetastic is licensed under GPLv2.