Lion Cipher Lab

Reconstruct browsing and redirect chains from Firefox places.sqlite

Why it matters

When someone clicks a phishing link, the question every investigation asks is the same: what did they click, where did it send them, and did anything get downloaded? Firefox writes the answer down, one row per visit, with a code for how each page was reached and a pointer to the visit that led to it. Most quick-look queries never see it, because they read the per-URL summary table, which collapses visits, leaves downloads with a visit count of zero, and shows only the most recent time a page was seen. Worse, the most recent activity, the incident itself, often lives in a sidecar file…

What you'll learn

Steps in this lab

  1. When you reach for this - and what it cannot tell you
  2. The two tables that matter: places vs visits
  3. The visit_type codes, straight from Mozilla's source
  4. Build the fixture profile (and copy it two ways)
  5. Why the -wal file is part of the evidence
  6. Measure the open-mode trap before you trust any query
  7. Write the report script and compare the two copies
  8. Read the per-visit timeline like an examiner
  9. Walk the chain, then see what the per-URL view hides
  10. Optional: run the same report on a copy of your own history
  11. Honest limits - absence of a visit is not proof of no visit
  12. How a pro does it differently

Open the full interactive lab →