Giter Club home page Giter Club logo

airguard's Introduction

AirGuard - AirTag tracking protection

Protect yourself from Find My Tracking

The AirTags and other Find My devices are simple, small and perfect to track Android users! Without tracking warnings, as integrated on iOS, anyone could try to track your behavior by placing an AirTag in your jacket, backpack or car.

With AirGuard you get the anti-tracking protection you deserve! The app periodically scans your surroundings for potential tracking devices, like AirTags or other Find My devices. If a devices follows you, you will get a notification in less than an hour!

With the app you can play a sound on AirTags and find it easily. Afterward, you can view at which locations the device has tracked you.

If no one is trying to track you, the app will never bother you.

Get the app

The app is available on Google Play, F-Droid or download it here from the GitHub releases.

Get it on Google Play Get it on F-Droid

Details

Who are we?

We are part of the Technical University of Darmstadt in Germany. This project is part of a scientific research from the Secure Mobile Networking Lab. Our goal is to protect privacy and to find out how many people are opposed to tracking. In this app you can voluntarily participate in a research study that will share anonymized data with us.

This app will never get monetized by showing ads, in-app purchases or anything else.

How does it work?

AirGuard uses Bluetooth scans of your Android phone to find AirTags and Find My trackers. Every tracker that is found will be saved locally on your device. Whenever a tracker gets detected multiple times the app will recognize this. It compares the locations where the tracker has been detected. If a tracker is detected at least 3 times and the locations have changed (to make sure its not your neighbour) the app sends you a notification. If this tracker is an AirTag you can play a sound to find it.

All this happens locally on your device and the private information, like location, tracker ids, etc will never leave your device.

Disclaimer

AirTag, FindMy and iOS are trademarks of Apple Inc. We are not working together with Apple Inc.

airguard's People

Contributors

aegeeik avatar aeri avatar arkon avatar campbellmg avatar drmaxnix avatar guerda avatar imbissbudenaesthetik avatar itou-kouki avatar lazytownfan avatar mr-update avatar nikolas-s avatar nohn avatar olliebennett avatar peterdavehello avatar sn0wfreezedev avatar trup3s 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

airguard's Issues

Some recolorings in Material 3

Status Bar

Description

The latest version of AirGuard is showing the primary Material 3 color in the status bar- which is often light and has low contrast with the white foreground.

Reproduction

  • Have an Android 12L beta phone
  • Open AirGuard
  • See bug

Screenshot

Screenshot_20211223-091053

Proposed Fix

Make the status bar the same color as the background of the main app UI.

SVG color issues

Description

The latest version of AirGuard shows SVGs that don't align with Material 3 dynamic color.

Reproduction

  • Have AirGuard on Android 12
  • Run manual scan
  • See undesired behavior

Screenshot

Screenshot_20211223-122058

Thanks for looking into this issue!

Daylight Saving Time not reflected in dashboard

Screenshot_20211222-170943.jpg

Timezone: CDT
I took the screen shot after a while. But it is observed that the actual discovery time should have been displayed as 4:26 pm as there's Daylight Saving Time

Great work, thanks!

Clarification: Bluetooth on or off?

Neither in the app itself nor on the website I found any instructions regarding the bluetooth settings for the device.
I see two possibilities:

  1. bluetooth off: bluetooth can be set to off and AirGuard will (somehow) briefly enable it for the periodic scans.
  2. bluetooth on: bluetooth has to be set to always on.

Which on is it?

[Bug] Do not use locations with a too high uncertainty

So, I have this airtag on an item at home for which I frequently get false alarms for tracking, despite it not moving with me. It seems to me like it is using for location also points reported by android which have a very high uncertainty, mainly those only used via triangulation of cell towers. Since those have a very high uncertainty (often >500m), it does not really make sense to use this as a location, and instead rely more on a gps fix or thelike (<20m uncertainty? <50m? dunno). That way most if not all of my false positives could be avoided

Add detection of Tile trackers

Having both AirTag and Tile Tracker detection in one app would be useful, likely reuse significant portions of the code base, and provide energy efficiency vs having another app price anti-tracking for Tiles and do its own BLE scans.

Display copyright on map view

The current version from F-Droid is missing a copyright notice from OpenStreetMap. OsmDroid does not seem to display it by default, so a custom one needs to be added.
Here's one option which might work:

//Copyright overlay mCopyrightOverlay = new CopyrightOverlay(context); mMapView.getOverlays().add(this.mCopyrightOverlay);

https://stackoverflow.com/a/50968755/32043

The text "© OpenStreetMap contributors" is required by the license.
See https://openstreetmap.org/copyright

https://mobile.twitter.com/OSM_Pontarlier/status/1444744213330022403

Stuck inside "Tracker Detected"-list

When viewing Tracker-lists there is no way to get back to dashboard using the UI (hardware back-key works tho).

Steps to reproduce:

  1. Open AirGuard (start-page / dashboard should show up)
  2. Click on first box which whows current risk level
  3. Click on "Trackers detected" or "Locations tracked" box in top (needs to have detected devices) or click on "Other devices found" box in scond row
  4. Notice that there is no back-btn in UI
  5. Notice that nav-menu on bottom highlights "Ignored" even tho we are comming from dashboard
  6. Click on "Dashboard" in nav-menu on bottom and notice that it does nothing
  7. Click on "Ignored" or "Settings" in nav-menu on bottom and then click "Dashboard" in nav-menu on bottom again and notice that "Tracker Detected"-list is still showing

AirGuard version: 1.2 (f-droid) on Android 12

Settings Translation Error: Reverse Meaning - Use Low Energy Scan

Description

The "Use Low Energy Scan" setting is described differently in German and English

Statement of the translations:

EN: This option is required to detect all devices
DE: If this option is enabled, some devices may not be detected

Screenshot

LowEnergySettingEN

LowEnergySettingDE
"This may result in some devices not being recognized."
Translation by DeepL.com

Version affected

F-Droid:
1.2
(I could not install versions 1.1.0 and 1.1.0 due to an unknown error)

Play Store:
Downloaded on 17.3.2022 17:15

[Suggestion] Add ability to "whitelist" devices.

You should be able to whitelist devices, so that the app will not warn you every time you enter it. For example, I own a tile, and I keep it in my wallet, and even though I've muted it, the app shows that I am unsafe.

Thanks,
SteadyStatus21

About Section

It would be good to have an "About" section in the settings, with some general information such as:

  • "About" (what ist this app, what does it do)
  • Authors
  • Version
  • Link to homepage

[Bug] - App Crashes upon double or triple click of selected menu item.

Hello,
I have found if you are fast enough or you double or triple click a menu item, the entire app panics and crashes.

Attached is a screen recording from my Samsung Galaxy S20+ 5G running Android 12, OneUI 4.0.

Hope this helps :)

-SteadyStatus21

Screen_Recording_20220408-074831_AirGuard_1.mp4

No notifications

Hi I’ve version 1.0.4 installed and It found two air tags the other day but I never got a notification they were detected. Is there something I’m missing or do notifications trigger under certain situations?

I’m running it on a Pixel 2XL running CalyxOS (android 11).

Please let me know if any additional information would be helpful.

Suggestion: Dashboard / Devices page sorting

Hi there,

First of all, I think this is an absolutely incredible project in terms of personal safety. I do have one suggestion from a UX perspective:

I think that sorting should be added to the Dashboard / Devices page (e.g. sort by beacon count, first / last seen, serial number or assigned name).

This can make it easier to find particular FindMy devices.

Thank you

Location of beacon is not of beacon but current location

I'm using Android AirGuard 1.0.4 installed by F-Droid.

Thank you for an interesting app, already more beacons than I expected.

When I choose a beacon, it shows a map, but instead of showing the location at the time the beacon was identified, it shows my current location.

Make flagging of detected devices more transparent

I had an AirTag detected a few days ago which followed me in public transport (but it was just someone else).
I just wanted to check out which options are available for "Feedback" / "provide some insights" to see if I can tell the app that it was a false-positive. When I noticed there were only options for true findings I closed the menu but noticed that the button was gone.
Did I accidentally flag this AirTag as a real finding?

In case it's really that simple to make an UNRECOVERABLE report which even CONTRIBUTES TO A RESEARCH you should implement some sort of final "send report" button to let the user know they are making this decision now. At least that's what I did expect when opening this menu.

AirGuard version: 1.2 (f-droid)

Opening Ignored tab twice will result in wrong title being displayed

Opening the "Ignored" Tab and tapping the "Ignored" Button again will result in the Title of that tab changing from "Devices" to "IgnoredDevicesFragment".

OS: Android 11
Device: OnePlus 8 Pro
App Version: 1.3.4
Device Language: English

Wrong behaviour
Title of "Ignored" tab changing to "IgnoredDevicesFragment" (see Screenshot)
Screenshot_20220506-115415

Expected behaviour
Title not changing, displaying "Devices"

Steps to reproduce

  1. Open AirGuard App
  2. Open "Ignored" Tab
  3. Tap on "Ignored" again
  4. See title changing

How to reproduce:
Screenshot_20220506-115411

Understanding the 'status' byte of Airtags

I've read your research paper (via this blogpost), which mentions that Airtags emit a status byte, which "might indicate battery life".

I was wondering if you could tell me more about this byte. Does it indeed represent battery life? If so, wouldn't that make it possible to circumvent the peridic mac address randomisation? E.g.

  • Mac with battery life 56 disappears
  • A new mac with battery life 56 appears.
  • Conclusion: likely to be the same device?

If it's battery life indicator, is it a 0-255 representation of a 100% range?

Or does this status byte also convey other status information?

Suggestion: Renaming devices

This app was able to find and alert me of one of the DIY AirTags I made with OpenHaystack when a regular iPhone couldn't. Really cool stuff!

That being said, I had to add the device to my ignored devices list. The mac address really helped to confirm it was really my DIY AirTag, but I thought it might be super helpful to be able to rename the AirTags you add to your ignore list, or just rename them in general. For example I don't necessarily need to add my friend's real AirTags to the ignore list, but if I was able to rename them and I got an alert, it would help me figure out if I should be worried or not.

Keep up the great work!

Location bug on Pixel 5?

I left home today at 10:15. I got notified of several trackers today, and when I look at the timestamps and the locations of the pings, there are pings at my home at 11:00, 11:05, 11:20 mixed in with pings at my actual location (not home) at 11:15, 11:32. I don't own any trackers, but I'm probably near some in town right now. I've been in the same spot for the last two hours.

Is this a bug with location services on Android? If my phone gave AirGuard locations in different places while I sat near the same air tag, I can easily imagine it generating false positives as if that tracker was following me. Is this a known issue on Pixel phones, or maybe just me? Is there any way for AirGuard to know when it's getting a "stale" location from the system, or is that not really a thing?

In settings, AirGuard has location permission "all the time" and "use precise location" is enabled. The global "Google Location Accuracy" (aka "Improve Location Accuracy") is also enabled, but I wonder if this can actually introduce errors? I just dug into the developer options to see if a mock location app is configured, and no, there isn't one.

Give users instructions on how to deactivate AirTags

Hello. I believe that you should add a tutorial on how to remove the battery from a airtag. This would be beneficial to those who do not understand how to do so.

If you cannot do that, try linking to a article that will explain how to deactivate the airtag.

Thanks,
SteadyStatus21

Stuck at the location history screen

  1. During the introduction, choose "Only when using the app" (preselected) at the third screen
  2. Finish the introduction
  3. Go to "Settings", toggle the "Location" switch
  4. Choose, again, "Only when using the app"
  5. You're stuck at the location history screen, i.e. the "Done" button does nothing

I've restarted the app countless times trying to nail down the exact same steps one needs to take to reproduce this, and the procedure above I think is where this happens the most ... but also not every time. Once I was stuck right away by choosing "Ask everytime" at the same screen. Frequently, the introduction starts over at the first screen when choosing "Ask everytime" at the third one.

Either way, something's not quite right.

OS: LineageOS 18.1 for microG
Phone: OnePlus 3
App version: 1.1.1 (also happened with 1.1.0)

App won't detect my AirTag

Just tried this app and it isn't detecting my AirTag. It is paired with my iPhone and should be taking part in the find my network. I did some digging and saw that you are only listing for devices with the byte prefix (0x12, 0x19) but my AirTag is sending (0x07, 0x19) in the manufacture data. Here are some information about the manufacture data I could find https://adamcatley.com/AirTag#advertising-data.

It looks like my AirTag isn't paired correctly (I did try to do that multiple times) or there are some other differences as it is sending the payload for unregistered devices.

Any idea what it could be?

Question regarding the low power scan option

Hi,

I have a question regarding the low power scan option if you don't mind me asking.

Recently, the label text for the option was changed from If enabled bluetooth low power scan will be used to discover nearby AirTags!<b>WARNING</b>: This could cause that some devices won\'t be discovered! to If enabled, Bluetooth Low Energy scanning will be used to discover nearby AirTags!<b>WARNING</b>: Without this option, some devices might not be discovered!.

However, according to the code, Bluetooth Low Energy is used regardless of this option, and the low power scanning mode is used when this option is enabled.


private fun getScanMode(): Int {
val useLowPower = sharedPreferences.getBoolean("use_low_power_ble", false)
return if (useLowPower) {
ScanSettings.SCAN_MODE_LOW_POWER
} else {
ScanSettings.SCAN_MODE_BALANCED
}
}

So, it seems to me that the label should say If enabled, low power scanning mode will be used to discover nearby AirTags! <b>WARNING</b>: When this option is enabled, some devices might not be discovered!. Can someone please confirm if this is correct? Also, please let me know if you want me to open a PR to make the change.

[Enhancement] Add light/dark theme toggle in Settings

Allowing users to manually toggle the light/dark theme in the app's settings would be a good enhancement.

IIRC, the app will automatically pick the light/dark UI theme based on the system theme. However, this does not account for the case in which some users may want to pick the opposite light/dark theme in the app, compared to the system theme, since the light/dark theme isn't user accessible in the settings right now.

Text is cut off

The text defined in

<string name="i_got_a_notification_what_should_i_do">Ich habe eine Benachrichtigung bekommen, was soll ich machen?</string>
is cut off on my Huawei P Smart 2019 with Android 10 and the latest version of AirGuard (from Google Play Store) installed:

Trying to detect new Airtags from a stationary scanner

I'm trying to inform users of my open source smart home project when an actually new Airtag appears, but it's quite hard to do, since stationary Airtags rotate the mac every 15 minutes.

What I'd be interested in (thinking of implementing it in my project) is a way to detect when Airtags change their mac addresses, so that I can ignore the Airtags that the user was already alerted to.

They seem to change their mac address at regular interval (15 minutes), so if the Airtag count isn't too high it should be possible to do this. And if there is a way to extract other more stable values (such as battery level) it would become even easier?

I'd be curious if you think this approach is useful and possible. Perhaps it could be a feature of Airguard too?

P.S. How does Apple do this? I suspect they can only inform you if a devices is travelling with you because they can check the location of the Airtag and the phone and see if they move together for a while? That would imply Apple's protection app would also have a harder time informing people about malicious trackers if they are stationary too? After all, it migh just be your upstairs neighbour's Airtag.

Permission dialog issues

First of all, I just wanted to say thanks for developing this app and making it open source. It serves it's purpose well and looks great.

After using it for a while I've found a couple of issues with the dialog that appears when you deny or dismiss a permission prompt.

Issue 1 - Crash

Steps to Reproduce

  1. Navigate to the location permissions onboarding slide
  2. Tap outside the permissions prompt
  3. Tap "OK" on the dialog
  4. Notice the app crashes with the following stack trace:
2021-12-23 22:45:09.624 1439-1439/de.seemoo.at_tracking_detection.debug E/WindowManager: android.view.WindowLeaked: Activity de.seemoo.at_tracking_detection.ui.OnboardingActivity has leaked window DecorView@e09f6c8[OnboardingActivity] that was originally added here
        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:1107)
        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:1082)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:469)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:133)
        at android.app.Dialog.show(Dialog.java:506)
        at de.seemoo.at_tracking_detection.ui.OnboardingActivity.handleRequiredPermission(OnboardingActivity.kt:223)
        at de.seemoo.at_tracking_detection.ui.OnboardingActivity.onUserDisabledPermission(OnboardingActivity.kt:89)
        at com.github.appintro.AppIntroBase.handleDeniedPermission(AppIntroBase.kt:673)
        at com.github.appintro.AppIntroBase.onRequestPermissionsResult(AppIntroBase.kt:647)
        at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8825)
        at android.app.Activity.dispatchActivityResult(Activity.java:8655)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5841)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5887)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
        at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2425)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8582)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:563)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)

Issue 2 - Duplicate dialogs

Steps to Reproduce

  1. Fix issue 1 and follow the same steps
  2. Notice that two dialogs appear

Add ability to give a device a friendly label

Some devices move with me but are known. Examples may include a tag owned by myself or a known trusted associate. I would rather label those devices instead of just ignoring them, so I can remember why they are ignored.

Great software by the way, thanks for all your hard work.

iOS Support

The app is much better than what Apple provide for iOS.
Is it possible to create an iOS version or cross platform version of this app?

Download help

Hi there, This application is not available on google play and Releases has no content. Could you please provide the apk file to download and use?

Find my Geräte

Hallo,
was sind genau Find my Tracker außer Air Tags ?
Sind das Air Tags von Android Geräten zb Samsung etc . ?

What exactly are Find my Tracker other than Air Tags?
Are these Air Tags from Android devices, e.g. Samsung etc. ?

[Enhancement] Offer a way to remove device from Ignored Devices

I would like to suggest creating some method for the user to remove a device from the Ignored Devices list.

This is because I've personally accidentally put a detected device onto the Ignored Devices list by accident. Luckily, I was only testing the app out when this happened, so I could reset the app's storage and lost no important app data. However, this would not be a good choice for app users with an extensive and/or long device detection histories.

Give further hints for potential reasons on false alarms regarding traveling

Hi!

I recently got an AirTag warning on a 3 hour trip on a long distance train, I traveled almost 500km with.

For me that was great, as I had a real world example for the app working. Also, because I got no further warnings after the train ride, I am quite sure, that this was not a malicious tracking attack on me, but a fellow traveler sitting nearby probably had an active airtag for her or his own purposes.

As an alarm warning can be a little bit intimidating in the moment when I receive it, making the connection, that it was during a train journey together with strangers, took a few moments. Maybe a hint to this idea could be incorporated into the alarm message or the guidelines regarding "false alarms"?

Although we are after two years of pandemic only getting used to it, but I guess long distance travel on busses, trains and maybe planes would be a usual reason for triggering false alarms?

[Bug] Map background not showing

IMG_20220518_174033
The background here is supposed to show the location the tracker traveled. Without this I can't tell whether or not its a false alarm. This is in my normal profile without trackercontrol. Anyone else experience this?

Pixel 5a, Android 12 (Calyx)

More visually standard icon

Hi,
I love this app, but it's icon is quite striking, and not in a good way. I understand the want to not be too much like Apple's icon, but I'd definitely appreciate a more visually standard one for my homescreen. Thank you for making this app!

Unknown devices

Hello, the app finds devices with different mac addresses every 15 minutes on the map and in the manual scan, but in the same place. Possibly mac books. What devices could that be? If there are no trackers, can you exclude them from the search?

[Question] What does the 'last scan' entry mean?

I very appreciate your app, thanks for the possibility to get notified about possible tracking devices.
What I don't understand is the 'last scan' section on the status screen, what does that mean? My 'last scan' is often some hours ago, in worst cases some days.
I did exclude the app from battery saving and use a phone without google services (microG installed, but only partly activated).

Android 7.0 version?

Hi,

Where can I get an Android 7.0 version, the releases all appear to be for 8.0?

TIA.

[Bug] Automatic background scan is not working

Despite having the app excempted from battery optimization, the background scan is not working. Every time when opening it the "Last scan" field is from I have last opened the app.

I use LineageOS 18.1 (Android 11) and would be happy to provide any debugging information (adb logcat, whatnot) as needed

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.