BigBrainParking/docs/OFFICIAL_APP_PRIVACY.md
Erik 2434879804 docs: RE report + correct the privacy writeup from live analysis
Adds OFFICIAL_APP_REVERSE_ENGINEERING.md — a technical teardown (methodology,
auth model, device-ID, GPS, Instabug) with mermaid diagrams and the mitmproxy
capture timeline.

Corrects OFFICIAL_APP_PRIVACY.md, which was wrong on two counts:
- IMEI: the app reads no IMEI; it sends the Android SSAID to /api/Device in a
  field misleadingly named IMEINumber.
- Trackers: Segment/Amplitude/Firebase-Analytics/Sentry/ad-ID are all ABSENT;
  the real telemetry SDK is Instabug (session replay, screenshots, network logs).
Also folds in the confirmed GPS auto-send (with the GrapheneOS caveat).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 19:11:26 +00:00

7.4 KiB

What the official ParkSmarter app does with your privacy

A plain-language look at the official ParkSmarter app for Android (com.ipsgroupinc.parksmarter, version 4.4.0), and how BigBrainParking — this open-source alternative — is different.

This was written by taking the official app apart: reading its program code, and watching its real network traffic through a proxy. Where we're sure, we say so; where something is situational, we say that too. (For the technical teardown with diagrams and evidence, see OFFICIAL_APP_REVERSE_ENGINEERING.md.)


The short version

  • Your exact location is sent to ParkSmarter's servers when you use the map to find meters — and the app is built to do this automatically when the map opens, not only when you ask it to "find parking near me."
  • The app carries one heavy tracking tool — Instabug — that can record your screen, take screenshots, and log the app's network activity, reporting to an outside company.
  • It sends a permanent per-device ID to ParkSmarter. It is not your phone's IMEI (despite the app calling the field IMEINumber) — it's Android's device ID. Still a fixed code that identifies your specific phone to ParkSmarter.
  • Good news: it cannot track your location while the app is closed.
  • BigBrainParking removes the tracking entirely and only sends your location when you deliberately tap "My location" and search.

First, why does this matter?

"Location data" is a record of where you physically are. On its own, one location isn't a big deal. But a stream of them — collected quietly and often — reveals where you live, work, worship, and who you visit. Tie that to a permanent ID for your phone and it becomes a profile of you that can be sold, leaked, or subpoenaed. So the questions that matter are: who collects it, how often, is it tied to your identity, and does it leave in ways you didn't ask for?


When does the official app send your location to ParkSmarter?

To ParkSmarter's own servers, your GPS is used for one thing: finding nearby meters. We confirmed this by watching the traffic: the coordinates go out as a GET …/api/Meter?Lat=…&Long=… request, and your location is not attached to logging in, starting a session, or paying. That part is reasonable.

The catch is when. The app is built to grab your live GPS and ask "what meters are near me?" automatically when the map opens — no tap required — as long as you're logged in and have granted location permission. So simply browsing the map quietly sends your precise location to ParkSmarter.

One nuance we saw firsthand: on a de-Googled phone (GrapheneOS), the map itself doesn't draw (it needs Google services), which can suppress that automatic send. On a normal Google phone the auto-send happens as designed.

BigBrainParking does the opposite on purpose: it opens on your last parking lot (from your own history, not your GPS), and it only sends your location when you explicitly tap "My location" and then search.


The bigger privacy concerns

1. A heavy tracking tool: Instabug

The app bundles Instabug, a monitoring/bug-reporting toolkit — and it's the serious one. It's capable of:

  • recording your session / replaying what you did,
  • taking screenshots of the app,
  • logging the app's network requests,
  • tracking your taps and the steps you take through the app.

All of this reports to an outside company's servers (api.instabug.com). We saw it phone home the moment the app started.

What it is not: we specifically checked and the app does not contain Segment, Amplitude, Sentry, Google Analytics/Firebase-Analytics, an advertising ID, or Play Store install-tracking. (An earlier version of this note listed those — that was wrong; Instabug is the actual story.) Google is present only for push notifications.

BigBrainParking has none of this. No Instabug, no analytics, no ad-ID, no Google services at all.

2. A permanent device ID sent to ParkSmarter

When you log in, the app sends ParkSmarter a fixed identifier for your phone, inside a request to …/api/Device. The field is named IMEINumber, which is misleading — it is not your IMEI. Modern Android forbids apps from reading the IMEI at all, and this app never tries. The value it actually sends is your phone's Android device ID (a code assigned to your device). Unlike a password, it doesn't change, so it can be used to recognize your specific phone over time. It goes only to ParkSmarter, not to a third party.

BigBrainParking never reads or sends any device ID.

3. Other capabilities worth knowing about

  • Microphone & camera permissions — camera is for scanning kiosk QR codes; microphone is unusual for a parking app (may be an unused library leftover).
  • Wi-Fi & phone-state access — used by a networking library to report your connection type and carrier name; it does not read your IMEI.
  • Bluetooth — for talking to parking meters directly.
  • Google push messaging (FCM) — notifications route through Google.

To be fair — what it does not do

  • No background location tracking. The app has the everyday location permission but not the "all the time / background" one, so it can't follow you when it's closed.
  • No IMEI, no advertising ID, no Segment/Amplitude/Sentry.
  • Your location going to ParkSmarter is genuinely limited to the "find nearby meters" feature — it isn't stapled onto payments or your account details.

Side-by-side

Official ParkSmarter app BigBrainParking
Sends GPS to ParkSmarter Automatically when the map opens Only when you tap "My location" and search
Opens the map on… Your current GPS location Your last parking lot (not your GPS)
Third-party tracking SDKs Instabug (session replay, screenshots, network logs) None
Advertising ID / cross-app tracking No (none present) Never
Sends a permanent device ID Yes — Android device ID, sent as IMEINumber Never
Reads your hardware IMEI No (not possible on modern Android) Never
Google services required Yes (push notifications) None (runs on GrapheneOS)
Background location No No
Source code you can inspect No (closed) Yes (this repo)

How we checked (for the curious)

  • Permissions come from the app's own AndroidManifest. Confirmed present: precise + approximate location, read-phone-state, Wi-Fi, microphone, camera, Bluetooth, Google push. Confirmed absent: background location.
  • The device-ID and location behavior were read from the app's decompiled code (it's a React Native / Expo app, so the logic is in a JavaScript bundle) and confirmed on the wire with a live proxy capture: the …/api/Device request carrying the Android ID as IMEINumber, and the …/api/Meter?Lat=… request carrying GPS.
  • The SDK list (Instabug present; Segment/Amplitude/Sentry/Firebase-Analytics/ ad-ID absent) comes from searching the app's bundled code and its network endpoints.

Not affiliated with or endorsed by IPS Group / ParkSmarter. This is an independent, good-faith analysis of a publicly distributed app for the purpose of building a privacy-respecting alternative. Findings reflect version 4.4.0 and could change in later versions.