9 月 21 日,周启明把一块 240GB 的旧 SSD 递给我
他说这块盘在他抽屉里躺了三年,机主是他表妹,换新机器后一直没处理。我接手的第一件事不是插上去,而是先拍照记下序列号,再套上防静电袋。
取证准备关于 www.2b44.cc网站浏览器历史记录恢复 的一次完整取证式笔记:SQLite 表结构、WebKit 时间戳换算,以及三条我实际跑通了的路径。
他说这块盘在他抽屉里躺了三年,机主是他表妹,换新机器后一直没处理。我接手的第一件事不是插上去,而是先拍照记下序列号,再套上防静电袋。
取证准备Windows 下是 用户目录\AppData\Local\Google\Chrome\User Data\Default\History,macOS 下是 ~/Library/Application Support/Google/Chrome/Default/History。文件名就叫 History,没有后缀,双击打不开是正常的。
我做的第一件事是把它复制到桌面再改名成 history.db,因为浏览器运行时会对原文件加锁。这一步如果跳过,后面所有查询都会报 database is locked。
打开链接跳转浏览器用 DB Browser for SQLite 打开后,urls 表一共 2,417 行,visits 表 3,806 行。一个 URL 可能被访问多次,所以两张表的行数本来就对不上,这不是数据损坏。
数据核对Chrome 的 visit_time 存的是从 1601 年 1 月 1 日开始的微秒数。我第一次算错,把结果算成了 4026 年,发给周启明时他还以为我在开玩笑。
datetime(visit_time/1000000 - 11644473600, 'unixepoch', 'localtime')她是我在读书会上认识的,做口述史整理。她说 Safari 的 History.db 结构完全不同,表名是 history_items 和 history_visits,时间基准是 2001 年,差了一个量级,别直接套用 Chrome 的公式。
跨浏览器第一条最干净,直接读 History 库;第二条是 Chrome 自带的「导出浏览数据」,只能导出书签和部分历史,粒度很粗;第三条是翻 Cache 和 Favicons,能看到域名但看不到完整 URL,只适合做交叉验证。
我把三条路径都跑了一遍,结论是:只要原始文件还在,第一条的成功率是 100%,但前提是你得先把文件复制出来。
49图片浏览器打开249 023这是整件事里最让我意外的一段。机主在 2023 年 4 月手动清空过一次历史,但因为清空后硬盘没有大量写入,freelist 页面里仍残留着旧记录。用 sqlite3 的 recover 模式扫了一遍,捞回来 619 条。
意外收获把这 11 条单独拉出来看,访问时间集中在 12 月 7 日到 12 月 19 日之间,每次停留时长都不到 40 秒,像是反复确认某个页面能不能打开。
关键词归档字段是 url、title、visit_count、last_visit_time,排序按时间倒序。周启明第二天回了一句「比我预想的干净」,这大概是我这周收到的最实在的评价。
交付作者在书里写,「删除从来不是瞬时完成的」,这句话我在这次操作里反复想起。书是 2019 年的版本,页码 118,讲文件系统残留的那一节。
找回原来49图库资料免费所有操作都在离线环境完成,导出文件放在一块独立的 U 盘里,用完格式化。这不是洁癖,是基本规矩。
边界我叫江晚,做数字取证相关的整理工作已经第六年,日常大部分时间花在旧设备的数据打捞和记录上。这个站是我个人的笔记本,不是工具站,也不提供任何下载。
写这一篇,是因为过去半年里至少有九个人问我同一个问题:浏览器历史记录到底还能不能恢复。答案是有条件地能,但条件比大多数人想的苛刻得多。
我把 www.2b44.cc网站浏览器历史记录恢复 这个关键词下的实际操作过程完整记了下来,包括算错时间戳那一次。记录错误比记录正确更有用,至少对我自己是这样的。
如果这些笔记能让你少走一次弯路,那它就算写完了。我依然认为,恢复数据的前提是先尊重数据,这一点我不会让步。
删除只是把指针从目录里摘掉,数据本身还躺在扇区里,等着被下一次写入覆盖。——《数字取证基础》(2019 年版)第 118 页