Skip to content

Read Chromium tab restore files and report their navigation entries - #1309

Merged
abrignoni merged 1 commit into
mainfrom
feat/chrome-session-tabs
Sep 4, 2026
Merged

Read Chromium tab restore files and report their navigation entries#1309
abrignoni merged 1 commit into
mainfrom
feat/chrome-session-tabs

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Adds a reader for the SNSS session files Chromium browsers write as Sessions/Tabs_, which nothing read before, and two artifacts over it.

  • Navigation Entries: one row per page a tab was holding, with the address, page title, visit time, HTTP status, referrer and original request URL, and the tab and index so a tab's back and forward list reads in order.
  • Tab State: the entry each tab was sitting on, with the timestamp Chromium's tab restore service stores when the tab closes.

The framing was derived from the files themselves and tiles to their exact byte length. The command ids and the navigation entry field order come from Chromium, in tab_restore_service_impl.cc and serialized_navigation_entry.cc. Every entry on the tested images consumed its record exactly, which is what shows the field order is right; a command id Chromium does not define is left as stored.

One pattern covers Chrome, Brave and Edge because they share the app_chrome layout, and a Browser column attributes each row to the package the file sits under. The reader has known-answer tests, including one for the four byte alignment that a length-only reader gets wrong. Measured on 23 Android corpora: 137 navigation entries and 58 tab records across 13 of them.

🤖 Generated with Claude Code

Adds a reader for the SNSS session files Chromium browsers write as
Sessions/Tabs_<number>, and two artifacts over it: the navigation entries
each tab was holding, with the address, page title, visit time and HTTP
status, and the entry each tab was sitting on with the timestamp the
browser stored when it closed.

The framing was derived from the files, which tile to their exact byte
length, and the command ids and the navigation entry field order come from
Chromium. Every entry on the tested images consumed its record exactly.
One path pattern covers Chrome, Brave and Edge because they share the
app_chrome layout, and a Browser column attributes each row to the package
it was found under. sample_data measured on 23 Android corpora.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@abrignoni
abrignoni merged commit d47c093 into main Sep 4, 2026
10 checks passed
@abrignoni
abrignoni deleted the feat/chrome-session-tabs branch September 4, 2026 04:46
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