Git Product home page Git Product logo

tracker-control-android's Introduction

TrackerControl for Android

Crowdin License: GPL v3

A feature-reduced iOS version is in the making. This is designed as a website and only allows tracker analysis (but no tracker blocking). See here.

If you have missing features or bugs, join the community, use the issue tracker, or contact Konrad directly ([email protected])!

TrackerControl is an Android app that allows users to monitor and control the widespread, ongoing, hidden data collection in mobile apps about user behaviour ('tracking').

To detect tracking, TrackerControl combines the power of the Disconnect blocklist, used by Firefox, and of our in-house blocklist, created from analysing ~2 000 000 apps! Additionally, TrackerControl supports custom blocklists and uses the signatures from ClassyShark3xodus/Exodus Privacy for the analysis of tracker libraries within app code.

This approach

  • reveals the companies behind tracking,
  • allows to block tracking selectively, and
  • exposes the purposes of tracking, such as analytics or advertising.

The app also aims to educate about your rights under Data Protection Law, such the EU General Data Protection Regulation (GDPR).

Under the hood, TrackerControl uses Android's VPN functionality, to analyse apps' network communications locally on the Android device. This is accomplished through a local VPN server, to enable network traffic analysis by TrackerControl.

No root is required, other VPNs or Private DNS are not supported. No external VPN server is used, to keep your data safe! TrackerControl even protects you against DNS cloaking, a popular technique to hide trackers in websites and apps.

TrackerControl will always be free and open source, being a research project.

Contents

Download / Installation

Disclaimer: The usage of this app is at your own risk. No app can offer 100% protection against tracking. Analysis results shown within the app might be inaccurate.

Get it on GitHub Get it on F-Droid

Get it on IzzyOnDroid Get it on Google Play

There are multiple versions of TrackerControl.

If you're interested in blocking tracking, then best download TrackerControl from here, from F-Droid, or from the IzzyOnDroid F-Droid Repository.

If you're interested in analysing tracking and generating factual evidence of it (e.g. for research), then choose the version from Google Play. The analysis results from this version will usually be more accurate.

Example Use

TrackerControl is mainly designed to help you investigate the tracking practices of the apps on your smartphone. For this purpose, TrackerControl combines two analysis techniques: tracker library analysis and network traffic analysis.

Network traffic analysis

Mobile trackers rely on the sending of personal data over the internet. This is why tracking can be detected and analysed from apps' network traffic. This is the core functionality of TrackerControl. The advantage of this approach over tracker library analysis is that actual evidence of data sharing is gathered; by contrast, when analysing solely the presence of tracking libraries in apps, some of these libraries may never be activated by an app at run-time.

At the moment, TrackerControl Slim, available on the Google Play Store is the preferred tool for tracking analysis, because this version of TrackerControl does not block network traffic and additionally resolves contacted domains using TLS Server Name Indication.

You analyse apps network traffic by following the steps within the app to enable the VPN. Consequently, TrackerControl keeps track of any contacted tracking domain. Note that you need to interact with apps of interest in order to make these apps share data with tracking companies over the internet.

You can export the results of your analysis from the app menu TrackerControl to CSV ("Export as CSV"). If you export to CSV from the main screen of TrackerControl, you can create nice visualisations of your exported traffic data using purpose-built software by Hestia Labs.

It is further possible to enable the direct logging of contacted domains to the console. This is helpful for research studies that instrument apps using an additional computer and can be enabled through Settings -> Advanced options -> Log transmissions to ADB. Note that this disables any blocking.

By default, the analysis of system apps is disabled. This is because the analysis of the network traffic of system apps can lead to unexpected behaviour and should only be used by experienced users. You can enable the analysis of system apps through Settings -> Advanced Options -> Manage system apps. The analysis of system apps might be helpful if you want to analyse the data sharing of sytem apps, such as Google Maps, YouTube or the Google Play Service, all of which might be used by other apps to do tracking for them. In other words, without looking at system apps, some tracking might be missed; the challenge here, however, is that it's difficult to differentiate different apps that use other Google apps for tracking. This means that for a robust analysis, it's prudent to uninstall and deactivate as many apps on the user's phone as possible.

TrackerControl also has a traffic log functionality that can be accssed from the menu bar. If enabled, contacted tracking domains will be highlighted in bold. Note, however, that the traffic log currently lacks a display of whether there's ambiguity in the contacted domains (as opposed to the per-app screens that show when certain domains are uncertain). Displayed domains can be inaccurate.

Tracker library analysis

In addition to the analysing of apps' network traffic, TrackerControl can also detect the presence of tracking libraries within apps' code. Compared to network traffic analysis, this approach might pick up additional tracking practices that are not observed during testing in a lab setting, but may occur in a real-world scenario.

The analysis of tracker libraries in code is rather straightforward. You only need to select an app of interest from the main screen of TrackerControl.

Contributing

TrackerControl is a community-driven project and welcomes contributions of all kinds. This does not require programming skills.

If you need support in using the app, join one of the online communities.

If you find any errors or bugs or have suggestions for improvements, you can use the issue tracker. The issue tracker provides two different templates, one one for bugs and the other for improvements.

If you want to contribute directly to code of TrackerControl, feel free to file a pull request or, alternatively, use the issue tracker.

If you do not have programming skills, here are some further suggestions on how you can support the project:

  1. Help translate the app into your language.
  2. Rate the (feature-reduced version of the) app on Google Play.
  3. Join one of the online communities and share your ideas on make the app better.
  4. Tell your friends how to protect their privacy with TrackerControl.
  5. Leave a star on GitHub.

Also, you can always reach out to the main developer Konrad directly at [email protected]. I deeply welcome and answer every message.

Communities

  1. Telegram Discussion Group: https://t.me/TrackerControl
  2. Telegram News Channel: https://t.me/TrackerControlChannel
  3. Matrix Community: https://matrix.to/#/!htazLJNOSogSGbSPQL:matrix.org?via=matrix.org (temporarily closed due to spam)
  4. /e/ Community: https://community.e.foundation/t/trackercontrol-a-way-to-neutralize-in-app-trackers/
  5. XDA Developers: https://forum.xda-developers.com/android/apps-games/control-trackers-ads-t4161821

Translation

If you're missing a translation, feel free to contribute here: https://crowdin.com/project/trackercontrol.

Contact me at [email protected], if you're missing a language.

Highlights

TrackerControl provides

  • real-time monitoring of app tracking, including destination companies and countries,
  • granular blocking of app tracking,
  • one-click data requests as granted under EU Data Protection Legislation,
  • ad-blocking using widely available host files, and
  • tracker library analysis of apps' code.

Screenshot of app overview Screenshot of trackers details Screenshot of receiving countries

Contrary to similar solutions, this application does not intercept SSL connections, minimising privacy risks and allowing for usage on unrooted Android devices. Only the meta data about network communications is logged, and displayed to the users.

Download here.

Build Instructions

Building this project is rather straightforward. In combination with F-Droid, this repository currently uses automated builds and therefore complies with a standard Android build pipeline.

For building, you need:

  • Android Studio (including a default installation of the Android SDK, including build tools)
  • Android NDK (all recent versions should be compatible)

Next, you just need to start the building process from within Android Studio.

Alternatively, you can also use the provided gradle wrapper for building. Details on this can be found in the Android developer documentation.

If you find any problems with these instructions, feel free to file this in the issue tracker.

Privacy Notice

TrackerControl does not send any personal data off your device.

TrackerControl allows users to monitor the network communications on their Android device. This network data qualifies as personal data, but is only processed locally on the user's device.

If the user consents, TrackerControl contacts the Google Play Store to retrieve further information about the users' apps. The app automatically contacts GitHub to check for updates, which can be disabled from the app settings. No personal data is ever shared, other than what is strictly necessary for network communications (e.g. IP address).

TrackerControl uses the ACRA plugin. This is considered to be a 'good' tracker. It's open-source, and could be used to collect crash reports automatically to a server–TrackerControl DOES NOT do this. Instead, the user must app report crashes manually, via e-mail. ACRA shows a dialog to do this in TrackerControl.

TrackerControl itself never sends any personal data off your device.

Cookie Policy

TrackerControl does not use cookies of any kind.

The only information saved on the user's device is non-identifying and strictly necessary for the operation of TrackerControl:

  1. a database of network communications, and
  2. user settings.

This information is kept on the user's device until app data is removed manually by the user (e.g. by uninstalling).

Credits

The development of TrackerControl was led by Konrad Kollnig (University of Oxford). The underlying network analysis functionality is provided by the NetGuard Firewall, developed by Marcel Bokhorst.

TrackerControl would not have been possible without the help of many outstanding minds, including Max Van Kleek, Katherine Fletcher, George Chalhoub, Sir Nigel Shadbolt and numerous app testers and friends.

The app builds upon a range of publicly available resources:

X-Ray Tracker List: TrackerControl also uses the tracker blocklist by Reuben Binns, Ulrik Lyngs, Max Van Kleek, Jun Zhao, Timothy Libert, and Nigel Shadbolt from the X-Ray project, created from analysing ~1 000 000 apps. This database was released as part of their 2018 paper on Third Party Tracking in the Mobile Ecosystem. The original data can be retrieved here.

Disconnect Tracker List: TrackerControl integrates the Disconnect list of known tracker domains, that is distributed with the Firefox browser.

Steven Black's Blocklist: A state-of-the-art blocklist. This is used as fallback, if no company information is known from the other tracker lists. More here.

Icons: The app uses icons made by bqlqn from www.flaticon.com, and a rocket icon by Dave Gandy under the SIL Open Font License.

GDPR Requests: For the GDPR requests, the templates from the website My Data Done Right by the NGO "Bits of Freedom" were adopted.

Country Visualisation: TrackerControl offers to visualise the countries to which trackers sent data. The code was kindly offered by Takuma Seno. To map IP addresses to countries, TrackerControl includes the GeoLite2 database, created by MaxMind, available from https://www.maxmind.com.

ClassyShark3xodus: TrackerControl allows to detect trackers in the app code. The signatures to do this are taken from ClassyShark3xodus.

sniproxy: TrackerControl uses code that has been derived from an early version of sniproxy to parse the Server Name Indication (SNI) in TLS headers in accordance with the associated IETF standard.

Peter Lowe's Blocklist: TrackerControl uses the IP blocklist provided by Peter Lowe. Note that this bans anyone from making money from this, see the license.

DuckDuckGo Tracker Radar: TrackerControl uses some (but not all) information that lies at the heart of DuckDuckGo's tracking analysis technologies.

License

Except where indicated otherwise, this project is licensed under GPLv3.

Citation

If you use this project as part of your academic studies, please kindly cite the below article:

@article{kollnig2022_app,
     doi = {10.21105/joss.04270},
     year = {2022},
     publisher = {The Open Journal},
     volume = {7},
     number = {75},
     pages = {4270},
     author = {Konrad Kollnig and Nigel Shadbolt},
     title = {TrackerControl: Transparency and Choice around App Tracking},
     journal = {Journal of Open Source Software}
}

@inproceedings {kollnig2021_consent_analysis,
      author = {Konrad Kollnig and Pierre Dewitte and Max Van Kleek and Ge Wang and Daniel Omeiza and Helena Webb and Nigel Shadbolt},
      title = {A Fait Accompli? An Empirical Study into the Absence of Consent to Third-Party Tracking in Android Apps},
      booktitle = {{Seventeenth Symposium on Usable Privacy and Security (SOUPS 2021)}},
      year = {2021},
      isbn = {978-1-939133-25-0},
      pages = {181--196},
      url = {https://www.usenix.org/conference/soups2021/presentation/kollnig},
      publisher = {{USENIX Association}},
      month = aug,
}

References

  • Song, Y., & Hengartner, U. (2015). PrivacyGuard: A VPN-based Platform to Detect Information Leakage on Android Devices. Proceedings of the 5th Annual ACM CCS Workshop on Security and Privacy in Smartphones and Mobile Devices - SPSM ’15, 15–26. https://doi.org/10.1145/2808117.2808120
  • Le, A., Varmarken, J., Langhoff, S., Shuba, A., Gjoka, M., & Markopoulou, A. (2015). AntMonitor: A System for Monitoring from Mobile Devices. Proceedings of the 2015 ACM SIGCOMM Workshop on Crowdsourcing and Crowdsharing of Big (Internet) Data - C2B(1)D ’15, 15–20. https://doi.org/10.1145/2787394.2787396
  • Binns, R., Zhao, J., Kleek, M. V., & Shadbolt, N. (2018). Measuring Third-party Tracker Power across Web and Mobile. ACM Transactions on Internet Technology, 18(4), https://doi.org/10.1145/3176246
  • Van Kleek, M., Binns, R., Zhao, J., Slack, A., Lee, S., Ottewell, D., & Shadbolt, N. (2018). X-Ray Refine: Supporting the Exploration and Refinement of Information Exposure Resulting from Smartphone Apps. Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems - CHI ’18, https://doi.org/10.1145/3173574.3173967
  • Kollnig, K., Binns, R., Dewitte, P., Kleek, M. V., Wang, G., Omeiza, D., Webb, H., & Shadbolt, N. (2021). A Fait Accompli? An Empirical Study into the Absence of Consent to Third-Party Tracking in Android Apps. Seventeenth Symposium on Usable Privacy and Security (SOUPS 2021). https://www.usenix.org/system/files/soups2021-kollnig.pdf
  • Kollnig, K., Binns, R., Kleek, M. V., Lyngs, U., Zhao, J., Tinsman, C., & Shadbolt, N. (2021). Before and after GDPR: Tracking in mobile apps. Internet Policy Review, 10(4). https://policyreview.info/articles/analysis/and-after-gdpr-tracking-mobile-apps

tracker-control-android's People

Contributors

another-sapiens avatar atrate avatar danielskatz avatar dermart avatar kasnder avatar privacydragon avatar sguinetti avatar tacothedank avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tracker-control-android's Issues

Add Private DNS

Blokada has this.

Yet, I don't have the resources to take on this project.

Tracker control could not start automatically

When trying to start tracker control I ge the notification that it could not start and the message:

An unexpected error has occured: 'java.lang.SecurityException: getPackageUid: Neither user xxxxx nor current proceess has android.permission.INTERACT_ACROSS_USERS.'

Does this need to be run as root?

TC Community

Other apps, often have Telegram channels or groups to resolve issues more swiftly and discuss new features.

Likewise, Google Groups is widely used.

TrackerControl would greatly benefit from establishing something similar.

Add CSV export

This was removed in the last update, due to restructuring the database layout.

Publishing the app on F-Droid

Once the app is more stable (or just now), I would recommend publishing it to the F-Droid FOSS app store, this can help it gain popularity amount the FOSS community and make it easily accessible for people living without Gapps (as I presume publishing it on Google's Play Store is also on the roadmap).

Questions about function and usage of TrackerControl

I have a few questions:

  1. What database uses TC? I only found very small databases in the app data and the downloaded hosts file seems not to be used, the URLs are not being blocked. By now I used AdAway. It needs very little RAM. The advantage of TC is that I can block domains per app. Is it possible to combine AdAway and TC? E.g. Add the tracker domains from TC to AdAway or use the lists from AdAway in TC?
  2. What is IP filtering necessary for?
  3. What is "Block domain names" in advanced settings for?
  4. Which domain names are listed in "Show resolved domain names"? The blocked ones? Any connected domain? Is it possible to see which app connected to which domain?
  5. At least one app (BusinessCalendar2) cannot connect to the internet if the Block switch in the general UI is on. What may be the reason?
  6. TC does not start when booting the phone. Is that intentionally? I can live well with this because mostly I am offline. I use Tasker to start and stop TC. That saves RAM when I am offline.

Latest version overrides my choices with no backup or prompt?

You just decided to disable browsers,email and others (including disabling blocking of all apps entirely???) whether I'd gone to the trouble of configuring them or not with no prompt to the user unless they happened to read the changelog and no prompt to backup the existing choices FIRST? Now I get to redo all of last week's tweaking because the last backup was on the 15th. Not well done. It looks like even restoring a backup left many unblocked. Now my list of trackers has reset to 0 on every app. If you are not backing up my choices of what to enable/disable and the list of trackers found what the heck ARE you backing up? The handful of app settings?

A browse of the NETGUARD_.xml file shows it only tracks the apps you totally disabled blocking of...none of the ones where you partially allowed content. Why is the backup file called Netguard instead of TrackerControl? I've been recommending this app to my friends but I'll make sure to tell them not to upgrade unless they want to start OVER.

..and every time I restore from a backup you 1) turn blocking of all apps off(slider at top of app) and turn off browsers, email, bluetooth and half a dozen others I had just finished resetting to ENABLED AGAIN which are NOT listed in the backup.

What a charlie foxtrot.

"Failed to install due to an unknown error"

Just tried installing from FDroid on Moto G Play Android 7.1.1. Got the above message. I have NetGuard installed if that makes any difference but still wouldn't install even when I killed the NG processes.

RAM usage

On my Samsung Galaxy S5 Plus (SM-G901F), LineageOS for microG 16 (Android 9) I have ~500MB free RAM. TrackerControl uses 200 of it. This is much more than any other app uses and far too much to work smoothly with the phone. Is there a chance to significantly reduce the RAM usage? Or any other solution for phones with limited RAM?

insecure gradle setup

The version of gradlew in this project is ancient (1.6-20130404052254+0000). It does not even support setting distributionSha256Sum in gradle/wrapper/gradle-wrapper.properties. Which btw. is also something you should do for securing your build tools.

Various issues with blocking

According to one user:

  • Toggling trackers in any apps resets connection
  • Regular reloading of rules required to unblock internet
  • only apps that work at all (over mobile data) are the ones that are completely unblocked in TC

[Feature] Dark theme

It would be pretty nice to have a dark theme.

I can also try to make a PR for that, but be aware that it would be my first time trying to implement theming in an app.

java.lang.RuntimeException: InputChannel is not initialized.

There seem to be a weird error within the leading, sometimes leading to the following crashing with the error message in 1.0.0-alpha7:

java.lang.RuntimeException: InputChannel is not initialized. at android.view.InputEventReceiver.nativeInit(Native Method) at android.view.InputEventReceiver.<init>(InputEventReceiver.java:71) at android.view.ViewRootImpl$WindowInputEventReceiver.<init>(ViewRootImpl.java:7605) at android.view.ViewRootImpl.setView(ViewRootImpl.java:956) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:387) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:95) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4296) at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

This issue is known by Google, but has no fix, see here. Device restart might help.

Add a custom DNS/VPN option out

Hi there,
One issue, when using your tool, is that it use the VPN functionality of the phone, in order to have access to the different internet communications all the apps on the devices does, and, be able to tag the tracker activity.
However, by doing so (and due to how it works in Android 9) :

  • This make me unable to use my custom private DNS settings (Especially in this case, in which i use to block some already known specific trackers sources, and other adwares/malware sources)
  • This also make me unable to use an another VPN connection (Pretty logical, since it allows only one VPN application to be added).
    I don´t really know if how possible it would be to actually implement a basic openvpn capacity in order to redirect all the connections to the specified VPN, but i suppose being able to redirect all the traffic to a dedicated custom DNS should be implementable.
    Implementing DoH or DoT would be ideal, but implementing some custom settings for an IPV4 and IPV6 address should be enough.

Not working on Lineage OS 15.1 / 16

@bege10: BusinessCalendar2 allows to download school holiday calendars. This only works if I deactivate blocking for that app in TC. There are no trackers listed for that app in TC.
Additionally ProfiMail Go (mail client) does not connect correctly to t-online.de (IMAP, starts with a few folders and then hangs) and not at all to gmx.de (POP3, but there is a tracker listed for United Internet Media which hosts GMX). After deactivating blocking in TC all accounts work correct.

Enhancement : Run automatically at startup

Would it be possible to add the option "Run automatically at startup" ?

That would be a great improvement. I have been unable to do so (Huawei 20i) with "TrackerControl" but "Blockada" allows it.

Thanks for your great work !

Support for Android 10 missing

Due to changes to the network API on Android 10, network communications cannot yet be mapped to the corresponding apps.

One possible solution would be the identification of the app currently in the foreground, and mapping ALL network communications to this app. Yet, this would also map background communications of other apps to the foreground app, and may lead to misleading tracker statistics in TrackerControl.

Usage with Shelter Sandbox

In conjunction with the Shelter app, I installed a work profile. Apps from the work profile are not listed in the main view of Tracker Control, which makes it impossible to control their blocking status. In fact, when an app is duplicated, so that one version exists in each profile, even the private/regular profile version is not listed.

This was observed with the 2020.05.08-fdroid version.

Add Root Support?

The current VPN implementation comes with several shortcomings:

  • Lack of testing in practice
  • Lack of support for Private DNS
  • Reliance on VPN feature

Possible solutions:

  • Use different VPN layer, that is better tested, such as NetGuard.

Feature Request: Support ad blocking via supplemental host list.

Since android only allows 1 vpn at a time the two mutually exclusive apps to trackercontrol are custom dns/dnsmasq'ing apps. You at least support specifying dns servers for the vpn even though this does NOT provide dnsmasq or dns over https. Additionally this is not providing ad blocking as dns66 did. On first glance it would appear if a secondary host list was allowed either my you or allowing the USER to add one then ad blocking could also be implemented.

cannot install

I tried several times to install up with no success does.it need root

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.