Chapter 18 — Quiz
14 questions: 10 multiple choice, 2 true/false, 2 short answer. Answers and a scoring band are at the bottom. Commit to an answer before you peek — guessing teaches nothing.
Multiple choice
Q1. You are collecting a Chrome History database for examination. To avoid analyzing a stale database that omits the most recent activity, you must also copy:
- A) Only History
- B) History and Bookmarks
- C) History, History-wal, and History-shm, together
- D) The entire Cache folder
Q2. To convert a Chromium last_visit_time value to a UTC date, you:
- A) Divide by 1,000 and subtract 11,644,473,600
- B) Divide by 1,000,000, then subtract 11,644,473,600, and treat the result as Unix seconds
- C) Add 978,307,200
- D) Divide by 1,000,000 (it is already a 1970-based epoch)
Q3. In a Chromium visits row, the low byte of the transition field (transition & 0xFF) equals 1. What did the user do?
- A) Clicked a link
- B) Typed the URL into the address bar (TYPED)
- C) Loaded an automatic subframe such as an ad or embed
- D) Reloaded the page
Q4. A cookie for mail.google.com has is_persistent = 0 and a last_access_utc of this morning. What does this best support?
- A) The user visited google.com once, long ago
- B) The user had an active, logged-in webmail session at that time
- C) The account password is stored in the cookie in plaintext
- D) Nothing about login state can be inferred
Q5. Which Firefox database combines browsing history and bookmarks, and on which epoch?
- A) History.db, on Mac/Cocoa time
- B) places.sqlite, on PRTime (microseconds since 1970)
- C) WebCacheV01.dat, on FILETIME
- D) cookies.sqlite, on Unix seconds
Q6. Safari's History.db records visit_time on which epoch?
- A) Microseconds since 1601 (WebKit)
- B) Microseconds since 1970 (PRTime)
- C) Seconds since 2001-01-01 (Mac/Cocoa)
- D) 100-nanosecond ticks since 1601 (FILETIME)
Q7. A suspect insists they "only used Incognito." Which source is least likely to help reconstruct that session?
- A) The OS DNS resolver cache
- B) SRUM (per-application bytes sent and received)
- C) The persistent profile's History database
- D) A RAM capture or the pagefile
Q8. A Chromium cookie's encrypted_value begins with the ASCII tag v10. Where is the AES key that protects it?
- A) In the cookie file's own header
- B) In Local State (os_crypt.encrypted_key), itself DPAPI-protected to the Windows user
- C) In the SAM registry hive
- D) Hard-coded into chrome.exe
Q9. On a corporate machine you suspect a personal Dropbox was linked. Which file most directly reveals the linked account email and the local sync-folder path?
- A) filecache.dbx
- B) config.dbx
- C) info.json
- D) host.dbx
Q10. Which statement about recovering cleared browser history from a SQLite database is correct?
- A) A SQL DELETE immediately zeroes the row's bytes
- B) Cleared rows persist in freelist pages and page slack until a VACUUM or page reuse overwrites them
- C) Deleted rows can only ever be recovered from a full disk image, never from the database file
- D) WAL files never contain history rows
True / False
Q11. Private/Incognito browsing leaves no recoverable trace of the session anywhere on the system. (True / False)
Q12. In Firefox's moz_cookies table, expiry is stored in microseconds, exactly like creationTime and lastAccessed. (True / False)
Short answer
Q13. In one or two sentences, give the two reasons you copy the db/-wal/-shm trio together and open it read-only when examining a browser SQLite database.
Q14. Name the three timestamp epochs you meet across Chrome, Firefox, and Safari (one browser for each), and give the formula to convert a Chrome/WebKit value to Unix seconds.
---
Answer key
Q1 — C. Modern Chromium runs SQLite in WAL mode; the most recent visits often live only in History-wal (with the History-shm index). Copy all three or you analyze a stale database and lose the latest activity.
Q2 — B. WebKit time is microseconds since 1601-01-01 UTC: divide by 1,000,000 for seconds-since-1601, then subtract 11,644,473,600 to reach Unix seconds. (A uses the wrong divisor; C is the Mac/Cocoa offset; D is the Firefox/PRTime rule.)
Q3 — B. Core transition 1 is TYPED — the user typed the URL into the address bar, the signature of intent. Core 0 is LINK, 3 is AUTO_SUBFRAME, 8 is RELOAD.
Q4 — B. A non-persistent (session) cookie with a recent last_access_utc for a webmail domain is evidence of an active logged-in session, not merely a visit. The value is encrypted, so C is false.
Q5 — B. places.sqlite holds both moz_places/moz_historyvisits (history) and moz_bookmarks, with times in PRTime (microseconds since 1970).
Q6 — C. Safari uses Mac/Cocoa absolute time — seconds since 2001-01-01 UTC; add 978,307,200 to reach Unix seconds.
Q7 — C. Incognito's one job is to keep the session out of the persistent profile databases, so History is exactly the source it defeats. DNS cache, SRUM, and RAM/pagefile all still capture the session.
Q8 — B. Since Chrome 80 the v10/v11 value is AES-256-GCM; the key sits in Local State under os_crypt.encrypted_key, base64-encoded and DPAPI-protected to the Windows user. Reading the plaintext is a Chapter 29 (encrypted-device) exercise.
Q9 — C. Modern Dropbox encrypts the .dbx files with SQLCipher, but info.json remains readable and reveals the linked account email and the local Dropbox-folder path — enough to prove a personal Dropbox on a corporate machine.
Q10 — B. DELETE frees the cell into the freelist without erasing bytes; the old content survives in freelist pages and page slack until a VACUUM rewrites the file or continued use reuses the pages. WAL files can and do hold history rows (A, C, D are false).
Q11 — False. Private mode only skips the persistent profile. DNS cache, RAM and pagefile/hiberfil, SRUM, favicons in some builds, and network/proxy logs routinely reconstruct the session.
Q12 — False. creationTime and lastAccessed are microseconds since 1970; expiry is plain Unix seconds. Applying the wrong divisor misdates a cookie by a factor of a million.
Q13. Because recent activity often lives only in the WAL (so you copy -wal/-shm to avoid a stale view), and because a default connection can checkpoint the WAL into the main file — altering both files and their hashes — so you open read-only (and set PRAGMA query_only) to keep the evidence byte-identical to what you imaged.
Q14. WebKit (Chrome/Edge/Chromium), PRTime (Firefox), and Mac/Cocoa absolute (Safari). WebKit → Unix seconds: unix = webkit_microseconds / 1,000,000 − 11,644,473,600.
Scoring: 13–14 — courtroom-ready; you can defend each artifact and convert any epoch without a cheat sheet. 10–12 — solid; revisit the epoch field guide and the transition table. 7–9 — re-read "SQLite: the database under (almost) every browser" and "Private/Incognito browsing," then redo Groups A, D, and E in the exercises. Below 7 — re-read the chapter index and rebuild the anchor-case upload timeline before moving on.