Skip to content

Add RethinkDNS support for Android - #1291

Merged
abrignoni merged 2 commits into
mainfrom
feat/rethinkdns-android
Sep 1, 2026
Merged

Add RethinkDNS support for Android#1291
abrignoni merged 2 commits into
mainfrom
feat/rethinkdns-android

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Adds RethinkDNS (com.celzero.bravedns) support for Android. It runs as a local VPN, so while it is running it sees the whole device's name resolution and traffic. Three artifacts from databases/rethink_logs.db:

  • DNS Queries: every name each app asked to resolve, with the app and package that asked, the record type, the resolved addresses and their country, the resolver used, and whether the answer was blocked or served from cache.
  • Network Connections: every connection with the app and package that opened it, destination address and port, protocol decoded from the IANA numbers, country, bytes transferred, duration, and the DNS name that resolved to that address where the app could associate the two.
  • App Events: the VPN lifecycle, which is how an examiner distinguishes a gap in the two logs above from a period of no activity.

Both logs only cover periods when RethinkDNS was running, and a connection records the app that opened it rather than a person using that app at that moment; the notes say both. Timestamps are Unix milliseconds reported as UTC.

The DnsLogs responseTime column held the identical value to latency on all 79 tested rows, so only one is reported. The other store, databases/bravedns.db, holds only RethinkDNS's own inventory of installed packages with a per-app firewall setting that was at its default on 292 of 293 rows, so it records no configuration a person made and is not parsed. RethinkLog and IpInfo were present and empty.

Verified on a multi-container tree: the storage spellings collapse, a second Android user adds its own rows against known deltas (79 then 119 queries, 113 then 163 connections), and a decoy package adds none. sample_data follows with the next corpus capture.

abrignoni and others added 2 commits September 1, 2026 09:46
Three artifacts from databases/rethink_logs.db. RethinkDNS runs as a local VPN,
so while it is running it sees the whole device's name resolution and traffic:

- DNS Queries: every name each app asked to resolve, with the app and package
  that asked, the record type, the resolved addresses with their country, the
  resolver used and whether the answer was blocked or served from cache.
- Network Connections: every connection with the app and package that opened
  it, destination address and port, protocol decoded from the IANA numbers,
  country, bytes transferred, duration, and the DNS name that resolved to that
  address where the app could associate the two.
- App Events: the VPN lifecycle, which is how an examiner tells a gap in the
  two logs above from a period of no activity.

Timestamps are Unix milliseconds reported as UTC. The DnsLogs responseTime
column held the identical value to latency on all 79 tested rows, so only one
is reported. The other store, databases/bravedns.db, holds only RethinkDNS's
own inventory of installed packages with a per-app firewall setting that was at
its default on 292 of 293 rows, so it records no configuration a person made
and is not parsed.

Verified on a multi-container tree: the storage spellings collapse, a second
Android user adds its own rows against known deltas (79 then 119 queries, 113
then 163 connections), and a decoy package adds none.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Row counts from a real aleapp.py run against the emu_a15_oss_v6 corpus. The
zero-row values are checked absences: the tables are present and empty in that
image, confirmed against the source stores.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@abrignoni
abrignoni merged commit c7de2cd into main Sep 1, 2026
10 checks passed
@abrignoni
abrignoni deleted the feat/rethinkdns-android branch September 1, 2026 14:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant